Fase 8c: postpro (bloom + flicker + background) en SDL_gpu
Renderiza la escena de líneas a una textura offscreen y aplica un pase
final de postpro que compone la imagen al swapchain. El shader del
postpro hace tres cosas:
- Bloom: kernel gaussiano 5×5 con high-pass por luminancia. Configurable
vía intensity, threshold y radius_px.
- Flicker: multiplicador global de brillo modulado por sin(time*freq).
Sustituye al antiguo ColorOscillator CPU; eliminados oscillator.{hpp,cpp}
y Defaults::Color. SDLManager::updateColors queda como no-op para no
tocar las escenas que lo invocaban.
- Background pulse: color de fondo aditivo entre color_min y color_max,
pulsando en el tiempo.
Parámetros expuestos en data/config/postfx.yaml y cargados con fkYAML.
Si el archivo falta o falla, se usan defaults built-in. UV.y invertida
en el vertex shader del postpro para compensar la convención de
muestreo de SDL_gpu/Vulkan (el line shader sigue con su ndc.y flip).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# postfx.yaml - Parámetros del shader de postprocesado
|
||||
#
|
||||
# Este archivo configura el pase final del renderer (bloom + flicker +
|
||||
# background pulse). Se carga al iniciar el juego desde resources.pack.
|
||||
# Si falta o tiene errores, se usan los valores por defecto de
|
||||
# Defaults::PostFx (defaults.hpp).
|
||||
#
|
||||
# Tip de tuning:
|
||||
# - Para más "neón vector", sube bloom.intensity y bloom.radius_px.
|
||||
# - Para más "CRT viejo", sube flicker.amplitude (riesgo de mareo si >0.3).
|
||||
# - Background es muy sutil; pasa los componentes G a 0.15-0.20 para
|
||||
# un fondo verde-tenue más marcado.
|
||||
|
||||
# Bloom / glow: desenfoque gaussiano de las regiones brillantes.
|
||||
bloom:
|
||||
enabled: true
|
||||
intensity: 0.6 # 0..2 — cuanto del bloom se suma a la imagen
|
||||
threshold: 0.30 # 0..1 — luminancia mínima que aporta al bloom
|
||||
radius_px: 2.0 # radio del kernel en píxeles lógicos (1..8 razonable)
|
||||
|
||||
# Flicker: modulación global de brillo (efecto fósforo CRT).
|
||||
# Sustituye a la antigua oscilación CPU del ColorOscillator.
|
||||
flicker:
|
||||
enabled: true
|
||||
amplitude: 0.10 # 0..1 — profundidad del flicker
|
||||
frequency_hz: 6.0 # Hz — velocidad de la pulsación
|
||||
|
||||
# Background pulse: color de fondo oscilante (suma aditiva).
|
||||
# RGB en [0..255]; el shader normaliza a [0..1].
|
||||
background:
|
||||
enabled: true
|
||||
color_min: [0, 5, 0] # negro casi puro
|
||||
color_max: [0, 15, 0] # verde muy tenue
|
||||
pulse_frequency_hz: 6.0 # Hz — sincronizado con flicker por defecto
|
||||
Reference in New Issue
Block a user