blob: c70a3fc4913f780c37a5a714d585671aa8a04f70 [file] [log] [blame]
#version 460
#extension GL_EXT_ray_query : require
layout(local_size_x = 16, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0, set = 0) uniform accelerationStructureEXT tlas;
void main()
{
rayQueryEXT rayQuery;
rayQueryInitializeEXT(rayQuery, // Ray query
tlas, // Top-level acceleration structure
0, // Ray flags
0xFF, // 8-bit instance mask
vec3(0), // Ray origin
0.0, // Minimum t-value
vec3(1, 0, 0), // Ray direction
10000.0); // Maximum t-value
// yes this is silly, just want to verify the return types
bool rq_proceed = rayQueryProceedEXT(rayQuery);
while(rq_proceed)
{
rq_proceed = rayQueryProceedEXT(rayQuery);
}
const uint intersectionType = rayQueryGetIntersectionTypeEXT(rayQuery, true);
const float rayTMin = rayQueryGetRayTMinEXT(rayQuery);
const uint rayFlags = rayQueryGetRayFlagsEXT(rayQuery);
const vec3 worldRayOrigin = rayQueryGetWorldRayOriginEXT(rayQuery);
const vec3 worldDirection = rayQueryGetWorldRayDirectionEXT(rayQuery);
const float intersectionT = rayQueryGetIntersectionTEXT(rayQuery, true);
const int customIndex = rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true);
const int instanceId = rayQueryGetIntersectionInstanceIdEXT(rayQuery, true);
const uint sbtOffset = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true);
const int geometryIndex = rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true);
const int primitiveIndex = rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true);
const vec2 barys = rayQueryGetIntersectionBarycentricsEXT(rayQuery, true);
const bool frontface = rayQueryGetIntersectionFrontFaceEXT(rayQuery, true);
const bool aabbOpaque = rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery);
const vec3 objRayDirection = rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true);
const vec3 objRayOrigin = rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true);
const mat4x3 objToWorld = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, true);
const mat4x3 worldToObj = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true);
}