59 lines
1.9 KiB
Plaintext
59 lines
1.9 KiB
Plaintext
#version 460
|
|
#extension GL_EXT_ray_query : require
|
|
#extension GL_EXT_ray_tracing : require
|
|
#extension GL_EXT_ray_flags_primitive_culling : require
|
|
layout(primitive_culling);
|
|
|
|
layout(set = 0, binding = 0) uniform accelerationStructureEXT AS0;
|
|
layout(set = 0, binding = 1) uniform accelerationStructureEXT AS1;
|
|
|
|
layout(set = 0, binding = 2) uniform Params
|
|
{
|
|
uint ray_flags;
|
|
uint cull_mask;
|
|
vec3 origin;
|
|
float tmin;
|
|
vec3 dir;
|
|
float tmax;
|
|
float thit;
|
|
};
|
|
|
|
rayQueryEXT q2[2];
|
|
|
|
void main()
|
|
{
|
|
rayQueryEXT q;
|
|
bool res;
|
|
uint type;
|
|
float fval;
|
|
vec3 fvals;
|
|
int ival;
|
|
mat4x3 matrices;
|
|
|
|
rayQueryInitializeEXT(q, AS0, ray_flags, cull_mask, origin, tmin, dir, tmax);
|
|
rayQueryInitializeEXT(q2[1], AS1, ray_flags, cull_mask, origin, tmin, dir, tmax);
|
|
|
|
res = rayQueryProceedEXT(q);
|
|
rayQueryTerminateEXT(q2[0]);
|
|
rayQueryGenerateIntersectionEXT(q, thit);
|
|
rayQueryConfirmIntersectionEXT(q2[1]);
|
|
fval = rayQueryGetRayTMinEXT(q);
|
|
fvals = rayQueryGetWorldRayDirectionEXT(q);
|
|
fvals = rayQueryGetWorldRayOriginEXT(q);
|
|
type = rayQueryGetIntersectionTypeEXT(q2[1], true);
|
|
type = rayQueryGetIntersectionTypeEXT(q2[0], false);
|
|
res = rayQueryGetIntersectionCandidateAABBOpaqueEXT(q2[1]);
|
|
fval = rayQueryGetIntersectionTEXT(q2[1], true);
|
|
fval = rayQueryGetIntersectionTEXT(q2[1], false);
|
|
ival = rayQueryGetIntersectionInstanceCustomIndexEXT(q, true);
|
|
ival = rayQueryGetIntersectionInstanceIdEXT(q2[0], false);
|
|
ival = rayQueryGetIntersectionGeometryIndexEXT(q2[1], false);
|
|
ival = rayQueryGetIntersectionPrimitiveIndexEXT(q, true);
|
|
fvals.xy = rayQueryGetIntersectionBarycentricsEXT(q2[0], false);
|
|
res = rayQueryGetIntersectionFrontFaceEXT(q, true);
|
|
fvals = rayQueryGetIntersectionObjectRayDirectionEXT(q, false);
|
|
fvals = rayQueryGetIntersectionObjectRayOriginEXT(q2[0], true);
|
|
matrices = rayQueryGetIntersectionObjectToWorldEXT(q, false);
|
|
matrices = rayQueryGetIntersectionWorldToObjectEXT(q2[1], true);
|
|
}
|