#version 460 #extension GL_EXT_ray_tracing : enable #extension GL_NV_linear_swept_spheres : enable #extension GL_EXT_ray_query : enable #extension GL_NV_shader_invocation_reorder : enable void main() { hitObjectNV hObj; rayQueryEXT rq; vec3 pos; vec3 lss_pos[2]; float rad; float lss_rad[2]; float hitVal; bool isSphereHit, isLSSHit; pos = hitObjectGetSpherePositionNV(hObj); rad = hitObjectGetSphereRadiusNV(hObj); hitObjectGetLSSPositionsNV(hObj, lss_pos); hitObjectGetLSSRadiiNV(hObj, lss_rad); isSphereHit = hitObjectIsSphereHitNV(hObj); isLSSHit = hitObjectIsLSSHitNV(hObj); pos = rayQueryGetIntersectionSpherePositionNV(rq, true); pos = rayQueryGetIntersectionSpherePositionNV(rq, false); rad = rayQueryGetIntersectionSphereRadiusNV(rq, true); rad = rayQueryGetIntersectionSphereRadiusNV(rq, false); rayQueryGetIntersectionLSSPositionsNV(rq, true, lss_pos); rayQueryGetIntersectionLSSPositionsNV(rq, false, lss_pos); rayQueryGetIntersectionLSSRadiiNV(rq, true, lss_rad); rayQueryGetIntersectionLSSRadiiNV(rq, false, lss_rad); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, true); hitVal = rayQueryGetIntersectionLSSHitValueNV(rq, false); isSphereHit = rayQueryIsSphereHitNV(rq, true); isSphereHit = rayQueryIsSphereHitNV(rq, false); isLSSHit = rayQueryIsLSSHitNV(rq, true); isLSSHit = rayQueryIsLSSHitNV(rq, false); pos = gl_HitSpherePositionNV; rad = gl_HitSphereRadiusNV; lss_pos = gl_HitLSSPositionsNV; lss_rad = gl_HitLSSRadiiNV; isSphereHit = gl_HitIsSphereNV; isLSSHit = gl_HitIsLSSNV; }