yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
458ff50a
main
1#version 460 2#extension GL_EXT_ray_tracing : enable 3#extension GL_EXT_shader_invocation_reorder : enable 4#extension GL_NV_ray_tracing_motion_blur : enable 5#extension GL_EXT_ray_query : enable 6layout(location = 1) rayPayloadEXT vec4 payload; 7layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; 8layout(location = 2) hitObjectAttributeEXT vec2 attr; 9layout(location = 3) hitObjectAttributeEXT hBlock { float attrval;}; 10layout(binding = 0) uniform accelerationStructureEXT as; 11layout(binding = 1) buffer block { 12 float op; 13}; 14void main() 15{ 16 hitObjectEXT hObj; 17 hitObjectEXT hObjHit, hObjMiss, hObjNop; 18 rayQueryEXT rq; 19 attr = vec2(1.0); 20 attrval = 2.0; 21 hitObjectTraceRayEXT(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); 22 hitObjectTraceRayMotionEXT(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); 23 hitObjectRecordEmptyEXT(hObjNop); 24 hitObjectRecordMissEXT(hObjMiss, 1U, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); 25 hitObjectRecordMissMotionEXT(hObjMiss,1U, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); 26 hitObjectExecuteShaderEXT(hObjHit, 1); 27 if (hitObjectIsHitEXT(hObj)) { 28 op = 1.0f; 29 } else if (hitObjectIsMissEXT(hObj)) { 30 op = 2.0f; 31 } else if (hitObjectIsEmptyEXT(hObj)) { 32 op = 3.0f; 33 } 34 35 uint rayflags = hitObjectGetRayFlagsEXT(hObjHit); 36 float tmin = hitObjectGetRayTMinEXT(hObjHit); 37 float tmax = hitObjectGetRayTMaxEXT(hObjHit); 38 vec3 orig = hitObjectGetWorldRayOriginEXT(hObjHit); 39 vec3 dir = hitObjectGetWorldRayDirectionEXT(hObjHit); 40 vec3 oorig = hitObjectGetObjectRayOriginEXT(hObjHit); 41 vec3 odir = hitObjectGetObjectRayDirectionEXT(hObjHit); 42 mat4x3 otw = hitObjectGetObjectToWorldEXT(hObjHit); 43 mat4x3 wto = hitObjectGetWorldToObjectEXT(hObjHit); 44 int cid = hitObjectGetInstanceCustomIndexEXT(hObjMiss); 45 int iid = hitObjectGetInstanceIdEXT(hObjNop); 46 int pid = hitObjectGetPrimitiveIndexEXT(hObj); 47 int gid = hitObjectGetGeometryIndexEXT(hObj); 48 uint hkind = hitObjectGetHitKindEXT(hObj); 49 hitObjectGetAttributesEXT(hObj, 2); 50 uvec2 handle = hitObjectGetShaderRecordBufferHandleEXT(hObj); 51 uint rid = hitObjectGetShaderBindingTableRecordIndexEXT(hObj); 52 hitObjectRecordFromQueryEXT(hObjHit, rq, 1U, 2); 53 hitObjectRecordFromQueryEXT(hObjHit, rq, 1U, 2, 0xFEU); 54 55}