// NTSC post-process effect (RGB input): fisheye distortion, scanlines, color bleeding. // Input texture is in RGB color space; converted to YIQ for NTSC processing. #include "sequence_uniforms" #include "render/fullscreen_uv_vs" #include "math/noise" #include "math/color" #include "math/color_c64" #include "debug/debug_print" @group(0) @binding(0) var input_sampler: sampler; @group(0) @binding(1) var input_texture: texture_2d; @group(0) @binding(2) var uniforms: UniformsSequenceParams; // RGB input: sample texture and convert to luma/chroma/phase fn sample_ntsc_signal(uv: vec2f) -> vec4f { let rgba = textureSample(input_texture, input_sampler, uv); return rgba_to_luma_chroma_phase(rgba, uv.y, YSIZE); } #include "render/ntsc_common" @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4f { return render_ntsc(in.st); }