Add support for GL_NV_shader_invocation_reorder. (#3054)
This commit is contained in:
parent
19d816c8c9
commit
4fc43cd3c1
30 changed files with 7478 additions and 5636 deletions
58
Test/spv.nv.hitobject-allops.rmiss
Normal file
58
Test/spv.nv.hitobject-allops.rmiss
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#version 460
|
||||
#extension GL_EXT_ray_tracing : enable
|
||||
#extension GL_NV_shader_invocation_reorder : enable
|
||||
#extension GL_NV_ray_tracing_motion_blur : enable
|
||||
layout(location = 1) rayPayloadEXT vec4 payload;
|
||||
layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; };
|
||||
layout(location = 2) hitObjectAttributeNV vec2 attr;
|
||||
layout(location = 3) hitObjectAttributeNV hBlock { float attrval;};
|
||||
layout(binding = 0) uniform accelerationStructureEXT as;
|
||||
layout(binding = 1) buffer block {
|
||||
float op;
|
||||
};
|
||||
void main()
|
||||
{
|
||||
hitObjectNV hObj;
|
||||
hitObjectNV hObjHit, hObjMiss, hObjNop;
|
||||
attr = vec2(1.0);
|
||||
attrval = 2.0;
|
||||
hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1);
|
||||
hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2);
|
||||
hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2);
|
||||
hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2);
|
||||
hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3);
|
||||
hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3);
|
||||
hitObjectRecordEmptyNV(hObjNop);
|
||||
hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0);
|
||||
hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f);
|
||||
hitObjectExecuteShaderNV(hObjHit, 2);
|
||||
if (hitObjectIsHitNV(hObj)) {
|
||||
op = 1.0f;
|
||||
} else if (hitObjectIsMissNV(hObj)) {
|
||||
op = 2.0f;
|
||||
} else if (hitObjectIsEmptyNV(hObj)) {
|
||||
op = 3.0f;
|
||||
}
|
||||
|
||||
|
||||
float tmin = hitObjectGetRayTMinNV(hObjHit);
|
||||
float tmax = hitObjectGetRayTMaxNV(hObjHit);
|
||||
vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit);
|
||||
vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit);
|
||||
vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit);
|
||||
vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit);
|
||||
mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit);
|
||||
mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit);
|
||||
int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss);
|
||||
int iid = hitObjectGetInstanceIdNV(hObjNop);
|
||||
int pid = hitObjectGetPrimitiveIndexNV(hObj);
|
||||
int gid = hitObjectGetGeometryIndexNV(hObj);
|
||||
uint hkind = hitObjectGetHitKindNV(hObj);
|
||||
hitObjectGetAttributesNV(hObj, 2);
|
||||
uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj);
|
||||
uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue