From 3547424b8c5f3884f84d16fb3f08b47965d62428 Mon Sep 17 00:00:00 2001 From: skal Date: Tue, 10 Mar 2026 20:42:32 +0100 Subject: ntsc: factor common code into snippet; add RGB and YIQ input variants - Extract shared NTSC logic into render/ntsc_common.wgsl snippet - sample_ntsc_signal() hook decouples input format from processing - ntsc_rgb.wgsl: RGB input (converts via rgba_to_luma_chroma_phase) - ntsc_yiq.wgsl: YIQ passthrough for RotatingCube output - Add NtscYiq WgslEffect thin wrapper; register both in tests handoff(Claude): NTSC refactor complete; NtscYiq ready for timeline use with RotatingCube. Co-Authored-By: Claude Sonnet 4.6 --- src/effects/shaders.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/effects/shaders.cc') diff --git a/src/effects/shaders.cc b/src/effects/shaders.cc index 44dfa0b..8a81bb0 100644 --- a/src/effects/shaders.cc +++ b/src/effects/shaders.cc @@ -55,6 +55,8 @@ void InitShaderComposer() { AssetId::ASSET_SHADER_DEBUG_DEBUG_PRINT); register_if_exists("render/scratch_lines", AssetId::ASSET_SHADER_RENDER_SCRATCH_LINES); + register_if_exists("render/ntsc_common", + AssetId::ASSET_SHADER_RENDER_NTSC_COMMON); register_if_exists("render/fullscreen_vs", AssetId::ASSET_SHADER_RENDER_FULLSCREEN_VS); register_if_exists("render/fullscreen_uv_vs", @@ -103,7 +105,8 @@ const char* flash_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_FLASH); const char* scene1_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_SCENE1); const char* scene2_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_SCENE2); const char* scratch_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_SCRATCH); -const char* ntsc_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_NTSC); +const char* ntsc_rgb_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_NTSC_RGB); +const char* ntsc_yiq_shader_wgsl = SafeGetAsset(AssetId::ASSET_SHADER_NTSC_YIQ); // Compute shaders const char* gen_noise_compute_wgsl = -- cgit v1.2.3