1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 93
5; Schema: 0
6               OpCapability Shader
7               OpCapability ShaderNonUniformEXT
8               OpCapability RuntimeDescriptorArrayEXT
9               OpCapability UniformBufferArrayNonUniformIndexingEXT
10               OpCapability SampledImageArrayNonUniformIndexingEXT
11               OpCapability StorageBufferArrayNonUniformIndexingEXT
12               OpExtension "SPV_EXT_descriptor_indexing"
13          %1 = OpExtInstImport "GLSL.std.450"
14               OpMemoryModel Logical GLSL450
15               OpEntryPoint Fragment %main "main" %vIndex %FragColor %vUV
16               OpExecutionMode %main OriginUpperLeft
17               OpSource GLSL 450
18               OpSourceExtension "GL_EXT_nonuniform_qualifier"
19               OpName %main "main"
20               OpName %i "i"
21               OpName %vIndex "vIndex"
22               OpName %FragColor "FragColor"
23               OpName %uSamplers "uSamplers"
24               OpName %uSamps "uSamps"
25               OpName %vUV "vUV"
26               OpName %uCombinedSamplers "uCombinedSamplers"
27               OpName %UBO "UBO"
28               OpMemberName %UBO 0 "v"
29               OpName %ubos "ubos"
30               OpName %SSBO "SSBO"
31               OpMemberName %SSBO 0 "v"
32               OpName %ssbos "ssbos"
33               OpDecorate %vIndex Flat
34               OpDecorate %vIndex Location 0
35               OpDecorate %FragColor Location 0
36               OpDecorate %uSamplers DescriptorSet 0
37               OpDecorate %uSamplers Binding 0
38
39               OpDecorate %sampled_image NonUniformEXT
40               OpDecorate %combined_sampler NonUniformEXT
41               OpDecorate %ubo_ptr_copy NonUniformEXT
42               OpDecorate %ssbo_ptr_copy NonUniformEXT
43
44               OpDecorate %uSamps DescriptorSet 0
45               OpDecorate %uSamps Binding 1
46               OpDecorate %vUV Location 1
47               OpDecorate %uCombinedSamplers DescriptorSet 0
48               OpDecorate %uCombinedSamplers Binding 4
49               OpDecorate %_arr_v4float_uint_64 ArrayStride 16
50               OpMemberDecorate %UBO 0 Offset 0
51               OpDecorate %UBO Block
52               OpDecorate %ubos DescriptorSet 0
53               OpDecorate %ubos Binding 2
54               OpDecorate %_runtimearr_v4float ArrayStride 16
55               OpMemberDecorate %SSBO 0 NonWritable
56               OpMemberDecorate %SSBO 0 Offset 0
57               OpDecorate %SSBO BufferBlock
58               OpDecorate %ssbos DescriptorSet 0
59               OpDecorate %ssbos Binding 3
60       %void = OpTypeVoid
61          %3 = OpTypeFunction %void
62        %int = OpTypeInt 32 1
63%_ptr_Function_int = OpTypePointer Function %int
64%_ptr_Input_int = OpTypePointer Input %int
65     %vIndex = OpVariable %_ptr_Input_int Input
66      %float = OpTypeFloat 32
67    %v4float = OpTypeVector %float 4
68%_ptr_Output_v4float = OpTypePointer Output %v4float
69  %FragColor = OpVariable %_ptr_Output_v4float Output
70         %16 = OpTypeImage %float 2D 0 0 0 1 Unknown
71%_runtimearr_16 = OpTypeRuntimeArray %16
72%_ptr_UniformConstant__runtimearr_16 = OpTypePointer UniformConstant %_runtimearr_16
73  %uSamplers = OpVariable %_ptr_UniformConstant__runtimearr_16 UniformConstant
74     %int_10 = OpConstant %int 10
75%_ptr_UniformConstant_16 = OpTypePointer UniformConstant %16
76         %27 = OpTypeSampler
77%_runtimearr_27 = OpTypeRuntimeArray %27
78%_ptr_UniformConstant__runtimearr_27 = OpTypePointer UniformConstant %_runtimearr_27
79     %uSamps = OpVariable %_ptr_UniformConstant__runtimearr_27 UniformConstant
80     %int_40 = OpConstant %int 40
81%_ptr_UniformConstant_27 = OpTypePointer UniformConstant %27
82         %38 = OpTypeSampledImage %16
83    %v2float = OpTypeVector %float 2
84%_ptr_Input_v2float = OpTypePointer Input %v2float
85        %vUV = OpVariable %_ptr_Input_v2float Input
86%_runtimearr_38 = OpTypeRuntimeArray %38
87%_ptr_UniformConstant__runtimearr_38 = OpTypePointer UniformConstant %_runtimearr_38
88%uCombinedSamplers = OpVariable %_ptr_UniformConstant__runtimearr_38 UniformConstant
89%_ptr_UniformConstant_38 = OpTypePointer UniformConstant %38
90       %uint = OpTypeInt 32 0
91    %uint_64 = OpConstant %uint 64
92%_arr_v4float_uint_64 = OpTypeArray %v4float %uint_64
93        %UBO = OpTypeStruct %_arr_v4float_uint_64
94%_runtimearr_UBO = OpTypeRuntimeArray %UBO
95%_ptr_Uniform__runtimearr_UBO = OpTypePointer Uniform %_runtimearr_UBO
96       %ubos = OpVariable %_ptr_Uniform__runtimearr_UBO Uniform
97     %int_20 = OpConstant %int 20
98      %int_0 = OpConstant %int 0
99%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
100%_runtimearr_v4float = OpTypeRuntimeArray %v4float
101       %SSBO = OpTypeStruct %_runtimearr_v4float
102%_runtimearr_SSBO = OpTypeRuntimeArray %SSBO
103%_ptr_Uniform__runtimearr_SSBO = OpTypePointer Uniform %_runtimearr_SSBO
104      %ssbos = OpVariable %_ptr_Uniform__runtimearr_SSBO Uniform
105     %int_50 = OpConstant %int 50
106     %int_60 = OpConstant %int 60
107       %main = OpFunction %void None %3
108          %5 = OpLabel
109          %i = OpVariable %_ptr_Function_int Function
110         %11 = OpLoad %int %vIndex
111               OpStore %i %11
112         %20 = OpLoad %int %i
113         %22 = OpIAdd %int %20 %int_10
114         %23 = OpCopyObject %int %22
115         %25 = OpAccessChain %_ptr_UniformConstant_16 %uSamplers %23
116         %26 = OpLoad %16 %25
117         %31 = OpLoad %int %i
118         %33 = OpIAdd %int %31 %int_40
119         %34 = OpCopyObject %int %33
120         %36 = OpAccessChain %_ptr_UniformConstant_27 %uSamps %34
121         %37 = OpLoad %27 %36
122         %sampled_image = OpSampledImage %38 %26 %37
123         %43 = OpLoad %v2float %vUV
124         %44 = OpImageSampleImplicitLod %v4float %sampled_image %43
125               OpStore %FragColor %44
126         %48 = OpLoad %int %i
127         %49 = OpIAdd %int %48 %int_10
128         %50 = OpCopyObject %int %49
129         %52 = OpAccessChain %_ptr_UniformConstant_38 %uCombinedSamplers %50
130         %combined_sampler = OpLoad %38 %52
131         %54 = OpLoad %v2float %vUV
132         %55 = OpImageSampleImplicitLod %v4float %combined_sampler %54
133               OpStore %FragColor %55
134         %63 = OpLoad %int %i
135         %65 = OpIAdd %int %63 %int_20
136         %66 = OpCopyObject %int %65
137         %68 = OpLoad %int %i
138         %69 = OpIAdd %int %68 %int_40
139         %70 = OpCopyObject %int %69
140         %ubo_ptr = OpAccessChain %_ptr_Uniform_v4float %ubos %66 %int_0 %70
141         %ubo_ptr_copy = OpCopyObject %_ptr_Uniform_v4float %ubo_ptr
142         %73 = OpLoad %v4float %ubo_ptr_copy
143         %74 = OpLoad %v4float %FragColor
144         %75 = OpFAdd %v4float %74 %73
145               OpStore %FragColor %75
146         %81 = OpLoad %int %i
147         %83 = OpIAdd %int %81 %int_50
148         %84 = OpCopyObject %int %83
149         %85 = OpLoad %int %i
150         %87 = OpIAdd %int %85 %int_60
151         %88 = OpCopyObject %int %87
152         %ssbo_ptr = OpAccessChain %_ptr_Uniform_v4float %ssbos %84 %int_0 %88
153         %ssbo_ptr_copy = OpCopyObject %_ptr_Uniform_v4float %ssbo_ptr
154         %90 = OpLoad %v4float %ssbo_ptr_copy
155         %91 = OpLoad %v4float %FragColor
156         %92 = OpFAdd %v4float %91 %90
157               OpStore %FragColor %92
158               OpReturn
159               OpFunctionEnd
160