| #version 460 | |
| #extension GL_EXT_ray_query : enable | |
| #extension GL_EXT_opacity_micromap_ray_query_mode : enable | |
| // Bare specialization-constant form where the built-in is also read in the shader body. Reading it | |
| // materializes the specialization constant, so the OpacityMicromapIdKHR execution mode must reference | |
| // that same constant (not a synthesized duplicate) - i.e. a single SpecId is emitted. | |
| layout(constant_id = 2) gl_EnableOpacityMicromapEXT; | |
| layout(set = 0, binding = 0) uniform accelerationStructureEXT topLevelAS; | |
| layout(set = 0, binding = 1, std430) buffer Out { uint enabled; } outBuf; | |
| void main() | |
| { | |
| rayQueryEXT rq; | |
| rayQueryInitializeEXT(rq, topLevelAS, gl_RayFlagsNoneEXT, 0xFFu, | |
| vec3(0.0), 0.1, vec3(0.0, 0.0, 1.0), 100.0); | |
| rayQueryProceedEXT(rq); | |
| outBuf.enabled = gl_EnableOpacityMicromapEXT ? 1u : 0u; | |
| } |