#!amber DEVICE_EXTENSION VK_KHR_acceleration_structure DEVICE_EXTENSION VK_KHR_ray_tracing_pipeline DEVICE_EXTENSION VK_KHR_buffer_device_address DEVICE_FEATURE RayTracingPipelineFeaturesKHR.rayTracingPipeline DEVICE_FEATURE AccelerationStructureFeaturesKHR.accelerationStructure DEVICE_FEATURE BufferDeviceAddressFeatures.bufferDeviceAddress SHADER ray_generation raygen1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) rayPayloadEXT vec3 hitValue; layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS; void main() { traceRayEXT(topLevelAS, 0u, 0xFFu, 0, 0, 0, vec3(0.5, 0.5, 0.0), 0.0, vec3(0.0, 0.0, -1.0), 9.0, 0); } END SHADER ray_generation raygen2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) rayPayloadEXT vec3 hitValue; layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS; void main() { traceRayEXT(topLevelAS, 0u, 0xFFu, 0, 0, 0, vec3(0.5, 0.5, 0.0), 0.0, vec3(0.0, 0.0, -1.0), 9.0, 0); } END SHADER miss miss1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { hitValue = vec3(1,0,0); } END SHADER miss miss2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { hitValue = vec3(1,0,0); } END SHADER closest_hit closesthit1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 attribs; layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { } END SHADER closest_hit closesthit2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 attribs; layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { } END SHADER any_hit anyhit1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 attribs; layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { } END SHADER any_hit anyhit2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 attribs; layout(location = 0) rayPayloadInEXT vec3 hitValue; void main() { } END SHADER intersection intersection1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 hitAttribute; void main() { reportIntersectionEXT(0.95f, 0x7Eu); } END SHADER intersection intersection2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require hitAttributeEXT vec3 hitAttribute; void main() { reportIntersectionEXT(0.95f, 0x7Eu); } END SHADER callable call1 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) callableDataInEXT float dummy; void main() { } END SHADER callable call2 GLSL #version 460 core #extension GL_EXT_ray_tracing : require layout(location = 0) callableDataInEXT float dummy; void main() { } END ACCELERATION_STRUCTURE BOTTOM_LEVEL triangles GEOMETRY TRIANGLES 0.0 -0.75 1.0 -0.75 0.75 1.0 0.75 0.75 1.0 END GEOMETRY TRIANGLES 0.0 -0.75 1.0 -0.75 0.75 1.0 0.75 0.75 1.0 END END ACCELERATION_STRUCTURE BOTTOM_LEVEL aabbs GEOMETRY AABBS -0.5 -0.75 -1.0 0.50 0.75 1.0 -0.33 -0.75 -1.0 0.33 0.75 1.0 END GEOMETRY AABBS -1.50 -1.75 -1.0 1.50 1.75 1.0 -2.33 -2.75 -2.0 2.33 2.75 2.0 -3.50 -3.75 -3.0 3.50 3.75 3.0 END END ACCELERATION_STRUCTURE TOP_LEVEL tlas1 BOTTOM_LEVEL_INSTANCE triangles END BOTTOM_LEVEL_INSTANCE triangles INDEX 0 OFFSET 1 FLAGS TRIANGLE_FACING_CULL_DISABLE TRIANGLE_FLIP_FACING FORCE_OPAQUE FORCE_OPACITY_MICROMAP_2_STATE TRANSFORM 1 0 0 0.5 0 1 0 0.5 0 0 1 0.3 END END BOTTOM_LEVEL_INSTANCE aabbs INDEX 0 OFFSET 1 MASK 0x0F FLAGS FORCE_NO_OPAQUE DISABLE_OPACITY_MICROMAPS 1 END END END PIPELINE raytracing my_rtpipeline BIND ACCELERATION_STRUCTURE tlas1 DESCRIPTOR_SET 0 BINDING 0 SHADER_GROUP g1 raygen1 SHADER_GROUP g2 miss1 SHADER_GROUP g3 anyhit1 closesthit1 intersection1 SHADER_GROUP g4 raygen2 SHADER_GROUP g5 miss2 SHADER_GROUP g6 anyhit2 closesthit2 intersection2 SHADER_GROUP g7 call1 SHADER_GROUP g8 call2 SHADER_BINDING_TABLE sbt1 g1 END SHADER_BINDING_TABLE sbt2 g2 g5 END SHADER_BINDING_TABLE sbt3 g3 g6 END END RUN my_rtpipeline RAYGEN sbt1 MISS sbt2 HIT sbt3 1920 1080 1