[nzsl_version("1.1")] module; import VertOut, VertexShader from Engine.FullscreenVertex; option HasTexture: bool; //< a compilation constant set by the application [layout(std140)] struct Parameters { colorMultiplier: vec4[f32] } external { [binding(0)] params: uniform[Parameters], [cond(HasTexture), binding(1)] texture: sampler2D[f32] } struct FragOut { [location(0)] color: vec4[f32] } [entry(frag)] fn main(input: VertOut) -> FragOut { let output: FragOut; output.color = params.colorMultiplier; const if (HasTexture) output.color.rgb *= texture.Sample(input.uv).rgb; return output; }