RWByteAddressBuffer non_uniform_global : register(u0); RWByteAddressBuffer output : register(u1); static bool continue_execution = true; void foo() { if ((asint(non_uniform_global.Load(0u)) < int(0))) { continue_execution = false; } } void bar() { float v = ddx(1.0f); if (continue_execution) { output.Store(0u, asuint(v)); } } void main() { foo(); bar(); if (!(continue_execution)) { discard; } }