diff --git a/data/shaders/hlsl/raytracingcallable/callable1.rcall b/data/shaders/hlsl/raytracingcallable/callable1.rcall
index 40fd7c710607f683435821d2eb26c8d468da2e74..5a40044d5fb060ad0a551d3f1b0133654ee87a77 100644
--- a/data/shaders/hlsl/raytracingcallable/callable1.rcall
+++ b/data/shaders/hlsl/raytracingcallable/callable1.rcall
@@ -2,13 +2,14 @@
 
 struct CallData
 {
-    vec3 outColor;
+    float3 outColor;
 };
 
 [shader("callable")]
 void main(inout CallData data)
 {
     // Generate a checker board pattern
-	float2 pos = float2(DispatchRaysIndex() / 8);
-	data.outColor = float3(mod(pos.x + mod(pos.y, 2.0), 2.0));
+	float2 pos = float2(DispatchRaysIndex().x / 8, DispatchRaysIndex().y / 8);
+	float col = (pos.x + (pos.y % 2.0)) % 2.0;
+	data.outColor = float3(col, col, col);
 }
\ No newline at end of file
diff --git a/data/shaders/hlsl/raytracingcallable/callable1.rcall.spv b/data/shaders/hlsl/raytracingcallable/callable1.rcall.spv
new file mode 100644
index 0000000000000000000000000000000000000000..79fe2d1927b655cecf246f6c926b339e297ac1ac
Binary files /dev/null and b/data/shaders/hlsl/raytracingcallable/callable1.rcall.spv differ
diff --git a/data/shaders/hlsl/raytracingcallable/callable2.rcall b/data/shaders/hlsl/raytracingcallable/callable2.rcall
index 498dfe051534a937306d115e1e6677d36677473b..867893250850cef3fbdcda405e72ea5a77351e43 100644
--- a/data/shaders/hlsl/raytracingcallable/callable2.rcall
+++ b/data/shaders/hlsl/raytracingcallable/callable2.rcall
@@ -2,7 +2,7 @@
 
 struct CallData
 {
-    vec3 outColor;
+    float3 outColor;
 };
 
 [shader("callable")]
diff --git a/data/shaders/hlsl/raytracingcallable/callable2.rcall.spv b/data/shaders/hlsl/raytracingcallable/callable2.rcall.spv
new file mode 100644
index 0000000000000000000000000000000000000000..fb4c4f39b2f69e26b837d00533a9e2bffe7bdddc
Binary files /dev/null and b/data/shaders/hlsl/raytracingcallable/callable2.rcall.spv differ
diff --git a/data/shaders/hlsl/raytracingcallable/callable3.rcall b/data/shaders/hlsl/raytracingcallable/callable3.rcall
index 18c97cac91c7ba7ecf43ed0582b8d9194825f9c7..3fe4fd851333293eaf541308bb514a29b9a4de4b 100644
--- a/data/shaders/hlsl/raytracingcallable/callable3.rcall
+++ b/data/shaders/hlsl/raytracingcallable/callable3.rcall
@@ -2,13 +2,14 @@
 
 struct CallData
 {
-    vec3 outColor;
+    float3 outColor;
 };
 
 [shader("callable")]
 void main(inout CallData data)
 {
     // Generate a checker board pattern
-	float2 pos = float2(DispatchRaysIndex() / 8);
-	data.outColor = float3(mod(pos.y, 2.0));
+	float2 pos = float2(DispatchRaysIndex().x / 8, DispatchRaysIndex().y / 8);
+	float col = pos.y % 2.0;
+	data.outColor = float3(col, col, col);
 }
\ No newline at end of file
diff --git a/data/shaders/hlsl/raytracingcallable/callable3.rcall.spv b/data/shaders/hlsl/raytracingcallable/callable3.rcall.spv
new file mode 100644
index 0000000000000000000000000000000000000000..417942748a5bc9db76c384584145321f2a5497c2
Binary files /dev/null and b/data/shaders/hlsl/raytracingcallable/callable3.rcall.spv differ