Private
Public Access
0
0

docs(shaders): fix 3 [nerv] config refs (fx_enabled, scanline_alpha)

This commit is contained in:
2026-06-10 23:18:38 -04:00
parent 7aa484649f
commit 8d0eb917d9
+5 -5
View File
@@ -42,9 +42,9 @@ The [NERV Technical Console](https://en.wikipedia.org/wiki/Nerv) theme (`src/the
- **Black Void Palette:** Near-black backgrounds with sharp, high-contrast accents.
- **Zero-Rounding Geometry:** No rounded corners on panels, buttons, or frames. Sharp rectangles.
- **CRT Scanlines:** A repeating horizontal line overlay applied via the `custom_background` callback. The scanline intensity is configurable via `config.toml``[nerv].scanline_alpha`.
- **Status Flickering:** The active tier indicator and other "operational status" elements flicker at a low frequency (configurable rate) to simulate a tactical display.
- **Alert Animations:** When MMA state transitions to "blocked" or "error", a red border pulse animation runs for ~1.5 seconds.
- **CRT Scanlines:** A repeating horizontal line overlay drawn into the foreground draw list by `CRTFilter.render(width, height)` in `src/theme_nerv_fx.py:8-65`. Alphas are hard-coded (0.08 major / 0.04 minor) — not config-driven.
- **Status Flickering:** `StatusFlicker.get_alpha()` in `src/theme_nerv_fx.py:67-73` returns a hard-coded 3.18 Hz sine (angular frequency 20.0 rad/s). Not wired into a production caller as of 2026-06-10.
- **Alert Animations:** `AlertPulsing.update(status)` at `src/theme_nerv_fx.py:79-83` activates the red border pulse for any `status.lower().startswith("error")`; the pulse persists for the duration of that status (no auto-decay).
### Implementation Files
@@ -54,10 +54,10 @@ The [NERV Technical Console](https://en.wikipedia.org/wiki/Nerv) theme (`src/the
### Activation
The NERV theme is selected via the GUI's theme picker (User Menu → Theme → NERV). When activated, `theme_nerv.py` swaps the active color set, geometry style, and font. The FX layer is enabled/disabled via the `[nerv].fx_enabled` config flag.
The NERV theme is selected via the GUI's theme picker (NERV is one of the built-in syntax palettes in the multi-theme TOML system). When activated, `theme_nerv.apply_nerv()` swaps the active color set and zero-rounding geometry. The FX layer's `CRTFilter.enabled` is toggled per-frame by the caller of `theme_2.render_post_fx(crt_enabled=...)` — there is no `[nerv].fx_enabled` config key.
### Performance Considerations
CRT scanlines use the FBO pipeline and run at full window resolution. On a 1920×1080 display, the scanline pass adds ~1-2ms per frame. For lower-end GPUs, reduce `[nerv].scanline_alpha` (cheaper blending) or disable FX entirely (`[nerv].fx_enabled = false`).
CRT scanlines run at full window resolution via `CRTFilter.render()`'s draw-list calls (no FBO/shader pass in the current implementation). On a 1920×1080 display, the per-frame cost is on the order of 1-2ms. For lower-end GPUs, the only knob is `CRTFilter.enabled` (set by the caller of `theme_2.render_post_fx(crt_enabled=...)`); the scanline alpha and noise density are hard-coded in `src/theme_nerv_fx.py`.
See [guide_nerv_theme.md](guide_nerv_theme.md) (placeholder; written in Task 10) for the full theme API, configuration keys, and customization options.