Adding support for GL_EXT_ray_cull_mask

This commit is contained in:
Marius Bjorge 2022-05-05 12:56:04 +02:00
parent e3bca2add6
commit 3015d00ee0
15 changed files with 231 additions and 156 deletions

View File

@ -1007,6 +1007,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
return spv::BuiltInRayTminKHR;
case glslang::EbvRayTmax:
return spv::BuiltInRayTmaxKHR;
case glslang::EbvCullMask:
return spv::BuiltInCullMaskKHR;
case glslang::EbvInstanceCustomIndex:
return spv::BuiltInInstanceCustomIndexKHR;
case glslang::EbvHitT:
@ -1777,6 +1779,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addCapability(spv::CapabilityRayTracingNV);
builder.addExtension("SPV_NV_ray_tracing");
}
if (glslangIntermediate->getStage() != EShLangRayGen && glslangIntermediate->getStage() != EShLangCallable)
{
if (extensions.find("GL_EXT_ray_cull_mask") != extensions.end()) {
builder.addCapability(spv::CapabilityRayCullMaskKHR);
builder.addExtension("SPV_KHR_ray_cull_mask");
}
}
break;
}
case EShLangTaskNV:

View File

@ -392,6 +392,7 @@ const char* BuiltInString(int builtIn)
case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR";
case BuiltInRayTminKHR: return "RayTminKHR";
case BuiltInRayTmaxKHR: return "RayTmaxKHR";
case BuiltInCullMaskKHR: return "CullMaskKHR";
case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR";
case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR";
case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR";
@ -925,6 +926,7 @@ const char* CapabilityString(int info)
case CapabilityRayTracingNV: return "RayTracingNV";
case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV";
case CapabilityRayTracingKHR: return "RayTracingKHR";
case CapabilityRayCullMaskKHR: return "RayCullMaskKHR";
case CapabilityRayQueryKHR: return "RayQueryKHR";
case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR";
case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR";

View File

@ -673,6 +673,7 @@ enum BuiltIn {
BuiltInSMCountNV = 5375,
BuiltInWarpIDNV = 5376,
BuiltInSMIDNV = 5377,
BuiltInCullMaskKHR = 6021,
BuiltInMax = 0x7fffffff,
};
@ -1069,6 +1070,7 @@ enum Capability {
CapabilityDotProductInput4x8BitPackedKHR = 6018,
CapabilityDotProduct = 6019,
CapabilityDotProductKHR = 6019,
CapabilityRayCullMaskKHR = 6020,
CapabilityBitInstructions = 6025,
CapabilityAtomicFloat32AddEXT = 6033,
CapabilityAtomicFloat64AddEXT = 6034,

View File

@ -1,15 +1,18 @@
spv.ext.AnyHitShader.rahit
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 107
// Id's are bound by 110
Capability GroupNonUniform
Capability RayTracingKHR
Capability RayCullMaskKHR
Extension "SPV_KHR_ray_cull_mask"
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 98
EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 87 101
Source GLSL 460
SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
SourceExtension "GL_KHR_shader_subgroup_basic"
Name 4 "main"
@ -49,8 +52,10 @@ spv.ext.AnyHitShader.rahit
Name 76 "gl_ObjectToWorld3x4EXT"
Name 79 "v17"
Name 80 "gl_WorldToObject3x4EXT"
Name 84 "incomingPayload"
Name 98 "gl_SubgroupSize"
Name 83 "v18"
Name 84 "gl_CullMaskEXT"
Name 87 "incomingPayload"
Name 101 "gl_SubgroupSize"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@ -69,10 +74,11 @@ spv.ext.AnyHitShader.rahit
Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 98(gl_SubgroupSize) RelaxedPrecision
Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 99 RelaxedPrecision
Decorate 100 RelaxedPrecision
Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR
Decorate 101(gl_SubgroupSize) RelaxedPrecision
Decorate 101(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 102 RelaxedPrecision
Decorate 103 RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -114,15 +120,16 @@ spv.ext.AnyHitShader.rahit
74: TypePointer Function 73
76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input
80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input
83: TypePointer IncomingRayPayloadKHR 72(fvec4)
84(incomingPayload): 83(ptr) Variable IncomingRayPayloadKHR
85: 28(float) Constant 1056964608
86: 72(fvec4) ConstantComposite 85 85 85 85
88: 16(int) Constant 1
89: TypeBool
94: 6(int) Constant 0
98(gl_SubgroupSize): 57(ptr) Variable Input
101: TypePointer IncomingRayPayloadKHR 28(float)
84(gl_CullMaskEXT): 57(ptr) Variable Input
86: TypePointer IncomingRayPayloadKHR 72(fvec4)
87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR
88: 28(float) Constant 1056964608
89: 72(fvec4) ConstantComposite 88 88 88 88
91: 16(int) Constant 1
92: TypeBool
97: 6(int) Constant 0
101(gl_SubgroupSize): 57(ptr) Variable Input
104: TypePointer IncomingRayPayloadKHR 28(float)
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@ -143,6 +150,7 @@ spv.ext.AnyHitShader.rahit
69(v15): 17(ptr) Variable Function
75(v16): 74(ptr) Variable Function
79(v17): 74(ptr) Variable Function
83(v18): 55(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@ -181,20 +189,22 @@ spv.ext.AnyHitShader.rahit
81: 60 Load 80(gl_WorldToObject3x4EXT)
82: 73 Transpose 81
Store 79(v17) 82
Store 84(incomingPayload) 86
87: 16(int) Load 18(v2)
90: 89(bool) IEqual 87 88
SelectionMerge 92 None
BranchConditional 90 91 92
91: Label
85: 6(int) Load 84(gl_CullMaskEXT)
Store 83(v18) 85
Store 87(incomingPayload) 89
90: 16(int) Load 18(v2)
93: 92(bool) IEqual 90 91
SelectionMerge 95 None
BranchConditional 93 94 95
94: Label
IgnoreIntersectionKHR
92: Label
99: 6(int) Load 98(gl_SubgroupSize)
100: 28(float) ConvertUToF 99
102: 101(ptr) AccessChain 84(incomingPayload) 94
103: 28(float) Load 102
104: 28(float) FAdd 103 100
105: 101(ptr) AccessChain 84(incomingPayload) 94
Store 105 104
95: Label
102: 6(int) Load 101(gl_SubgroupSize)
103: 28(float) ConvertUToF 102
105: 104(ptr) AccessChain 87(incomingPayload) 97
106: 28(float) Load 105
107: 28(float) FAdd 106 103
108: 104(ptr) AccessChain 87(incomingPayload) 97
Store 108 107
TerminateRayKHR
FunctionEnd

View File

@ -1,14 +1,17 @@
spv.ext.ClosestHitShader.rchit
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 101
// Id's are bound by 104
Capability RayTracingKHR
Capability RayCullMaskKHR
Extension "SPV_KHR_ray_cull_mask"
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 85 98 100
EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 88 101 103
Source GLSL 460
SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
Name 9 "v0"
@ -47,9 +50,11 @@ spv.ext.ClosestHitShader.rchit
Name 76 "gl_ObjectToWorld3x4EXT"
Name 79 "v17"
Name 80 "gl_WorldToObject3x4EXT"
Name 85 "accEXT"
Name 98 "incomingPayload"
Name 100 "localPayload"
Name 83 "v18"
Name 84 "gl_CullMaskEXT"
Name 88 "accEXT"
Name 101 "incomingPayload"
Name 103 "localPayload"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@ -68,8 +73,9 @@ spv.ext.ClosestHitShader.rchit
Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR
Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 85(accEXT) DescriptorSet 0
Decorate 85(accEXT) Binding 0
Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR
Decorate 88(accEXT) DescriptorSet 0
Decorate 88(accEXT) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -111,23 +117,24 @@ spv.ext.ClosestHitShader.rchit
74: TypePointer Function 73
76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input
80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input
83: TypeAccelerationStructureKHR
84: TypePointer UniformConstant 83
85(accEXT): 84(ptr) Variable UniformConstant
87: 6(int) Constant 0
88: 6(int) Constant 1
89: 6(int) Constant 2
90: 6(int) Constant 3
91: 28(float) Constant 1056964608
92: 29(fvec3) ConstantComposite 91 91 91
93: 28(float) Constant 1065353216
94: 29(fvec3) ConstantComposite 93 93 93
95: 28(float) Constant 1061158912
96: 16(int) Constant 1
97: TypePointer IncomingRayPayloadKHR 72(fvec4)
98(incomingPayload): 97(ptr) Variable IncomingRayPayloadKHR
99: TypePointer RayPayloadKHR 72(fvec4)
100(localPayload): 99(ptr) Variable RayPayloadKHR
84(gl_CullMaskEXT): 57(ptr) Variable Input
86: TypeAccelerationStructureKHR
87: TypePointer UniformConstant 86
88(accEXT): 87(ptr) Variable UniformConstant
90: 6(int) Constant 0
91: 6(int) Constant 1
92: 6(int) Constant 2
93: 6(int) Constant 3
94: 28(float) Constant 1056964608
95: 29(fvec3) ConstantComposite 94 94 94
96: 28(float) Constant 1065353216
97: 29(fvec3) ConstantComposite 96 96 96
98: 28(float) Constant 1061158912
99: 16(int) Constant 1
100: TypePointer IncomingRayPayloadKHR 72(fvec4)
101(incomingPayload): 100(ptr) Variable IncomingRayPayloadKHR
102: TypePointer RayPayloadKHR 72(fvec4)
103(localPayload): 102(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@ -148,6 +155,7 @@ spv.ext.ClosestHitShader.rchit
69(v15): 17(ptr) Variable Function
75(v16): 74(ptr) Variable Function
79(v17): 74(ptr) Variable Function
83(v18): 55(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@ -186,7 +194,9 @@ spv.ext.ClosestHitShader.rchit
81: 60 Load 80(gl_WorldToObject3x4EXT)
82: 73 Transpose 81
Store 79(v17) 82
86: 83 Load 85(accEXT)
TraceRayKHR 86 87 88 89 90 87 92 91 94 95 98(incomingPayload)
85: 6(int) Load 84(gl_CullMaskEXT)
Store 83(v18) 85
89: 86 Load 88(accEXT)
TraceRayKHR 89 90 91 92 93 90 95 94 97 98 101(incomingPayload)
Return
FunctionEnd

View File

@ -1,14 +1,17 @@
spv.ext.IntersectShader.rint
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 81
// Id's are bound by 86
Capability RayTracingKHR
Capability RayCullMaskKHR
Extension "SPV_KHR_ray_cull_mask"
Extension "SPV_KHR_ray_tracing"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 73
EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 75 78
Source GLSL 460
SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
Name 4 "main"
Name 9 "v0"
@ -41,7 +44,9 @@ spv.ext.IntersectShader.rint
Name 65 "gl_ObjectToWorld3x4EXT"
Name 68 "v14"
Name 69 "gl_WorldToObject3x4EXT"
Name 73 "iAttr"
Name 73 "v15"
Name 75 "gl_CullMaskEXT"
Name 78 "iAttr"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId
@ -59,6 +64,7 @@ spv.ext.IntersectShader.rint
Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR
Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR
Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR
Decorate 75(gl_CullMaskEXT) BuiltIn CullMaskKHR
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -95,14 +101,17 @@ spv.ext.IntersectShader.rint
63: TypePointer Function 62
65(gl_ObjectToWorld3x4EXT): 55(ptr) Variable Input
69(gl_WorldToObject3x4EXT): 55(ptr) Variable Input
72: TypePointer HitAttributeKHR 61(fvec4)
73(iAttr): 72(ptr) Variable HitAttributeKHR
74: 28(float) Constant 1056964608
75: 28(float) Constant 0
76: 28(float) Constant 1065353216
77: 61(fvec4) ConstantComposite 74 74 75 76
78: 6(int) Constant 1
79: TypeBool
72: TypePointer Function 6(int)
74: TypePointer Input 6(int)
75(gl_CullMaskEXT): 74(ptr) Variable Input
77: TypePointer HitAttributeKHR 61(fvec4)
78(iAttr): 77(ptr) Variable HitAttributeKHR
79: 28(float) Constant 1056964608
80: 28(float) Constant 0
81: 28(float) Constant 1065353216
82: 61(fvec4) ConstantComposite 79 79 80 81
83: 6(int) Constant 1
84: TypeBool
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@ -120,6 +129,7 @@ spv.ext.IntersectShader.rint
58(v12): 53(ptr) Variable Function
64(v13): 63(ptr) Variable Function
68(v14): 63(ptr) Variable Function
73(v15): 72(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@ -152,7 +162,9 @@ spv.ext.IntersectShader.rint
70: 52 Load 69(gl_WorldToObject3x4EXT)
71: 62 Transpose 70
Store 68(v14) 71
Store 73(iAttr) 77
80: 79(bool) ReportIntersectionKHR 74 78
76: 6(int) Load 75(gl_CullMaskEXT)
Store 73(v15) 76
Store 78(iAttr) 82
85: 84(bool) ReportIntersectionKHR 79 83
Return
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.ext.MissShader.rmiss
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 90
// Id's are bound by 94
Capability MinLod
Capability GroupNonUniform
@ -9,15 +9,18 @@ spv.ext.MissShader.rmiss
Capability SubgroupBallotKHR
Capability RayTracingKHR
Capability ShaderSMBuiltinsNV
Capability RayCullMaskKHR
Extension "SPV_KHR_ray_cull_mask"
Extension "SPV_KHR_ray_tracing"
Extension "SPV_KHR_shader_ballot"
Extension "SPV_NV_shader_sm_builtins"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 58 63 74 78 85 89
EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 37 41 56 57 62 67 78 82 89 93
Source GLSL 460
SourceExtension "GL_ARB_shader_ballot"
SourceExtension "GL_ARB_sparse_texture_clamp"
SourceExtension "GL_EXT_ray_cull_mask"
SourceExtension "GL_EXT_ray_tracing"
SourceExtension "GL_KHR_shader_subgroup_ballot"
SourceExtension "GL_KHR_shader_subgroup_basic"
@ -35,37 +38,40 @@ spv.ext.MissShader.rmiss
Name 29 "gl_RayTminEXT"
Name 31 "v5"
Name 32 "gl_RayTmaxEXT"
Name 36 "accEXT"
Name 51 "incomingPayload"
Name 53 "gl_SubGroupSizeARB"
Name 58 "gl_SubgroupEqMask"
Name 63 "gl_WarpIDNV"
Name 70 "texel"
Name 74 "s2D"
Name 78 "c2"
Name 85 "lodClamp"
Name 89 "localPayload"
Name 35 "v6"
Name 37 "gl_CullMaskEXT"
Name 41 "accEXT"
Name 56 "incomingPayload"
Name 57 "gl_SubGroupSizeARB"
Name 62 "gl_SubgroupEqMask"
Name 67 "gl_WarpIDNV"
Name 74 "texel"
Name 78 "s2D"
Name 82 "c2"
Name 89 "lodClamp"
Name 93 "localPayload"
Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR
Decorate 24(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR
Decorate 29(gl_RayTminEXT) BuiltIn RayTminKHR
Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR
Decorate 36(accEXT) DescriptorSet 0
Decorate 36(accEXT) Binding 0
Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize
Decorate 53(gl_SubGroupSizeARB) Volatile
Decorate 53(gl_SubGroupSizeARB) Coherent
Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
Decorate 58(gl_SubgroupEqMask) Volatile
Decorate 58(gl_SubgroupEqMask) Coherent
Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV
Decorate 63(gl_WarpIDNV) Volatile
Decorate 63(gl_WarpIDNV) Coherent
Decorate 74(s2D) DescriptorSet 0
Decorate 74(s2D) Binding 1
Decorate 78(c2) Location 2
Decorate 85(lodClamp) Location 3
Decorate 37(gl_CullMaskEXT) BuiltIn CullMaskKHR
Decorate 41(accEXT) DescriptorSet 0
Decorate 41(accEXT) Binding 0
Decorate 57(gl_SubGroupSizeARB) BuiltIn SubgroupSize
Decorate 57(gl_SubGroupSizeARB) Volatile
Decorate 57(gl_SubGroupSizeARB) Coherent
Decorate 62(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
Decorate 62(gl_SubgroupEqMask) Volatile
Decorate 62(gl_SubgroupEqMask) Coherent
Decorate 67(gl_WarpIDNV) BuiltIn WarpIDNV
Decorate 67(gl_WarpIDNV) Volatile
Decorate 67(gl_WarpIDNV) Coherent
Decorate 78(s2D) DescriptorSet 0
Decorate 78(s2D) Binding 1
Decorate 82(c2) Location 2
Decorate 89(lodClamp) Location 3
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -84,44 +90,46 @@ spv.ext.MissShader.rmiss
28: TypePointer Input 16(float)
29(gl_RayTminEXT): 28(ptr) Variable Input
32(gl_RayTmaxEXT): 28(ptr) Variable Input
34: TypeAccelerationStructureKHR
35: TypePointer UniformConstant 34
36(accEXT): 35(ptr) Variable UniformConstant
38: 6(int) Constant 0
39: 6(int) Constant 1
40: 6(int) Constant 2
41: 6(int) Constant 3
42: 16(float) Constant 1056964608
43: 17(fvec3) ConstantComposite 42 42 42
44: 16(float) Constant 1065353216
45: 17(fvec3) ConstantComposite 44 44 44
46: 16(float) Constant 1061158912
47: TypeInt 32 1
48: 47(int) Constant 1
49: TypeVector 16(float) 4
50: TypePointer IncomingRayPayloadKHR 49(fvec4)
51(incomingPayload): 50(ptr) Variable IncomingRayPayloadKHR
52: TypePointer Input 6(int)
53(gl_SubGroupSizeARB): 52(ptr) Variable Input
56: TypeVector 6(int) 4
57: TypePointer Input 56(ivec4)
58(gl_SubgroupEqMask): 57(ptr) Variable Input
63(gl_WarpIDNV): 52(ptr) Variable Input
67: TypePointer IncomingRayPayloadKHR 16(float)
69: TypePointer Function 49(fvec4)
71: TypeImage 16(float) 2D sampled format:Unknown
72: TypeSampledImage 71
73: TypePointer UniformConstant 72
74(s2D): 73(ptr) Variable UniformConstant
76: TypeVector 16(float) 2
77: TypePointer Input 76(fvec2)
78(c2): 77(ptr) Variable Input
82: TypeVector 47(int) 2
83: 47(int) Constant 5
84: 82(ivec2) ConstantComposite 83 83
85(lodClamp): 28(ptr) Variable Input
88: TypePointer RayPayloadKHR 49(fvec4)
89(localPayload): 88(ptr) Variable RayPayloadKHR
34: TypePointer Function 6(int)
36: TypePointer Input 6(int)
37(gl_CullMaskEXT): 36(ptr) Variable Input
39: TypeAccelerationStructureKHR
40: TypePointer UniformConstant 39
41(accEXT): 40(ptr) Variable UniformConstant
43: 6(int) Constant 0
44: 6(int) Constant 1
45: 6(int) Constant 2
46: 6(int) Constant 3
47: 16(float) Constant 1056964608
48: 17(fvec3) ConstantComposite 47 47 47
49: 16(float) Constant 1065353216
50: 17(fvec3) ConstantComposite 49 49 49
51: 16(float) Constant 1061158912
52: TypeInt 32 1
53: 52(int) Constant 1
54: TypeVector 16(float) 4
55: TypePointer IncomingRayPayloadKHR 54(fvec4)
56(incomingPayload): 55(ptr) Variable IncomingRayPayloadKHR
57(gl_SubGroupSizeARB): 36(ptr) Variable Input
60: TypeVector 6(int) 4
61: TypePointer Input 60(ivec4)
62(gl_SubgroupEqMask): 61(ptr) Variable Input
67(gl_WarpIDNV): 36(ptr) Variable Input
71: TypePointer IncomingRayPayloadKHR 16(float)
73: TypePointer Function 54(fvec4)
75: TypeImage 16(float) 2D sampled format:Unknown
76: TypeSampledImage 75
77: TypePointer UniformConstant 76
78(s2D): 77(ptr) Variable UniformConstant
80: TypeVector 16(float) 2
81: TypePointer Input 80(fvec2)
82(c2): 81(ptr) Variable Input
86: TypeVector 52(int) 2
87: 52(int) Constant 5
88: 86(ivec2) ConstantComposite 87 87
89(lodClamp): 28(ptr) Variable Input
92: TypePointer RayPayloadKHR 54(fvec4)
93(localPayload): 92(ptr) Variable RayPayloadKHR
4(main): 2 Function None 3
5: Label
9(v0): 8(ptr) Variable Function
@ -130,7 +138,8 @@ spv.ext.MissShader.rmiss
23(v3): 18(ptr) Variable Function
27(v4): 26(ptr) Variable Function
31(v5): 26(ptr) Variable Function
70(texel): 69(ptr) Variable Function
35(v6): 34(ptr) Variable Function
74(texel): 73(ptr) Variable Function
12: 7(ivec3) Load 11(gl_LaunchIDEXT)
Store 9(v0) 12
15: 7(ivec3) Load 14(gl_LaunchSizeEXT)
@ -143,25 +152,27 @@ spv.ext.MissShader.rmiss
Store 27(v4) 30
33: 16(float) Load 32(gl_RayTmaxEXT)
Store 31(v5) 33
37: 34 Load 36(accEXT)
TraceRayKHR 37 38 39 40 41 38 43 42 45 46 51(incomingPayload)
54: 6(int) Load 53(gl_SubGroupSizeARB)
55: 16(float) ConvertUToF 54
59: 56(ivec4) Load 58(gl_SubgroupEqMask)
60: 49(fvec4) ConvertUToF 59
61: 16(float) CompositeExtract 60 0
62: 16(float) FAdd 55 61
64: 6(int) Load 63(gl_WarpIDNV)
65: 16(float) ConvertUToF 64
66: 16(float) FAdd 62 65
68: 67(ptr) AccessChain 51(incomingPayload) 38
Store 68 66
75: 72 Load 74(s2D)
79: 76(fvec2) Load 78(c2)
80: 76(fvec2) Load 78(c2)
81: 76(fvec2) Load 78(c2)
86: 16(float) Load 85(lodClamp)
87: 49(fvec4) ImageSampleExplicitLod 75 79 Grad ConstOffset MinLod 80 81 84 86
Store 70(texel) 87
38: 6(int) Load 37(gl_CullMaskEXT)
Store 35(v6) 38
42: 39 Load 41(accEXT)
TraceRayKHR 42 43 44 45 46 43 48 47 50 51 56(incomingPayload)
58: 6(int) Load 57(gl_SubGroupSizeARB)
59: 16(float) ConvertUToF 58
63: 60(ivec4) Load 62(gl_SubgroupEqMask)
64: 54(fvec4) ConvertUToF 63
65: 16(float) CompositeExtract 64 0
66: 16(float) FAdd 59 65
68: 6(int) Load 67(gl_WarpIDNV)
69: 16(float) ConvertUToF 68
70: 16(float) FAdd 66 69
72: 71(ptr) AccessChain 56(incomingPayload) 43
Store 72 70
79: 76 Load 78(s2D)
83: 80(fvec2) Load 82(c2)
84: 80(fvec2) Load 82(c2)
85: 80(fvec2) Load 82(c2)
90: 16(float) Load 89(lodClamp)
91: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 84 85 88 90
Store 74(texel) 91
Return
FunctionEnd

View File

@ -1,6 +1,8 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_KHR_shader_subgroup_basic : enable
#extension GL_EXT_ray_cull_mask : enable
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
void main()
{
@ -22,6 +24,7 @@ void main()
int v15 = gl_GeometryIndexEXT;
mat3x4 v16 = gl_ObjectToWorld3x4EXT;
mat3x4 v17 = gl_WorldToObject3x4EXT;
uint v18 = gl_CullMaskEXT;
incomingPayload = vec4(0.5f);
if (v2 == 1) {
ignoreIntersectionEXT;

View File

@ -1,5 +1,7 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_EXT_ray_cull_mask : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
layout(location = 0) rayPayloadEXT vec4 localPayload;
layout(location = 1) rayPayloadInEXT vec4 incomingPayload;
@ -23,5 +25,6 @@ void main()
int v15 = gl_GeometryIndexEXT;
mat3x4 v16 = gl_ObjectToWorld3x4EXT;
mat3x4 v17 = gl_WorldToObject3x4EXT;
uint v18 = gl_CullMaskEXT;
traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
}

View File

@ -1,5 +1,6 @@
#version 460
#extension GL_EXT_ray_tracing : enable
#extension GL_EXT_ray_cull_mask : enable
hitAttributeEXT vec4 iAttr;
void main()
{
@ -18,6 +19,7 @@ void main()
mat4x3 v12 = gl_WorldToObjectEXT;
mat3x4 v13 = gl_ObjectToWorld3x4EXT;
mat3x4 v14 = gl_WorldToObject3x4EXT;
uint v15 = gl_CullMaskEXT;
iAttr = vec4(0.5f,0.5f,0.0f,1.0f);
reportIntersectionEXT(0.5, 1U);
}

View File

@ -5,6 +5,7 @@
#extension GL_ARB_shader_ballot : enable
#extension GL_NV_shader_sm_builtins : enable
#extension GL_ARB_sparse_texture_clamp: enable
#extension GL_EXT_ray_cull_mask : enable
layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
layout(location = 0) rayPayloadEXT vec4 localPayload;
@ -22,6 +23,7 @@ void main()
vec3 v3 = gl_WorldRayDirectionEXT;
float v4 = gl_RayTminEXT;
float v5 = gl_RayTmaxEXT;
uint v6 = gl_CullMaskEXT;
traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1);
incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV);
vec4 texel = textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp);

View File

@ -263,6 +263,7 @@ enum TBuiltInVariable {
EbvObjectRayDirection,
EbvRayTmin,
EbvRayTmax,
EbvCullMask,
EbvHitT,
EbvHitKind,
EbvObjectToWorld,

View File

@ -5857,6 +5857,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
"in uint gl_CullMaskEXT;"
"\n";
const char *hitDecls =
"in uvec3 gl_LaunchIDNV;"
@ -5893,6 +5894,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
"in uint gl_CullMaskEXT;"
"\n";
const char *missDecls =
"in uvec3 gl_LaunchIDNV;"
@ -5912,6 +5914,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"in uint gl_IncomingRayFlagsNV;"
"in uint gl_IncomingRayFlagsEXT;"
"in float gl_CurrentRayTimeNV;"
"in uint gl_CullMaskEXT;"
"\n";
const char *callableDecls =
@ -8743,6 +8746,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing);
symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_CullMaskEXT", 1, &E_GL_EXT_ray_cull_mask);
symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing);
symbolTable.setVariableExtensions("gl_HitTEXT", 1, &E_GL_EXT_ray_tracing);
symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing);
@ -8792,6 +8796,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable);
BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable);
BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable);
BuiltInVariable("gl_CullMaskEXT", EbvCullMask, symbolTable);
BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable);
BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable);
BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable);

View File

@ -334,6 +334,7 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_ray_tracing] = EBhDisable;
extensionBehavior[E_GL_EXT_ray_query] = EBhDisable;
extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable;
extensionBehavior[E_GL_EXT_ray_cull_mask] = EBhDisable;
extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable;
extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable;
@ -505,6 +506,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_EXT_ray_tracing 1\n"
"#define GL_EXT_ray_query 1\n"
"#define GL_EXT_ray_flags_primitive_culling 1\n"
"#define GL_EXT_ray_cull_mask 1\n"
"#define GL_EXT_spirv_intrinsics 1\n"
"#define GL_AMD_shader_ballot 1\n"

View File

@ -201,6 +201,7 @@ const char* const E_GL_EXT_debug_printf = "GL_EXT_debug_prin
const char* const E_GL_EXT_ray_tracing = "GL_EXT_ray_tracing";
const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query";
const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling";
const char* const E_GL_EXT_ray_cull_mask = "GL_EXT_ray_cull_mask";
const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended";
const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions";
const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate";