| void set_float3(inout float3 vec, int idx, float val) { |
| vec = (idx.xxx == int3(0, 1, 2)) ? val.xxx : vec; |
| } |
| |
| float3 Bad(uint index, float3 rd) { |
| float3 normal = float3((0.0f).xxx); |
| set_float3(normal, index, -(sign(rd[index]))); |
| return normalize(normal); |
| } |
| |
| RWByteAddressBuffer io : register(u0, space0); |
| |
| struct tint_symbol_1 { |
| uint idx : SV_GroupIndex; |
| }; |
| |
| [numthreads(1, 1, 1)] |
| void main(tint_symbol_1 tint_symbol) { |
| const uint idx = tint_symbol.idx; |
| io.Store3(0u, asuint(Bad(io.Load(12u), asfloat(io.Load3(0u))))); |
| return; |
| } |