diff options
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp')
-rw-r--r-- | 3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp b/3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp new file mode 100644 index 00000000000..1631456e305 --- /dev/null +++ b/3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp @@ -0,0 +1,26 @@ +#version 310 es +layout(local_size_x = 1) in; + +layout(std430, binding = 0) readonly buffer SSBO +{ + vec4 in_data[]; +}; + +layout(std430, binding = 1) writeonly buffer SSBO2 +{ + vec4 out_data[]; +}; + +void main() +{ + uint ident = gl_GlobalInvocationID.x; + vec4 v = mod(in_data[ident], out_data[ident]); + out_data[ident] = v; + + uvec4 vu = floatBitsToUint(in_data[ident]) % floatBitsToUint(out_data[ident]); + out_data[ident] = uintBitsToFloat(vu); + + ivec4 vi = floatBitsToInt(in_data[ident]) % floatBitsToInt(out_data[ident]); + out_data[ident] = intBitsToFloat(vi); +} + |