From 1cad045cc2bf79c976e1d7001ac71644f6cb29a8 Mon Sep 17 00:00:00 2001 From: Max Andersson Date: Mon, 21 Mar 2022 07:01:08 +0100 Subject: [PATCH] Make gl_HitT proper aliases of gl_RayTmax Changes the gl_HitT builtins properly alias their gl_RayTmax. Previously they ended up as duplicate variables, rather than aliased. --- SPIRV/GlslangToSpv.cpp | 12 -- Test/baseResults/glsl.460.subgroup.rahit.out | 4 +- Test/baseResults/glsl.460.subgroup.rchit.out | 4 +- Test/baseResults/spv.AnyHitShader.rahit.out | 101 +++++---- .../spv.ClosestHitShader.rchit.out | 117 +++++------ .../spv.ext.AnyHitShader.rahit.out | 197 +++++++++--------- .../spv.ext.ClosestHitShader.rchit.out | 187 ++++++++--------- glslang/Include/BaseTypes.h | 2 - glslang/MachineIndependent/Initialize.cpp | 6 +- 9 files changed, 303 insertions(+), 327 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1674c5503..f07c47fce 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -989,18 +989,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInHitTriangleVertexPositionsKHR; case glslang::EbvInstanceCustomIndex: return spv::BuiltInInstanceCustomIndexKHR; - case glslang::EbvHitT: - { - // this is a GLSL alias of RayTmax - // in SPV_NV_ray_tracing it has a dedicated builtin - // but in SPV_KHR_ray_tracing it gets mapped to RayTmax - auto& extensions = glslangIntermediate->getRequestedExtensions(); - if (extensions.find("GL_NV_ray_tracing") != extensions.end()) { - return spv::BuiltInHitTNV; - } else { - return spv::BuiltInRayTmaxKHR; - } - } case glslang::EbvHitKind: return spv::BuiltInHitKindKHR; case glslang::EbvObjectToWorld: diff --git a/Test/baseResults/glsl.460.subgroup.rahit.out b/Test/baseResults/glsl.460.subgroup.rahit.out index 0a1e4f4ae..77fbbe3ed 100644 --- a/Test/baseResults/glsl.460.subgroup.rahit.out +++ b/Test/baseResults/glsl.460.subgroup.rahit.out @@ -383,7 +383,7 @@ ERROR: node is still EOpNull! 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) -0:119 'gl_HitTNV' ( in float HitTNV) +0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) @@ -760,7 +760,7 @@ ERROR: node is still EOpNull! 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) -0:119 'gl_HitTNV' ( in float HitTNV) +0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out index f5083e046..2a3de407c 100644 --- a/Test/baseResults/glsl.460.subgroup.rchit.out +++ b/Test/baseResults/glsl.460.subgroup.rchit.out @@ -383,7 +383,7 @@ ERROR: node is still EOpNull! 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) -0:121 'gl_HitTNV' ( in float HitTNV) +0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) @@ -771,7 +771,7 @@ ERROR: node is still EOpNull! 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) -0:121 'gl_HitTNV' ( in float HitTNV) +0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index d075b368b..027325e90 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -1,13 +1,13 @@ spv.AnyHitShader.rahit // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 81 +// Id's are bound by 80 Capability RayTracingNV Extension "SPV_NV_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 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" @@ -34,14 +34,13 @@ spv.AnyHitShader.rahit Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" - Name 53 "gl_HitTNV" - Name 56 "v12" - Name 58 "gl_HitKindNV" - Name 62 "v13" - Name 64 "gl_ObjectToWorldNV" - Name 66 "v14" - Name 67 "gl_WorldToObjectNV" - Name 71 "incomingPayload" + Name 55 "v12" + Name 57 "gl_HitKindNV" + Name 61 "v13" + Name 63 "gl_ObjectToWorldNV" + Name 65 "v14" + Name 66 "gl_WorldToObjectNV" + Name 70 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -53,11 +52,10 @@ spv.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTNV - Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR - Decorate 71(incomingPayload) Location 1 + Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR + Decorate 70(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -84,22 +82,21 @@ spv.AnyHitShader.rahit 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input - 53(gl_HitTNV): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindNV): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldNV): 63(ptr) Variable Input -67(gl_WorldToObjectNV): 63(ptr) Variable Input - 69: TypeVector 28(float) 4 - 70: TypePointer IncomingRayPayloadKHR 69(fvec4) -71(incomingPayload): 70(ptr) Variable IncomingRayPayloadKHR - 72: 28(float) Constant 1056964608 - 73: 69(fvec4) ConstantComposite 72 72 72 72 - 75: 16(int) Constant 1 - 76: TypeBool + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindNV): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldNV): 62(ptr) Variable Input +66(gl_WorldToObjectNV): 62(ptr) Variable Input + 68: TypeVector 28(float) 4 + 69: TypePointer IncomingRayPayloadKHR 68(fvec4) +70(incomingPayload): 69(ptr) Variable IncomingRayPayloadKHR + 71: 28(float) Constant 1056964608 + 72: 68(fvec4) ConstantComposite 71 71 71 71 + 74: 16(int) Constant 1 + 75: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -114,9 +111,9 @@ spv.AnyHitShader.rahit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) @@ -139,25 +136,25 @@ spv.AnyHitShader.rahit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTNV) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindNV) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldNV) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectNV) - Store 66(v14) 68 - Store 71(incomingPayload) 73 - 74: 16(int) Load 18(v2) - 77: 76(bool) IEqual 74 75 - SelectionMerge 79 None - BranchConditional 77 78 80 - 78: Label + 53: 28(float) Load 50(gl_RayTmaxNV) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindNV) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldNV) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectNV) + Store 65(v14) 67 + Store 70(incomingPayload) 72 + 73: 16(int) Load 18(v2) + 76: 75(bool) IEqual 73 74 + SelectionMerge 78 None + BranchConditional 76 77 79 + 77: Label IgnoreIntersectionNV - Branch 79 - 80: Label + Branch 78 + 79: Label TerminateRayNV - Branch 79 - 79: Label + Branch 78 + 78: Label Return FunctionEnd diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index 80b5115c2..a84ef23ea 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -1,13 +1,13 @@ spv.ClosestHitShader.rchit // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 88 +// Id's are bound by 87 Capability RayTracingNV Extension "SPV_NV_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 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" @@ -34,16 +34,15 @@ spv.ClosestHitShader.rchit Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" - Name 53 "gl_HitTNV" - Name 56 "v12" - Name 58 "gl_HitKindNV" - Name 62 "v13" - Name 64 "gl_ObjectToWorldNV" - Name 66 "v14" - Name 67 "gl_WorldToObjectNV" - Name 71 "accNV" - Name 85 "localPayload" - Name 87 "incomingPayload" + Name 55 "v12" + Name 57 "gl_HitKindNV" + Name 61 "v13" + Name 63 "gl_ObjectToWorldNV" + Name 65 "v14" + Name 66 "gl_WorldToObjectNV" + Name 70 "accNV" + Name 84 "localPayload" + Name 86 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -55,14 +54,13 @@ spv.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTNV - Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR - Decorate 71(accNV) DescriptorSet 0 - Decorate 71(accNV) Binding 0 - Decorate 85(localPayload) Location 0 - Decorate 87(incomingPayload) Location 1 + Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR + Decorate 70(accNV) DescriptorSet 0 + Decorate 70(accNV) Binding 0 + Decorate 84(localPayload) Location 0 + Decorate 86(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -89,33 +87,32 @@ spv.ClosestHitShader.rchit 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input - 53(gl_HitTNV): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindNV): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldNV): 63(ptr) Variable Input -67(gl_WorldToObjectNV): 63(ptr) Variable Input - 69: TypeAccelerationStructureKHR - 70: TypePointer UniformConstant 69 - 71(accNV): 70(ptr) Variable UniformConstant - 73: 6(int) Constant 0 - 74: 6(int) Constant 1 - 75: 6(int) Constant 2 - 76: 6(int) Constant 3 - 77: 28(float) Constant 1056964608 - 78: 29(fvec3) ConstantComposite 77 77 77 - 79: 28(float) Constant 1065353216 - 80: 29(fvec3) ConstantComposite 79 79 79 - 81: 28(float) Constant 1061158912 - 82: 16(int) Constant 1 - 83: TypeVector 28(float) 4 - 84: TypePointer RayPayloadKHR 83(fvec4) -85(localPayload): 84(ptr) Variable RayPayloadKHR - 86: TypePointer IncomingRayPayloadKHR 83(fvec4) -87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindNV): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldNV): 62(ptr) Variable Input +66(gl_WorldToObjectNV): 62(ptr) Variable Input + 68: TypeAccelerationStructureKHR + 69: TypePointer UniformConstant 68 + 70(accNV): 69(ptr) Variable UniformConstant + 72: 6(int) Constant 0 + 73: 6(int) Constant 1 + 74: 6(int) Constant 2 + 75: 6(int) Constant 3 + 76: 28(float) Constant 1056964608 + 77: 29(fvec3) ConstantComposite 76 76 76 + 78: 28(float) Constant 1065353216 + 79: 29(fvec3) ConstantComposite 78 78 78 + 80: 28(float) Constant 1061158912 + 81: 16(int) Constant 1 + 82: TypeVector 28(float) 4 + 83: TypePointer RayPayloadKHR 82(fvec4) +84(localPayload): 83(ptr) Variable RayPayloadKHR + 85: TypePointer IncomingRayPayloadKHR 82(fvec4) +86(incomingPayload): 85(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -130,9 +127,9 @@ spv.ClosestHitShader.rchit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) @@ -155,15 +152,15 @@ spv.ClosestHitShader.rchit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTNV) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindNV) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldNV) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectNV) - Store 66(v14) 68 - 72: 69 Load 71(accNV) - TraceNV 72 73 74 75 76 73 78 77 80 81 82 + 53: 28(float) Load 50(gl_RayTmaxNV) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindNV) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldNV) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectNV) + Store 65(v14) 67 + 71: 68 Load 70(accNV) + TraceNV 71 72 73 74 75 72 77 76 79 80 81 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 02803ad6b..76e6738d0 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,7 +1,7 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 116 +// Id's are bound by 115 Capability GroupNonUniform Capability RayTracingKHR @@ -12,7 +12,7 @@ spv.ext.AnyHitShader.rahit Extension "SPV_KHR_ray_tracing_position_fetch" 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 82 88 93 107 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 92 106 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -42,23 +42,22 @@ spv.ext.AnyHitShader.rahit Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" - Name 53 "gl_HitTEXT" - Name 56 "v12" - Name 58 "gl_HitKindEXT" - Name 62 "v13" - Name 64 "gl_ObjectToWorldEXT" - Name 66 "v14" - Name 67 "gl_WorldToObjectEXT" - Name 69 "v15" - Name 70 "gl_GeometryIndexEXT" - Name 75 "v16" - Name 78 "v17" - Name 81 "v18" - Name 82 "gl_CullMaskEXT" - Name 84 "v19" - Name 88 "gl_HitTriangleVertexPositionsEXT" - Name 93 "incomingPayload" - Name 107 "gl_SubgroupSize" + Name 55 "v12" + Name 57 "gl_HitKindEXT" + Name 61 "v13" + Name 63 "gl_ObjectToWorldEXT" + Name 65 "v14" + Name 66 "gl_WorldToObjectEXT" + Name 68 "v15" + Name 69 "gl_GeometryIndexEXT" + Name 74 "v16" + Name 77 "v17" + Name 80 "v18" + Name 81 "gl_CullMaskEXT" + Name 83 "v19" + Name 87 "gl_HitTriangleVertexPositionsEXT" + Name 92 "incomingPayload" + Name 106 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -70,17 +69,16 @@ spv.ext.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR - Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR - Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR - Decorate 107(gl_SubgroupSize) RelaxedPrecision - Decorate 107(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR + Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR + Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 106(gl_SubgroupSize) RelaxedPrecision + Decorate 106(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 107 RelaxedPrecision Decorate 108 RelaxedPrecision - Decorate 109 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -107,34 +105,33 @@ spv.ext.AnyHitShader.rahit 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input - 53(gl_HitTEXT): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindEXT): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldEXT): 63(ptr) Variable Input -67(gl_WorldToObjectEXT): 63(ptr) Variable Input -70(gl_GeometryIndexEXT): 19(ptr) Variable Input - 72: TypeVector 28(float) 4 - 73: TypeMatrix 72(fvec4) 3 - 74: TypePointer Function 73 -82(gl_CullMaskEXT): 57(ptr) Variable Input - 85: 6(int) Constant 3 - 86: TypeArray 29(fvec3) 85 - 87: TypePointer Input 86 -88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input - 89: 16(int) Constant 0 - 92: TypePointer IncomingRayPayloadKHR 72(fvec4) -93(incomingPayload): 92(ptr) Variable IncomingRayPayloadKHR - 94: 28(float) Constant 1056964608 - 95: 72(fvec4) ConstantComposite 94 94 94 94 - 97: 16(int) Constant 1 - 98: TypeBool - 103: 6(int) Constant 0 -107(gl_SubgroupSize): 57(ptr) Variable Input - 110: TypePointer IncomingRayPayloadKHR 28(float) + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindEXT): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldEXT): 62(ptr) Variable Input +66(gl_WorldToObjectEXT): 62(ptr) Variable Input +69(gl_GeometryIndexEXT): 19(ptr) Variable Input + 71: TypeVector 28(float) 4 + 72: TypeMatrix 71(fvec4) 3 + 73: TypePointer Function 72 +81(gl_CullMaskEXT): 56(ptr) Variable Input + 84: 6(int) Constant 3 + 85: TypeArray 29(fvec3) 84 + 86: TypePointer Input 85 +87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input + 88: 16(int) Constant 0 + 91: TypePointer IncomingRayPayloadKHR 71(fvec4) +92(incomingPayload): 91(ptr) Variable IncomingRayPayloadKHR + 93: 28(float) Constant 1056964608 + 94: 71(fvec4) ConstantComposite 93 93 93 93 + 96: 16(int) Constant 1 + 97: TypeBool + 102: 6(int) Constant 0 +106(gl_SubgroupSize): 56(ptr) Variable Input + 109: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -149,14 +146,14 @@ spv.ext.AnyHitShader.rahit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function - 69(v15): 17(ptr) Variable Function - 75(v16): 74(ptr) Variable Function - 78(v17): 74(ptr) Variable Function - 81(v18): 55(ptr) Variable Function - 84(v19): 30(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function + 68(v15): 17(ptr) Variable Function + 74(v16): 73(ptr) Variable Function + 77(v17): 73(ptr) Variable Function + 80(v18): 54(ptr) Variable Function + 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -179,41 +176,41 @@ spv.ext.AnyHitShader.rahit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTEXT) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindEXT) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldEXT) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectEXT) - Store 66(v14) 68 - 71: 16(int) Load 70(gl_GeometryIndexEXT) - Store 69(v15) 71 - 76: 60 Load 64(gl_ObjectToWorldEXT) - 77: 73 Transpose 76 - Store 75(v16) 77 - 79: 60 Load 67(gl_WorldToObjectEXT) - 80: 73 Transpose 79 - Store 78(v17) 80 - 83: 6(int) Load 82(gl_CullMaskEXT) - Store 81(v18) 83 - 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 - 91: 29(fvec3) Load 90 - Store 84(v19) 91 - Store 93(incomingPayload) 95 - 96: 16(int) Load 18(v2) - 99: 98(bool) IEqual 96 97 - SelectionMerge 101 None - BranchConditional 99 100 101 - 100: Label + 53: 28(float) Load 50(gl_RayTmaxEXT) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindEXT) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldEXT) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectEXT) + Store 65(v14) 67 + 70: 16(int) Load 69(gl_GeometryIndexEXT) + Store 68(v15) 70 + 75: 59 Load 63(gl_ObjectToWorldEXT) + 76: 72 Transpose 75 + Store 74(v16) 76 + 78: 59 Load 66(gl_WorldToObjectEXT) + 79: 72 Transpose 78 + Store 77(v17) 79 + 82: 6(int) Load 81(gl_CullMaskEXT) + Store 80(v18) 82 + 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 + 90: 29(fvec3) Load 89 + Store 83(v19) 90 + Store 92(incomingPayload) 94 + 95: 16(int) Load 18(v2) + 98: 97(bool) IEqual 95 96 + SelectionMerge 100 None + BranchConditional 98 99 100 + 99: Label IgnoreIntersectionKHR - 101: Label - 108: 6(int) Load 107(gl_SubgroupSize) - 109: 28(float) ConvertUToF 108 - 111: 110(ptr) AccessChain 93(incomingPayload) 103 - 112: 28(float) Load 111 - 113: 28(float) FAdd 112 109 - 114: 110(ptr) AccessChain 93(incomingPayload) 103 - Store 114 113 + 100: Label + 107: 6(int) Load 106(gl_SubgroupSize) + 108: 28(float) ConvertUToF 107 + 110: 109(ptr) AccessChain 92(incomingPayload) 102 + 111: 28(float) Load 110 + 112: 28(float) FAdd 111 108 + 113: 109(ptr) AccessChain 92(incomingPayload) 102 + Store 113 112 TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 5cfc8a25b..3c1883bcc 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,7 +1,7 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 109 +// Id's are bound by 108 Capability RayTracingKHR Capability RayTracingPositionFetchKHR @@ -11,7 +11,7 @@ spv.ext.ClosestHitShader.rchit Extension "SPV_KHR_ray_tracing_position_fetch" 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 82 88 94 106 108 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 93 105 107 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -40,24 +40,23 @@ spv.ext.ClosestHitShader.rchit Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" - Name 53 "gl_HitTEXT" - Name 56 "v12" - Name 58 "gl_HitKindEXT" - Name 62 "v13" - Name 64 "gl_ObjectToWorldEXT" - Name 66 "v14" - Name 67 "gl_WorldToObjectEXT" - Name 69 "v15" - Name 70 "gl_GeometryIndexEXT" - Name 75 "v16" - Name 78 "v17" - Name 81 "v18" - Name 82 "gl_CullMaskEXT" - Name 84 "v19" - Name 88 "gl_HitTriangleVertexPositionsEXT" - Name 94 "accEXT" - Name 106 "incomingPayload" - Name 108 "localPayload" + Name 55 "v12" + Name 57 "gl_HitKindEXT" + Name 61 "v13" + Name 63 "gl_ObjectToWorldEXT" + Name 65 "v14" + Name 66 "gl_WorldToObjectEXT" + Name 68 "v15" + Name 69 "gl_GeometryIndexEXT" + Name 74 "v16" + Name 77 "v17" + Name 80 "v18" + Name 81 "gl_CullMaskEXT" + Name 83 "v19" + Name 87 "gl_HitTriangleVertexPositionsEXT" + Name 93 "accEXT" + Name 105 "incomingPayload" + Name 107 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -69,15 +68,14 @@ spv.ext.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR - Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR - Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR - Decorate 94(accEXT) DescriptorSet 0 - Decorate 94(accEXT) Binding 0 + Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR + Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR + Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 93(accEXT) DescriptorSet 0 + Decorate 93(accEXT) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -104,41 +102,40 @@ spv.ext.ClosestHitShader.rchit 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input - 53(gl_HitTEXT): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindEXT): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldEXT): 63(ptr) Variable Input -67(gl_WorldToObjectEXT): 63(ptr) Variable Input -70(gl_GeometryIndexEXT): 19(ptr) Variable Input - 72: TypeVector 28(float) 4 - 73: TypeMatrix 72(fvec4) 3 - 74: TypePointer Function 73 -82(gl_CullMaskEXT): 57(ptr) Variable Input - 85: 6(int) Constant 3 - 86: TypeArray 29(fvec3) 85 - 87: TypePointer Input 86 -88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input - 89: 16(int) Constant 0 - 92: TypeAccelerationStructureKHR - 93: TypePointer UniformConstant 92 - 94(accEXT): 93(ptr) Variable UniformConstant - 96: 6(int) Constant 0 - 97: 6(int) Constant 1 - 98: 6(int) Constant 2 - 99: 28(float) Constant 1056964608 - 100: 29(fvec3) ConstantComposite 99 99 99 - 101: 28(float) Constant 1065353216 - 102: 29(fvec3) ConstantComposite 101 101 101 - 103: 28(float) Constant 1061158912 - 104: 16(int) Constant 1 - 105: TypePointer IncomingRayPayloadKHR 72(fvec4) -106(incomingPayload): 105(ptr) Variable IncomingRayPayloadKHR - 107: TypePointer RayPayloadKHR 72(fvec4) -108(localPayload): 107(ptr) Variable RayPayloadKHR + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindEXT): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldEXT): 62(ptr) Variable Input +66(gl_WorldToObjectEXT): 62(ptr) Variable Input +69(gl_GeometryIndexEXT): 19(ptr) Variable Input + 71: TypeVector 28(float) 4 + 72: TypeMatrix 71(fvec4) 3 + 73: TypePointer Function 72 +81(gl_CullMaskEXT): 56(ptr) Variable Input + 84: 6(int) Constant 3 + 85: TypeArray 29(fvec3) 84 + 86: TypePointer Input 85 +87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input + 88: 16(int) Constant 0 + 91: TypeAccelerationStructureKHR + 92: TypePointer UniformConstant 91 + 93(accEXT): 92(ptr) Variable UniformConstant + 95: 6(int) Constant 0 + 96: 6(int) Constant 1 + 97: 6(int) Constant 2 + 98: 28(float) Constant 1056964608 + 99: 29(fvec3) ConstantComposite 98 98 98 + 100: 28(float) Constant 1065353216 + 101: 29(fvec3) ConstantComposite 100 100 100 + 102: 28(float) Constant 1061158912 + 103: 16(int) Constant 1 + 104: TypePointer IncomingRayPayloadKHR 71(fvec4) +105(incomingPayload): 104(ptr) Variable IncomingRayPayloadKHR + 106: TypePointer RayPayloadKHR 71(fvec4) +107(localPayload): 106(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -153,14 +150,14 @@ spv.ext.ClosestHitShader.rchit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function - 69(v15): 17(ptr) Variable Function - 75(v16): 74(ptr) Variable Function - 78(v17): 74(ptr) Variable Function - 81(v18): 55(ptr) Variable Function - 84(v19): 30(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function + 68(v15): 17(ptr) Variable Function + 74(v16): 73(ptr) Variable Function + 77(v17): 73(ptr) Variable Function + 80(v18): 54(ptr) Variable Function + 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -183,28 +180,28 @@ spv.ext.ClosestHitShader.rchit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTEXT) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindEXT) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldEXT) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectEXT) - Store 66(v14) 68 - 71: 16(int) Load 70(gl_GeometryIndexEXT) - Store 69(v15) 71 - 76: 60 Load 64(gl_ObjectToWorldEXT) - 77: 73 Transpose 76 - Store 75(v16) 77 - 79: 60 Load 67(gl_WorldToObjectEXT) - 80: 73 Transpose 79 - Store 78(v17) 80 - 83: 6(int) Load 82(gl_CullMaskEXT) - Store 81(v18) 83 - 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 - 91: 29(fvec3) Load 90 - Store 84(v19) 91 - 95: 92 Load 94(accEXT) - TraceRayKHR 95 96 97 98 85 96 100 99 102 103 106(incomingPayload) + 53: 28(float) Load 50(gl_RayTmaxEXT) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindEXT) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldEXT) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectEXT) + Store 65(v14) 67 + 70: 16(int) Load 69(gl_GeometryIndexEXT) + Store 68(v15) 70 + 75: 59 Load 63(gl_ObjectToWorldEXT) + 76: 72 Transpose 75 + Store 74(v16) 76 + 78: 59 Load 66(gl_WorldToObjectEXT) + 79: 72 Transpose 78 + Store 77(v17) 79 + 82: 6(int) Load 81(gl_CullMaskEXT) + Store 80(v18) 82 + 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 + 90: 29(fvec3) Load 89 + Store 83(v19) 90 + 94: 91 Load 93(accEXT) + TraceRayKHR 94 95 96 97 84 95 99 98 101 102 105(incomingPayload) Return FunctionEnd diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 64bffa892..0ac526bfb 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -268,7 +268,6 @@ enum TBuiltInVariable { EbvRayTmin, EbvRayTmax, EbvCullMask, - EbvHitT, EbvHitKind, EbvObjectToWorld, EbvObjectToWorld3x4, @@ -495,7 +494,6 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvObjectRayDirection: return "ObjectRayDirectionNV"; case EbvRayTmin: return "ObjectRayTminNV"; case EbvRayTmax: return "ObjectRayTmaxNV"; - case EbvHitT: return "HitTNV"; case EbvHitKind: return "HitKindNV"; case EbvIncomingRayFlags: return "IncomingRayFlagsNV"; case EbvObjectToWorld: return "ObjectToWorldNV"; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8e742eab4..a6ec68979 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -9209,8 +9209,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion 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); BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable); BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable); @@ -9229,6 +9227,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_HitKindFrontFacingMicroTriangleNV", EbvHitKindFrontFacingMicroTriangleNV, symbolTable); BuiltInVariable("gl_HitKindBackFacingMicroTriangleNV", EbvHitKindBackFacingMicroTriangleNV, symbolTable); + // gl_HitT variables are aliases of their gl_RayTmax counterparts. + RetargetVariable("gl_HitTNV", "gl_RayTmaxNV", symbolTable); + RetargetVariable("gl_HitTEXT", "gl_RayTmaxEXT", symbolTable); + // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot);