summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-cross/shaders/comp/mod.comp26
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);
+}
+