Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2020-05-20 14:14:23 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-05-20 15:11:28 +0300
commit271ad33380cb8d2a146ed3f3ba2082b265bfabd9 (patch)
treed3f676b7fb35c0051d9f37149b2d65a29f451821 /shaders
parent3c43f055df0d7b6948af64c825bf93beb8ab6418 (diff)
GLSL: Add some more focused RT test shaders.
Diffstat (limited to 'shaders')
-rw-r--r--shaders/vulkan/rchit/hit_kind.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/hit_t.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/incoming_ray_flags.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/instance_custom_id.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/instance_id.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/object_ray_direction.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/object_ray_origin.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/object_to_world.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/payloads.nocompat.vk.rchit19
-rw-r--r--shaders/vulkan/rchit/primitive_id.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/ray_tmax.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/ray_tmin.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/world_ray_direction.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/world_ray_origin.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rchit/world_to_object.nocompat.vk.rchit9
-rw-r--r--shaders/vulkan/rgen/launch_id.nocompat.vk.rgen9
-rw-r--r--shaders/vulkan/rgen/launch_size.nocompat.vk.rgen9
-rw-r--r--shaders/vulkan/rgen/payloads.nocompat.vk.rgen51
18 files changed, 214 insertions, 0 deletions
diff --git a/shaders/vulkan/rchit/hit_kind.nocompat.vk.rchit b/shaders/vulkan/rchit/hit_kind.nocompat.vk.rchit
new file mode 100644
index 00000000..39a088f4
--- /dev/null
+++ b/shaders/vulkan/rchit/hit_kind.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV uint payload;
+
+void main()
+{
+ payload = gl_HitKindNV;
+}
diff --git a/shaders/vulkan/rchit/hit_t.nocompat.vk.rchit b/shaders/vulkan/rchit/hit_t.nocompat.vk.rchit
new file mode 100644
index 00000000..16d6f06e
--- /dev/null
+++ b/shaders/vulkan/rchit/hit_t.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV float payload;
+
+void main()
+{
+ payload = gl_HitTNV;
+}
diff --git a/shaders/vulkan/rchit/incoming_ray_flags.nocompat.vk.rchit b/shaders/vulkan/rchit/incoming_ray_flags.nocompat.vk.rchit
new file mode 100644
index 00000000..a1726d0e
--- /dev/null
+++ b/shaders/vulkan/rchit/incoming_ray_flags.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV uint payload;
+
+void main()
+{
+ payload = gl_IncomingRayFlagsNV;
+}
diff --git a/shaders/vulkan/rchit/instance_custom_id.nocompat.vk.rchit b/shaders/vulkan/rchit/instance_custom_id.nocompat.vk.rchit
new file mode 100644
index 00000000..02ae3430
--- /dev/null
+++ b/shaders/vulkan/rchit/instance_custom_id.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV uint payload;
+
+void main()
+{
+ payload = gl_InstanceCustomIndexNV;
+}
diff --git a/shaders/vulkan/rchit/instance_id.nocompat.vk.rchit b/shaders/vulkan/rchit/instance_id.nocompat.vk.rchit
new file mode 100644
index 00000000..d6f99668
--- /dev/null
+++ b/shaders/vulkan/rchit/instance_id.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV uint payload;
+
+void main()
+{
+ payload = gl_InstanceID;
+}
diff --git a/shaders/vulkan/rchit/object_ray_direction.nocompat.vk.rchit b/shaders/vulkan/rchit/object_ray_direction.nocompat.vk.rchit
new file mode 100644
index 00000000..257175b5
--- /dev/null
+++ b/shaders/vulkan/rchit/object_ray_direction.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_ObjectRayDirectionNV;
+}
diff --git a/shaders/vulkan/rchit/object_ray_origin.nocompat.vk.rchit b/shaders/vulkan/rchit/object_ray_origin.nocompat.vk.rchit
new file mode 100644
index 00000000..8b71e7d9
--- /dev/null
+++ b/shaders/vulkan/rchit/object_ray_origin.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_ObjectRayOriginNV;
+}
diff --git a/shaders/vulkan/rchit/object_to_world.nocompat.vk.rchit b/shaders/vulkan/rchit/object_to_world.nocompat.vk.rchit
new file mode 100644
index 00000000..53b1406f
--- /dev/null
+++ b/shaders/vulkan/rchit/object_to_world.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_ObjectToWorldNV * vec4(payload, 1.0);
+}
diff --git a/shaders/vulkan/rchit/payloads.nocompat.vk.rchit b/shaders/vulkan/rchit/payloads.nocompat.vk.rchit
new file mode 100644
index 00000000..61a86663
--- /dev/null
+++ b/shaders/vulkan/rchit/payloads.nocompat.vk.rchit
@@ -0,0 +1,19 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+struct Payload
+{
+ vec4 a;
+};
+
+layout(location = 0) rayPayloadInNV Payload payload;
+
+void write_incoming_payload_in_function()
+{
+ payload.a = vec4(10.0);
+}
+
+void main()
+{
+ write_incoming_payload_in_function();
+}
diff --git a/shaders/vulkan/rchit/primitive_id.nocompat.vk.rchit b/shaders/vulkan/rchit/primitive_id.nocompat.vk.rchit
new file mode 100644
index 00000000..fdfa1ffa
--- /dev/null
+++ b/shaders/vulkan/rchit/primitive_id.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV uint payload;
+
+void main()
+{
+ payload = gl_PrimitiveID;
+}
diff --git a/shaders/vulkan/rchit/ray_tmax.nocompat.vk.rchit b/shaders/vulkan/rchit/ray_tmax.nocompat.vk.rchit
new file mode 100644
index 00000000..c0e1387b
--- /dev/null
+++ b/shaders/vulkan/rchit/ray_tmax.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV float payload;
+
+void main()
+{
+ payload = gl_RayTmaxNV;
+}
diff --git a/shaders/vulkan/rchit/ray_tmin.nocompat.vk.rchit b/shaders/vulkan/rchit/ray_tmin.nocompat.vk.rchit
new file mode 100644
index 00000000..896f4ffb
--- /dev/null
+++ b/shaders/vulkan/rchit/ray_tmin.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV float payload;
+
+void main()
+{
+ payload = gl_RayTminNV;
+}
diff --git a/shaders/vulkan/rchit/world_ray_direction.nocompat.vk.rchit b/shaders/vulkan/rchit/world_ray_direction.nocompat.vk.rchit
new file mode 100644
index 00000000..43d14f28
--- /dev/null
+++ b/shaders/vulkan/rchit/world_ray_direction.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_WorldRayDirectionNV;
+}
diff --git a/shaders/vulkan/rchit/world_ray_origin.nocompat.vk.rchit b/shaders/vulkan/rchit/world_ray_origin.nocompat.vk.rchit
new file mode 100644
index 00000000..8b03e7de
--- /dev/null
+++ b/shaders/vulkan/rchit/world_ray_origin.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_WorldRayOriginNV;
+}
diff --git a/shaders/vulkan/rchit/world_to_object.nocompat.vk.rchit b/shaders/vulkan/rchit/world_to_object.nocompat.vk.rchit
new file mode 100644
index 00000000..dc67c4a9
--- /dev/null
+++ b/shaders/vulkan/rchit/world_to_object.nocompat.vk.rchit
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(location = 0) rayPayloadInNV vec3 payload;
+
+void main()
+{
+ payload = gl_WorldToObjectNV * vec4(payload, 1.0);
+}
diff --git a/shaders/vulkan/rgen/launch_id.nocompat.vk.rgen b/shaders/vulkan/rgen/launch_id.nocompat.vk.rgen
new file mode 100644
index 00000000..b89792e3
--- /dev/null
+++ b/shaders/vulkan/rgen/launch_id.nocompat.vk.rgen
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(set = 0, binding = 0) uniform writeonly image2D uImage;
+
+void main()
+{
+ imageStore(uImage, ivec2(gl_LaunchIDNV.xy), vec4(1.0));
+}
diff --git a/shaders/vulkan/rgen/launch_size.nocompat.vk.rgen b/shaders/vulkan/rgen/launch_size.nocompat.vk.rgen
new file mode 100644
index 00000000..1e1ff559
--- /dev/null
+++ b/shaders/vulkan/rgen/launch_size.nocompat.vk.rgen
@@ -0,0 +1,9 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(set = 0, binding = 0) uniform writeonly image2D uImage;
+
+void main()
+{
+ imageStore(uImage, ivec2(gl_LaunchSizeNV.xy) - 1, vec4(1.0));
+}
diff --git a/shaders/vulkan/rgen/payloads.nocompat.vk.rgen b/shaders/vulkan/rgen/payloads.nocompat.vk.rgen
new file mode 100644
index 00000000..333ccd1e
--- /dev/null
+++ b/shaders/vulkan/rgen/payloads.nocompat.vk.rgen
@@ -0,0 +1,51 @@
+#version 460
+#extension GL_NV_ray_tracing : require
+
+layout(set = 0, binding = 0, rgba8) uniform image2D image;
+layout(set = 0, binding = 1) uniform accelerationStructureNV as;
+
+struct Payload
+{
+ float a, b;
+};
+
+// Plain payload
+layout(location = 0) rayPayloadNV float payload1;
+// Struct payload
+layout(location = 1) rayPayloadNV Payload payload2;
+
+#if 0
+// Not sure how this actually works yet. Do we get 4 different locations, or just 1 with 4 members?
+layout(location = 2) rayPayloadNV Block
+{
+ float a, b;
+ Payload c, d;
+};
+#endif
+
+vec4 trace_in_function()
+{
+ vec4 result = vec4(0.0);
+ // Test that we can write to a payload in a function.
+ vec3 origin = vec3(1.0, 0.0, 0.0);
+ vec3 direction = vec3(0.0, 1.0, 0.0);
+ traceNV(as, 0u, 255u, 0u, 1u, 0u, origin, 0.0, direction, 1000.0, 1);
+ result += payload2.a;
+ result += payload2.b;
+ return result;
+}
+
+void main()
+{
+ vec3 origin = vec3(1.0, 0.0, 0.0);
+ vec3 direction = vec3(0.0, 1.0, 0.0);
+ traceNV(as, 0u, 255u, 0u, 1u, 0u, origin, 0.0, direction, 1000.0, 0);
+ vec4 result = vec4(payload1);
+
+ result += trace_in_function();
+
+#if 0
+ traceNV(as, 0u, 255u, 0u, 1u, 0u, origin, 0.0, direction, 1000.0, 2);
+ result += a + b + c.a + c.b + d.a + d.b;
+#endif
+}