forked from KhronosGroup/glslang
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Allow runtime-sized arrays of acceleration structures
- Loading branch information
1 parent
625eb25
commit 8adc2f5
Showing
4 changed files
with
167 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
spv.RayGenShaderArray.rgen | ||
// Module Version 10000 | ||
// Generated by (magic number): 80007 | ||
// Id's are bound by 89 | ||
|
||
Capability ShaderNonUniformEXT | ||
Capability RuntimeDescriptorArrayEXT | ||
Capability RayTracingNV | ||
Extension "SPV_EXT_descriptor_indexing" | ||
Extension "SPV_NV_ray_tracing" | ||
1: ExtInstImport "GLSL.std.450" | ||
MemoryModel Logical GLSL450 | ||
EntryPoint RayGenerationNV 4 "main" 11 21 | ||
Source GLSL 460 | ||
SourceExtension "GL_EXT_nonuniform_qualifier" | ||
SourceExtension "GL_NV_ray_tracing" | ||
Name 4 "main" | ||
Name 8 "lx" | ||
Name 11 "gl_LaunchIDNV" | ||
Name 16 "ly" | ||
Name 20 "sx" | ||
Name 21 "gl_LaunchSizeNV" | ||
Name 24 "sy" | ||
Name 30 "accNV0" | ||
Name 34 "block" | ||
MemberName 34(block) 0 "dir" | ||
MemberName 34(block) 1 "origin" | ||
MemberName 34(block) 2 "i" | ||
Name 36 "" | ||
Name 60 "accNV1" | ||
Name 88 "payload" | ||
Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdNV | ||
Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeNV | ||
Decorate 30(accNV0) DescriptorSet 0 | ||
Decorate 30(accNV0) Binding 0 | ||
MemberDecorate 34(block) 0 Offset 0 | ||
MemberDecorate 34(block) 1 Offset 16 | ||
MemberDecorate 34(block) 2 Offset 28 | ||
Decorate 34(block) BufferBlock | ||
Decorate 60(accNV1) DescriptorSet 0 | ||
Decorate 60(accNV1) Binding 1 | ||
Decorate 75 DecorationNonUniformEXT | ||
Decorate 77 DecorationNonUniformEXT | ||
Decorate 88(payload) Location 0 | ||
2: TypeVoid | ||
3: TypeFunction 2 | ||
6: TypeInt 32 0 | ||
7: TypePointer Function 6(int) | ||
9: TypeVector 6(int) 3 | ||
10: TypePointer Input 9(ivec3) | ||
11(gl_LaunchIDNV): 10(ptr) Variable Input | ||
12: 6(int) Constant 0 | ||
13: TypePointer Input 6(int) | ||
17: 6(int) Constant 1 | ||
21(gl_LaunchSizeNV): 10(ptr) Variable Input | ||
27: TypeAccelerationStructureNV | ||
28: TypeRuntimeArray 27 | ||
29: TypePointer UniformConstant 28 | ||
30(accNV0): 29(ptr) Variable UniformConstant | ||
31: TypeFloat 32 | ||
32: TypeVector 31(float) 3 | ||
33: TypeInt 32 1 | ||
34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) | ||
35: TypePointer ShaderRecordBufferNV 34(block) | ||
36: 35(ptr) Variable ShaderRecordBufferNV | ||
37: 33(int) Constant 2 | ||
38: TypePointer ShaderRecordBufferNV 33(int) | ||
41: TypePointer UniformConstant 27 | ||
48: 33(int) Constant 1 | ||
49: TypePointer ShaderRecordBufferNV 32(fvec3) | ||
52: 31(float) Constant 1056964608 | ||
53: 33(int) Constant 0 | ||
56: 31(float) Constant 1061158912 | ||
57: 6(int) Constant 2 | ||
58: TypeArray 27 57 | ||
59: TypePointer UniformConstant 58 | ||
60(accNV1): 59(ptr) Variable UniformConstant | ||
86: TypeVector 31(float) 4 | ||
87: TypePointer RayPayloadNV 86(fvec4) | ||
88(payload): 87(ptr) Variable RayPayloadNV | ||
4(main): 2 Function None 3 | ||
5: Label | ||
8(lx): 7(ptr) Variable Function | ||
16(ly): 7(ptr) Variable Function | ||
20(sx): 7(ptr) Variable Function | ||
24(sy): 7(ptr) Variable Function | ||
14: 13(ptr) AccessChain 11(gl_LaunchIDNV) 12 | ||
15: 6(int) Load 14 | ||
Store 8(lx) 15 | ||
18: 13(ptr) AccessChain 11(gl_LaunchIDNV) 17 | ||
19: 6(int) Load 18 | ||
Store 16(ly) 19 | ||
22: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 12 | ||
23: 6(int) Load 22 | ||
Store 20(sx) 23 | ||
25: 13(ptr) AccessChain 21(gl_LaunchSizeNV) 17 | ||
26: 6(int) Load 25 | ||
Store 24(sy) 26 | ||
39: 38(ptr) AccessChain 36 37 | ||
40: 33(int) Load 39 | ||
42: 41(ptr) AccessChain 30(accNV0) 40 | ||
43: 27 Load 42 | ||
44: 6(int) Load 8(lx) | ||
45: 6(int) Load 16(ly) | ||
46: 6(int) Load 20(sx) | ||
47: 6(int) Load 24(sy) | ||
50: 49(ptr) AccessChain 36 48 | ||
51: 32(fvec3) Load 50 | ||
54: 49(ptr) AccessChain 36 53 | ||
55: 32(fvec3) Load 54 | ||
TraceNV 43 44 45 46 47 12 51 52 55 56 48 | ||
61: 38(ptr) AccessChain 36 37 | ||
62: 33(int) Load 61 | ||
63: 41(ptr) AccessChain 60(accNV1) 62 | ||
64: 27 Load 63 | ||
65: 6(int) Load 8(lx) | ||
66: 6(int) Load 16(ly) | ||
67: 6(int) Load 20(sx) | ||
68: 6(int) Load 24(sy) | ||
69: 49(ptr) AccessChain 36 48 | ||
70: 32(fvec3) Load 69 | ||
71: 49(ptr) AccessChain 36 53 | ||
72: 32(fvec3) Load 71 | ||
TraceNV 64 65 66 67 68 12 70 52 72 56 48 | ||
73: 38(ptr) AccessChain 36 37 | ||
74: 33(int) Load 73 | ||
75: 33(int) CopyObject 74 | ||
76: 41(ptr) AccessChain 30(accNV0) 75 | ||
77: 27 Load 76 | ||
78: 6(int) Load 8(lx) | ||
79: 6(int) Load 16(ly) | ||
80: 6(int) Load 20(sx) | ||
81: 6(int) Load 24(sy) | ||
82: 49(ptr) AccessChain 36 48 | ||
83: 32(fvec3) Load 82 | ||
84: 49(ptr) AccessChain 36 53 | ||
85: 32(fvec3) Load 84 | ||
TraceNV 77 78 79 80 81 12 83 52 85 56 48 | ||
Return | ||
FunctionEnd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#version 460 | ||
#extension GL_NV_ray_tracing : enable | ||
#extension GL_EXT_nonuniform_qualifier : enable | ||
layout(binding = 0, set = 0) uniform accelerationStructureNV accNV0[]; | ||
layout(binding = 1, set = 0) uniform accelerationStructureNV accNV1[2]; | ||
layout(location = 0) rayPayloadNV vec4 payload; | ||
layout(shaderRecordNV) buffer block | ||
{ | ||
vec3 dir; | ||
vec3 origin; | ||
int i; | ||
}; | ||
void main() | ||
{ | ||
uint lx = gl_LaunchIDNV.x; | ||
uint ly = gl_LaunchIDNV.y; | ||
uint sx = gl_LaunchSizeNV.x; | ||
uint sy = gl_LaunchSizeNV.y; | ||
traceNV(accNV0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); | ||
traceNV(accNV1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); | ||
traceNV(accNV0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters