// Example: Combined post-process using inline functions // Demonstrates how to chain multiple simple effects without separate classes #include "sequence_uniforms" #include "postprocess_inline" @group(0) @binding(0) var input_sampler: sampler; @group(0) @binding(1) var input_texture: texture_2d; @group(0) @binding(2) var uniforms: UniformsSequenceParams; struct VertexOutput { @builtin(position) position: vec4, @location(0) uv: vec2, }; @vertex fn vs_main(@builtin(vertex_index) vid: u32) -> VertexOutput { var out: VertexOutput; let x = f32((vid & 1u) << 1u); let y = f32((vid & 2u)); out.position = vec4(x * 2.0 - 1.0, 1.0 - y * 2.0, 0.0, 1.0); out.uv = vec2(x, y); return out; } @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4 { // Sample base color var color = textureSample(input_texture, input_sampler, in.uv); // Apply effects in sequence (customize as needed) // color = apply_solarize(color, 0.4, 0.4, uniforms.time); // color = apply_theme(color, vec3(1.0, 0.8, 0.6), 0.3); color = apply_vignette(color, in.uv, 0.6, 0.1, uniforms.audio_intensity); // color = apply_flash(color, uniforms.beat_phase * 0.2); return color; }