1; SPIR-V
2; Version: 1.0
3; Generator: Google spiregg; 0
4; Bound: 181
5; Schema: 0
6               OpCapability Shader
7               OpExtension "SPV_GOOGLE_hlsl_functionality1"
8          %1 = OpExtInstImport "GLSL.std.450"
9               OpMemoryModel Logical GLSL450
10               OpEntryPoint Vertex %ScatterMainVS "main" %gl_VertexIndex %gl_InstanceIndex %out_var_TEXCOORD0 %out_var_TEXCOORD1 %out_var_TEXCOORD2 %out_var_TEXCOORD3 %out_var_TEXCOORD4 %out_var_TEXCOORD5 %out_var_TEXCOORD6 %gl_Position
11               OpSource HLSL 600
12               OpName %type__Globals "type.$Globals"
13               OpMemberName %type__Globals 0 "ViewportSize"
14               OpMemberName %type__Globals 1 "ScatteringScaling"
15               OpMemberName %type__Globals 2 "CocRadiusToCircumscribedRadius"
16               OpName %_Globals "$Globals"
17               OpName %type_StructuredBuffer_v4float "type.StructuredBuffer.v4float"
18               OpName %ScatterDrawList "ScatterDrawList"
19               OpName %out_var_TEXCOORD0 "out.var.TEXCOORD0"
20               OpName %out_var_TEXCOORD1 "out.var.TEXCOORD1"
21               OpName %out_var_TEXCOORD2 "out.var.TEXCOORD2"
22               OpName %out_var_TEXCOORD3 "out.var.TEXCOORD3"
23               OpName %out_var_TEXCOORD4 "out.var.TEXCOORD4"
24               OpName %out_var_TEXCOORD5 "out.var.TEXCOORD5"
25               OpName %out_var_TEXCOORD6 "out.var.TEXCOORD6"
26               OpName %ScatterMainVS "ScatterMainVS"
27               OpDecorate %gl_VertexIndex BuiltIn VertexIndex
28               OpDecorateString %gl_VertexIndex UserSemantic "SV_VertexID"
29               OpDecorate %gl_InstanceIndex BuiltIn InstanceIndex
30               OpDecorateString %gl_InstanceIndex UserSemantic "SV_InstanceID"
31               OpDecorateString %out_var_TEXCOORD0 UserSemantic "TEXCOORD0"
32               OpDecorateString %out_var_TEXCOORD1 UserSemantic "TEXCOORD1"
33               OpDecorateString %out_var_TEXCOORD2 UserSemantic "TEXCOORD2"
34               OpDecorateString %out_var_TEXCOORD3 UserSemantic "TEXCOORD3"
35               OpDecorateString %out_var_TEXCOORD4 UserSemantic "TEXCOORD4"
36               OpDecorateString %out_var_TEXCOORD5 UserSemantic "TEXCOORD5"
37               OpDecorateString %out_var_TEXCOORD6 UserSemantic "TEXCOORD6"
38               OpDecorate %gl_Position BuiltIn Position
39               OpDecorateString %gl_Position UserSemantic "SV_POSITION"
40               OpDecorate %out_var_TEXCOORD0 Location 0
41               OpDecorate %out_var_TEXCOORD1 Location 1
42               OpDecorate %out_var_TEXCOORD2 Location 2
43               OpDecorate %out_var_TEXCOORD3 Location 3
44               OpDecorate %out_var_TEXCOORD4 Location 4
45               OpDecorate %out_var_TEXCOORD5 Location 5
46               OpDecorate %out_var_TEXCOORD6 Location 6
47               OpDecorate %_Globals DescriptorSet 0
48               OpDecorate %_Globals Binding 1
49               OpDecorate %ScatterDrawList DescriptorSet 0
50               OpDecorate %ScatterDrawList Binding 0
51               OpMemberDecorate %type__Globals 0 Offset 0
52               OpMemberDecorate %type__Globals 1 Offset 16
53               OpMemberDecorate %type__Globals 2 Offset 20
54               OpDecorate %type__Globals Block
55               OpDecorate %_runtimearr_v4float ArrayStride 16
56               OpMemberDecorate %type_StructuredBuffer_v4float 0 Offset 0
57               OpMemberDecorate %type_StructuredBuffer_v4float 0 NonWritable
58               OpDecorate %type_StructuredBuffer_v4float BufferBlock
59      %float = OpTypeFloat 32
60    %v4float = OpTypeVector %float 4
61    %v2float = OpTypeVector %float 2
62        %int = OpTypeInt 32 1
63       %uint = OpTypeInt 32 0
64     %uint_2 = OpConstant %uint 2
65     %uint_4 = OpConstant %uint 4
66%_arr_v4float_uint_4 = OpTypeArray %v4float %uint_4
67  %float_0_5 = OpConstant %float 0.5
68      %int_0 = OpConstant %int 0
69      %int_1 = OpConstant %int 1
70    %float_1 = OpConstant %float 1
71    %uint_16 = OpConstant %uint 16
72    %float_0 = OpConstant %float 0
73     %uint_0 = OpConstant %uint 0
74     %uint_5 = OpConstant %uint 5
75     %uint_1 = OpConstant %uint 1
76      %int_3 = OpConstant %int 3
77 %float_n0_5 = OpConstant %float -0.5
78      %int_2 = OpConstant %int 2
79    %float_2 = OpConstant %float 2
80         %39 = OpConstantComposite %v2float %float_2 %float_2
81         %40 = OpConstantComposite %v2float %float_1 %float_1
82         %41 = OpConstantComposite %v2float %float_0_5 %float_0_5
83%type__Globals = OpTypeStruct %v4float %float %float
84%_ptr_Uniform_type__Globals = OpTypePointer Uniform %type__Globals
85%_runtimearr_v4float = OpTypeRuntimeArray %v4float
86%type_StructuredBuffer_v4float = OpTypeStruct %_runtimearr_v4float
87%_ptr_Uniform_type_StructuredBuffer_v4float = OpTypePointer Uniform %type_StructuredBuffer_v4float
88%_ptr_Input_uint = OpTypePointer Input %uint
89%_ptr_Output_v2float = OpTypePointer Output %v2float
90%_ptr_Output_v4float = OpTypePointer Output %v4float
91       %void = OpTypeVoid
92         %48 = OpTypeFunction %void
93%_ptr_Function_v2float = OpTypePointer Function %v2float
94%_ptr_Function_v4float = OpTypePointer Function %v4float
95%_ptr_Function__arr_v4float_uint_4 = OpTypePointer Function %_arr_v4float_uint_4
96%_arr_float_uint_4 = OpTypeArray %float %uint_4
97%_ptr_Function__arr_float_uint_4 = OpTypePointer Function %_arr_float_uint_4
98%_arr_v2float_uint_4 = OpTypeArray %v2float %uint_4
99%_ptr_Function__arr_v2float_uint_4 = OpTypePointer Function %_arr_v2float_uint_4
100%_ptr_Function_float = OpTypePointer Function %float
101       %bool = OpTypeBool
102%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
103%_ptr_Uniform_float = OpTypePointer Uniform %float
104   %_Globals = OpVariable %_ptr_Uniform_type__Globals Uniform
105%ScatterDrawList = OpVariable %_ptr_Uniform_type_StructuredBuffer_v4float Uniform
106%gl_VertexIndex = OpVariable %_ptr_Input_uint Input
107%gl_InstanceIndex = OpVariable %_ptr_Input_uint Input
108%out_var_TEXCOORD0 = OpVariable %_ptr_Output_v2float Output
109%out_var_TEXCOORD1 = OpVariable %_ptr_Output_v4float Output
110%out_var_TEXCOORD2 = OpVariable %_ptr_Output_v4float Output
111%out_var_TEXCOORD3 = OpVariable %_ptr_Output_v4float Output
112%out_var_TEXCOORD4 = OpVariable %_ptr_Output_v4float Output
113%out_var_TEXCOORD5 = OpVariable %_ptr_Output_v4float Output
114%out_var_TEXCOORD6 = OpVariable %_ptr_Output_v4float Output
115%gl_Position = OpVariable %_ptr_Output_v4float Output
116%ScatterMainVS = OpFunction %void None %48
117         %60 = OpLabel
118         %61 = OpVariable %_ptr_Function__arr_v4float_uint_4 Function
119         %62 = OpVariable %_ptr_Function__arr_float_uint_4 Function
120         %63 = OpVariable %_ptr_Function__arr_v2float_uint_4 Function
121         %64 = OpLoad %uint %gl_VertexIndex
122         %65 = OpLoad %uint %gl_InstanceIndex
123         %66 = OpUDiv %uint %64 %uint_4
124         %67 = OpIMul %uint %66 %uint_4
125         %68 = OpISub %uint %64 %67
126         %69 = OpIMul %uint %uint_16 %65
127         %70 = OpIAdd %uint %69 %66
128               OpBranch %71
129         %71 = OpLabel
130         %72 = OpPhi %float %float_0 %60 %73 %74
131         %75 = OpPhi %uint %uint_0 %60 %76 %74
132         %77 = OpULessThan %bool %75 %uint_4
133               OpLoopMerge %78 %74 Unroll
134               OpBranchConditional %77 %79 %78
135         %79 = OpLabel
136         %80 = OpIMul %uint %uint_5 %70
137         %81 = OpIAdd %uint %80 %75
138         %82 = OpIAdd %uint %81 %uint_1
139         %83 = OpAccessChain %_ptr_Uniform_v4float %ScatterDrawList %int_0 %82
140         %84 = OpLoad %v4float %83
141         %85 = OpCompositeExtract %float %84 0
142         %86 = OpCompositeExtract %float %84 1
143         %87 = OpCompositeExtract %float %84 2
144         %88 = OpCompositeConstruct %v4float %85 %86 %87 %float_0
145         %89 = OpAccessChain %_ptr_Function_v4float %61 %75
146               OpStore %89 %88
147         %90 = OpCompositeExtract %float %84 3
148         %91 = OpAccessChain %_ptr_Function_float %62 %75
149               OpStore %91 %90
150         %92 = OpIEqual %bool %75 %uint_0
151               OpSelectionMerge %74 None
152               OpBranchConditional %92 %93 %94
153         %93 = OpLabel
154         %95 = OpLoad %float %91
155               OpBranch %74
156         %94 = OpLabel
157         %96 = OpLoad %float %91
158         %97 = OpExtInst %float %1 FMax %72 %96
159               OpBranch %74
160         %74 = OpLabel
161         %73 = OpPhi %float %95 %93 %97 %94
162         %98 = OpLoad %float %91
163         %99 = OpFDiv %float %float_n0_5 %98
164        %100 = OpAccessChain %_ptr_Function_float %63 %75 %int_0
165               OpStore %100 %99
166        %101 = OpLoad %float %91
167        %102 = OpFMul %float %float_0_5 %101
168        %103 = OpFAdd %float %102 %float_0_5
169        %104 = OpAccessChain %_ptr_Function_float %63 %75 %int_1
170               OpStore %104 %103
171         %76 = OpIAdd %uint %75 %uint_1
172               OpBranch %71
173         %78 = OpLabel
174        %105 = OpAccessChain %_ptr_Function_v4float %61 %int_0
175        %106 = OpLoad %v4float %105
176        %107 = OpCompositeExtract %float %106 0
177        %108 = OpCompositeExtract %float %106 1
178        %109 = OpCompositeExtract %float %106 2
179        %110 = OpAccessChain %_ptr_Function_float %62 %int_0
180        %111 = OpLoad %float %110
181        %112 = OpCompositeConstruct %v4float %107 %108 %109 %111
182        %113 = OpAccessChain %_ptr_Function_v4float %61 %int_1
183        %114 = OpLoad %v4float %113
184        %115 = OpCompositeExtract %float %114 0
185        %116 = OpCompositeExtract %float %114 1
186        %117 = OpCompositeExtract %float %114 2
187        %118 = OpAccessChain %_ptr_Function_float %62 %int_1
188        %119 = OpLoad %float %118
189        %120 = OpCompositeConstruct %v4float %115 %116 %117 %119
190        %121 = OpAccessChain %_ptr_Function_v4float %61 %int_2
191        %122 = OpLoad %v4float %121
192        %123 = OpCompositeExtract %float %122 0
193        %124 = OpCompositeExtract %float %122 1
194        %125 = OpCompositeExtract %float %122 2
195        %126 = OpAccessChain %_ptr_Function_float %62 %int_2
196        %127 = OpLoad %float %126
197        %128 = OpCompositeConstruct %v4float %123 %124 %125 %127
198        %129 = OpAccessChain %_ptr_Function_v4float %61 %int_3
199        %130 = OpLoad %v4float %129
200        %131 = OpCompositeExtract %float %130 0
201        %132 = OpCompositeExtract %float %130 1
202        %133 = OpCompositeExtract %float %130 2
203        %134 = OpAccessChain %_ptr_Function_float %62 %int_3
204        %135 = OpLoad %float %134
205        %136 = OpCompositeConstruct %v4float %131 %132 %133 %135
206        %137 = OpAccessChain %_ptr_Uniform_float %_Globals %int_1
207        %138 = OpLoad %float %137
208        %139 = OpCompositeConstruct %v2float %138 %138
209        %140 = OpIMul %uint %uint_5 %70
210        %141 = OpAccessChain %_ptr_Uniform_v4float %ScatterDrawList %int_0 %140
211        %142 = OpLoad %v4float %141
212        %143 = OpVectorShuffle %v2float %142 %142 0 1
213        %144 = OpFMul %v2float %139 %143
214        %145 = OpAccessChain %_ptr_Function_v2float %63 %int_0
215        %146 = OpLoad %v2float %145
216        %147 = OpAccessChain %_ptr_Function_v2float %63 %int_1
217        %148 = OpLoad %v2float %147
218        %149 = OpVectorShuffle %v4float %146 %148 0 1 2 3
219        %150 = OpAccessChain %_ptr_Function_v2float %63 %int_2
220        %151 = OpLoad %v2float %150
221        %152 = OpAccessChain %_ptr_Function_v2float %63 %int_3
222        %153 = OpLoad %v2float %152
223        %154 = OpVectorShuffle %v4float %151 %153 0 1 2 3
224        %155 = OpUMod %uint %68 %uint_2
225        %156 = OpConvertUToF %float %155
226        %157 = OpUDiv %uint %68 %uint_2
227        %158 = OpConvertUToF %float %157
228        %159 = OpCompositeConstruct %v2float %156 %158
229        %160 = OpFMul %v2float %159 %39
230        %161 = OpFSub %v2float %160 %40
231        %162 = OpAccessChain %_ptr_Uniform_float %_Globals %int_2
232        %163 = OpLoad %float %162
233        %164 = OpFMul %float %72 %163
234        %165 = OpFAdd %float %164 %float_1
235        %166 = OpCompositeConstruct %v2float %165 %165
236        %167 = OpFMul %v2float %166 %161
237        %168 = OpFAdd %v2float %167 %144
238        %169 = OpFAdd %v2float %168 %41
239        %170 = OpAccessChain %_ptr_Uniform_v4float %_Globals %int_0
240        %171 = OpLoad %v4float %170
241        %172 = OpVectorShuffle %v2float %171 %171 2 3
242        %173 = OpFMul %v2float %169 %172
243        %174 = OpCompositeExtract %float %173 0
244        %175 = OpFMul %float %174 %float_2
245        %176 = OpFSub %float %175 %float_1
246        %177 = OpCompositeExtract %float %173 1
247        %178 = OpFMul %float %177 %float_2
248        %179 = OpFSub %float %float_1 %178
249        %180 = OpCompositeConstruct %v4float %176 %179 %float_0 %float_1
250               OpStore %out_var_TEXCOORD0 %144
251               OpStore %out_var_TEXCOORD1 %112
252               OpStore %out_var_TEXCOORD2 %120
253               OpStore %out_var_TEXCOORD3 %128
254               OpStore %out_var_TEXCOORD4 %136
255               OpStore %out_var_TEXCOORD5 %149
256               OpStore %out_var_TEXCOORD6 %154
257               OpStore %gl_Position %180
258               OpReturn
259               OpFunctionEnd
260