diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-05-20 14:14:23 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-05-20 15:11:28 +0300 |
commit | 271ad33380cb8d2a146ed3f3ba2082b265bfabd9 (patch) | |
tree | d3f676b7fb35c0051d9f37149b2d65a29f451821 /shaders | |
parent | 3c43f055df0d7b6948af64c825bf93beb8ab6418 (diff) |
GLSL: Add some more focused RT test shaders.
Diffstat (limited to 'shaders')
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 +} |