+++ /dev/null
-rayQuery-decls.rgen
-// Module Version 10000
-// Generated by (magic number): 80008
-// Id's are bound by 130
-
- Capability RayQueryProvisionalKHR
- Capability RayTracingNV
- Extension "SPV_KHR_ray_query"
- Extension "SPV_NV_ray_tracing"
- 1: ExtInstImport "GLSL.std.450"
- MemoryModel Logical GLSL450
- EntryPoint RayGenerationKHR 4 "main" 12 17
- Source GLSL 460
- SourceExtension "GL_EXT_ray_query"
- SourceExtension "GL_NV_ray_tracing"
- Name 4 "main"
- Name 8 "launchIndex("
- Name 12 "gl_LaunchIDNV"
- Name 17 "gl_LaunchSizeNV"
- Name 38 "index"
- Name 42 "Ray"
- MemberName 42(Ray) 0 "pos"
- MemberName 42(Ray) 1 "tmin"
- MemberName 42(Ray) 2 "dir"
- MemberName 42(Ray) 3 "tmax"
- Name 44 "ray"
- Name 45 "Ray"
- MemberName 45(Ray) 0 "pos"
- MemberName 45(Ray) 1 "tmin"
- MemberName 45(Ray) 2 "dir"
- MemberName 45(Ray) 3 "tmax"
- Name 47 "Rays"
- MemberName 47(Rays) 0 "rays"
- Name 49 ""
- Name 73 "g_rayQueryArray"
- Name 74 "block"
- MemberName 74(block) 0 "idx"
- Name 76 ""
- Name 81 "rayQuery0b"
- Name 86 "rayQuery0a"
- Name 89 "rayQuery0c"
- Name 96 "rtas"
- Name 107 "rayQuery1c"
- Name 129 "g_rayQueryUnused"
- Decorate 12(gl_LaunchIDNV) BuiltIn LaunchIdKHR
- Decorate 17(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR
- MemberDecorate 45(Ray) 0 Offset 0
- MemberDecorate 45(Ray) 1 Offset 12
- MemberDecorate 45(Ray) 2 Offset 16
- MemberDecorate 45(Ray) 3 Offset 28
- Decorate 46 ArrayStride 32
- MemberDecorate 47(Rays) 0 Offset 0
- Decorate 47(Rays) BufferBlock
- Decorate 49 DescriptorSet 0
- Decorate 49 Binding 2
- MemberDecorate 74(block) 0 Offset 0
- Decorate 74(block) BufferBlock
- Decorate 96(rtas) DescriptorSet 0
- Decorate 96(rtas) Binding 0
- 2: TypeVoid
- 3: TypeFunction 2
- 6: TypeInt 32 0
- 7: TypeFunction 6(int)
- 10: TypeVector 6(int) 3
- 11: TypePointer Input 10(ivec3)
-12(gl_LaunchIDNV): 11(ptr) Variable Input
- 13: 6(int) Constant 2
- 14: TypePointer Input 6(int)
-17(gl_LaunchSizeNV): 11(ptr) Variable Input
- 18: 6(int) Constant 0
- 22: 6(int) Constant 1
- 37: TypePointer Function 6(int)
- 40: TypeFloat 32
- 41: TypeVector 40(float) 3
- 42(Ray): TypeStruct 41(fvec3) 40(float) 41(fvec3) 40(float)
- 43: TypePointer Function 42(Ray)
- 45(Ray): TypeStruct 41(fvec3) 40(float) 41(fvec3) 40(float)
- 46: TypeRuntimeArray 45(Ray)
- 47(Rays): TypeStruct 46
- 48: TypePointer Uniform 47(Rays)
- 49: 48(ptr) Variable Uniform
- 50: TypeInt 32 1
- 51: 50(int) Constant 0
- 53: TypePointer Uniform 45(Ray)
- 57: TypePointer Function 41(fvec3)
- 60: 50(int) Constant 1
- 61: TypePointer Function 40(float)
- 64: 50(int) Constant 2
- 67: 50(int) Constant 3
- 69: TypeRayQueryProvisionalKHR
- 70: 6(int) Constant 4
- 71: TypeArray 69 70
- 72: TypePointer Function 71
- 74(block): TypeStruct 6(int)
- 75: TypePointer ShaderRecordBufferKHR 74(block)
- 76: 75(ptr) Variable ShaderRecordBufferKHR
- 77: TypePointer ShaderRecordBufferKHR 6(int)
- 80: TypePointer Function 69
- 94: TypeAccelerationStructureKHR
- 95: TypePointer UniformConstant 94
- 96(rtas): 95(ptr) Variable UniformConstant
- 98: 6(int) Constant 16
- 109: 6(int) Constant 32
- 119: 6(int) Constant 3
- 120: 6(int) Constant 64
- 4(main): 2 Function None 3
- 5: Label
- 38(index): 37(ptr) Variable Function
- 44(ray): 43(ptr) Variable Function
-73(g_rayQueryArray): 72(ptr) Variable Function
- 81(rayQuery0b): 80(ptr) Variable Function
- 86(rayQuery0a): 80(ptr) Variable Function
- 89(rayQuery0c): 80(ptr) Variable Function
- 107(rayQuery1c): 80(ptr) Variable Function
-129(g_rayQueryUnused): 80(ptr) Variable Function
- 39: 6(int) FunctionCall 8(launchIndex()
- Store 38(index) 39
- 52: 6(int) Load 38(index)
- 54: 53(ptr) AccessChain 49 51 52
- 55: 45(Ray) Load 54
- 56: 41(fvec3) CompositeExtract 55 0
- 58: 57(ptr) AccessChain 44(ray) 51
- Store 58 56
- 59: 40(float) CompositeExtract 55 1
- 62: 61(ptr) AccessChain 44(ray) 60
- Store 62 59
- 63: 41(fvec3) CompositeExtract 55 2
- 65: 57(ptr) AccessChain 44(ray) 64
- Store 65 63
- 66: 40(float) CompositeExtract 55 3
- 68: 61(ptr) AccessChain 44(ray) 67
- Store 68 66
- 78: 77(ptr) AccessChain 76 51
- 79: 6(int) Load 78
- 82: 69 Load 81(rayQuery0b)
- 83: 80(ptr) AccessChain 73(g_rayQueryArray) 79
- Store 83 82
- 84: 77(ptr) AccessChain 76 51
- 85: 6(int) Load 84
- 87: 69 Load 86(rayQuery0a)
- 88: 80(ptr) AccessChain 73(g_rayQueryArray) 85
- Store 88 87
- 90: 77(ptr) AccessChain 76 51
- 91: 6(int) Load 90
- 92: 80(ptr) AccessChain 73(g_rayQueryArray) 91
- 93: 69 Load 92
- Store 89(rayQuery0c) 93
- 97: 94 Load 96(rtas)
- 99: 57(ptr) AccessChain 44(ray) 51
- 100: 41(fvec3) Load 99
- 101: 61(ptr) AccessChain 44(ray) 60
- 102: 40(float) Load 101
- 103: 57(ptr) AccessChain 44(ray) 64
- 104: 41(fvec3) Load 103
- 105: 61(ptr) AccessChain 44(ray) 67
- 106: 40(float) Load 105
- RayQueryInitializeKHR 89(rayQuery0c) 97 22 98 100 102 104 106
- 108: 94 Load 96(rtas)
- 110: 57(ptr) AccessChain 44(ray) 51
- 111: 41(fvec3) Load 110
- 112: 61(ptr) AccessChain 44(ray) 60
- 113: 40(float) Load 112
- 114: 57(ptr) AccessChain 44(ray) 64
- 115: 41(fvec3) Load 114
- 116: 61(ptr) AccessChain 44(ray) 67
- 117: 40(float) Load 116
- RayQueryInitializeKHR 107(rayQuery1c) 108 22 109 111 113 115 117
- 118: 94 Load 96(rtas)
- 121: 57(ptr) AccessChain 44(ray) 51
- 122: 41(fvec3) Load 121
- 123: 61(ptr) AccessChain 44(ray) 60
- 124: 40(float) Load 123
- 125: 57(ptr) AccessChain 44(ray) 64
- 126: 41(fvec3) Load 125
- 127: 61(ptr) AccessChain 44(ray) 67
- 128: 40(float) Load 127
- RayQueryInitializeKHR 107(rayQuery1c) 118 119 120 122 124 126 128
- Return
- FunctionEnd
- 8(launchIndex(): 6(int) Function None 7
- 9: Label
- 15: 14(ptr) AccessChain 12(gl_LaunchIDNV) 13
- 16: 6(int) Load 15
- 19: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 18
- 20: 6(int) Load 19
- 21: 6(int) IMul 16 20
- 23: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 22
- 24: 6(int) Load 23
- 25: 6(int) IMul 21 24
- 26: 14(ptr) AccessChain 12(gl_LaunchIDNV) 22
- 27: 6(int) Load 26
- 28: 14(ptr) AccessChain 17(gl_LaunchSizeNV) 18
- 29: 6(int) Load 28
- 30: 6(int) IMul 27 29
- 31: 6(int) IAdd 25 30
- 32: 14(ptr) AccessChain 12(gl_LaunchIDNV) 18
- 33: 6(int) Load 32
- 34: 6(int) IAdd 31 33
- ReturnValue 34
- FunctionEnd
+++ /dev/null
-#version 460
-#extension GL_NV_ray_tracing : enable
-#extension GL_EXT_ray_query : enable
-
-struct Ray
-{
- vec3 pos;
- float tmin;
- vec3 dir;
- float tmax;
-};
-
-layout(binding = 0, set = 0) uniform accelerationStructureEXT rtas;
-layout(std430, set = 0, binding = 2) buffer Rays { Ray rays[]; };
-layout(shaderRecordNV) buffer block
-{
- uint idx;
-};
-
-uint launchIndex()
-{
- return gl_LaunchIDNV.z*gl_LaunchSizeNV.x*gl_LaunchSizeNV.y + gl_LaunchIDNV.y*gl_LaunchSizeNV.x + gl_LaunchIDNV.x;
-}
-
-rayQueryEXT g_rayQueryArray[4];
-rayQueryEXT g_rayQueryUnused;
-
-void main()
-{
- uint index = launchIndex();
- Ray ray = rays[index];
-
- rayQueryEXT rayQuery0a;
- rayQueryEXT rayQuery0b;
-
- g_rayQueryArray[idx] = rayQuery0b; // Stored here, then overwritten with rayQuery0a
- g_rayQueryArray[idx] = rayQuery0a;
-
- // No separate allocation, just a handle copy
- // optimizations should have eliminated load from global array
- rayQueryEXT rayQuery0c = g_rayQueryArray[idx];
-
- // rayQuery0a is the one actually used here
- rayQueryInitializeEXT(rayQuery0c, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullBackFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
-
- // AllocateRayQuery occurs here, rather than next to allocas
- // Should not be extray allocate, since above should allocate and copy
- rayQueryEXT rayQuery1c;
- // update the rayFlags as RAY_FLAG_FORCE_OPAQUE
- rayQueryInitializeEXT(rayQuery1c, rtas, gl_RayFlagsOpaqueEXT, gl_RayFlagsCullFrontFacingTrianglesEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
-
- rayQueryInitializeEXT(rayQuery1c, rtas, gl_RayFlagsOpaqueEXT|gl_RayFlagsNoOpaqueEXT, gl_RayFlagsCullOpaqueEXT, ray.pos, ray.tmin, ray.dir, ray.tmax);
-}