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