1#version 460 2#extension GL_EXT_ray_query : require 3#extension GL_EXT_ray_flags_primitive_culling : require 4#extension GL_EXT_ray_tracing : require 5layout(primitive_culling); 6layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; 7 8layout(set = 0, binding = 1, std140) uniform Params 9{ 10 uint ray_flags; 11 uint cull_mask; 12 vec3 origin; 13 float tmin; 14 vec3 dir; 15 float tmax; 16 float thit; 17 uvec2 bda; 18} _19; 19 20layout(set = 0, binding = 0) uniform accelerationStructureEXT AS; 21 22rayQueryEXT q; 23rayQueryEXT q2[2]; 24 25void main() 26{ 27 rayQueryInitializeEXT(q, AS, _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); 28 rayQueryInitializeEXT(q2[1], accelerationStructureEXT(_19.bda), _19.ray_flags, _19.cull_mask, _19.origin, _19.tmin, _19.dir, _19.tmax); 29 bool _67 = rayQueryProceedEXT(q); 30 bool res = _67; 31 rayQueryTerminateEXT(q2[0]); 32 rayQueryGenerateIntersectionEXT(q, _19.thit); 33 rayQueryConfirmIntersectionEXT(q2[1]); 34 float _75 = rayQueryGetRayTMinEXT(q); 35 float fval = _75; 36 uint _79 = rayQueryGetRayFlagsEXT(q2[0]); 37 uint type = _79; 38 vec3 _82 = rayQueryGetWorldRayDirectionEXT(q); 39 vec3 fvals = _82; 40 vec3 _83 = rayQueryGetWorldRayOriginEXT(q); 41 fvals = _83; 42 uint _86 = rayQueryGetIntersectionTypeEXT(q2[1], bool(1)); 43 type = _86; 44 bool _88 = rayQueryGetIntersectionCandidateAABBOpaqueEXT(q2[1]); 45 res = _88; 46 float _91 = rayQueryGetIntersectionTEXT(q2[1], bool(0)); 47 fval = _91; 48 int _94 = rayQueryGetIntersectionInstanceCustomIndexEXT(q, bool(1)); 49 int ival = _94; 50 int _96 = rayQueryGetIntersectionInstanceIdEXT(q2[0], bool(0)); 51 ival = _96; 52 uint _97 = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(q, bool(1)); 53 type = _97; 54 int _99 = rayQueryGetIntersectionGeometryIndexEXT(q2[1], bool(0)); 55 ival = _99; 56 int _100 = rayQueryGetIntersectionPrimitiveIndexEXT(q, bool(1)); 57 ival = _100; 58 vec2 _103 = rayQueryGetIntersectionBarycentricsEXT(q2[0], bool(0)); 59 fvals = vec3(_103.x, _103.y, fvals.z); 60 bool _106 = rayQueryGetIntersectionFrontFaceEXT(q, bool(1)); 61 res = _106; 62 vec3 _107 = rayQueryGetIntersectionObjectRayDirectionEXT(q, bool(0)); 63 fvals = _107; 64 vec3 _109 = rayQueryGetIntersectionObjectRayOriginEXT(q2[0], bool(1)); 65 fvals = _109; 66 mat4x3 _113 = rayQueryGetIntersectionObjectToWorldEXT(q, bool(0)); 67 mat4x3 matrices = _113; 68 mat4x3 _115 = rayQueryGetIntersectionWorldToObjectEXT(q2[1], bool(1)); 69 matrices = _115; 70} 71 72