#include #include #include #include #include #include #include TEST_CASE("branching", "[Shader]") { std::string_view nzslSource = R"( struct inputStruct { value: f32 } external { [set(0), binding(0)] data: uniform } [entry(frag)] fn main() { let value: f32; if (data.value > 0.0) value = 1.0; else value = 0.0; } )"; Nz::ShaderAst::StatementPtr shader = Nz::ShaderLang::Parse(nzslSource); ExpectGLSL(*shader, R"( void main() { float value; if (data.value > (0.000000)) { value = 1.000000; } else { value = 0.000000; } } )"); ExpectNZSL(*shader, R"( [entry(frag)] fn main() { let value: f32; if (data.value > (0.000000)) { value = 1.000000; } else { value = 0.000000; } } )"); ExpectSpirV(*shader, R"( OpFunction OpLabel OpVariable OpAccessChain OpLoad OpFOrdGreaterThanEqual OpSelectionMerge OpBranchConditional OpLabel OpStore OpBranch OpLabel OpStore OpBranch OpLabel OpReturn OpFunctionEnd)"); }