CCCPaste

NZSL 1.1 example

[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;
}