1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#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;
}
|