445 lines
19 KiB
Plaintext
445 lines
19 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 279
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
%40 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Vertex %vert_main "vert_main" %tint_pointsize %tint_symbol_1 %tint_symbol_2 %tint_symbol %tint_symbol_4
|
|
OpEntryPoint Fragment %frag_main "frag_main" %tint_symbol_7
|
|
OpEntryPoint GLCompute %comp_main "comp_main" %tint_symbol_9
|
|
OpExecutionMode %frag_main OriginUpperLeft
|
|
OpExecutionMode %comp_main LocalSize 1 1 1
|
|
OpName %tint_pointsize "tint_pointsize"
|
|
OpName %tint_symbol "tint_symbol"
|
|
OpName %tint_symbol_1 "tint_symbol_1"
|
|
OpName %tint_symbol_2 "tint_symbol_2"
|
|
OpName %tint_symbol_4 "tint_symbol_4"
|
|
OpName %tint_symbol_7 "tint_symbol_7"
|
|
OpName %SimParams "SimParams"
|
|
OpMemberName %SimParams 0 "deltaT"
|
|
OpMemberName %SimParams 1 "rule1Distance"
|
|
OpMemberName %SimParams 2 "rule2Distance"
|
|
OpMemberName %SimParams 3 "rule3Distance"
|
|
OpMemberName %SimParams 4 "rule1Scale"
|
|
OpMemberName %SimParams 5 "rule2Scale"
|
|
OpMemberName %SimParams 6 "rule3Scale"
|
|
OpName %params "params"
|
|
OpName %Particles "Particles"
|
|
OpMemberName %Particles 0 "particles"
|
|
OpName %Particle "Particle"
|
|
OpMemberName %Particle 0 "pos"
|
|
OpMemberName %Particle 1 "vel"
|
|
OpName %particlesA "particlesA"
|
|
OpName %particlesB "particlesB"
|
|
OpName %tint_symbol_9 "tint_symbol_9"
|
|
OpName %tint_symbol_5 "tint_symbol_5"
|
|
OpName %tint_symbol_3 "tint_symbol_3"
|
|
OpName %vert_main "vert_main"
|
|
OpName %angle "angle"
|
|
OpName %pos "pos"
|
|
OpName %tint_symbol_8 "tint_symbol_8"
|
|
OpName %tint_symbol_6 "tint_symbol_6"
|
|
OpName %frag_main "frag_main"
|
|
OpName %comp_main "comp_main"
|
|
OpName %index "index"
|
|
OpName %vPos "vPos"
|
|
OpName %vVel "vVel"
|
|
OpName %cMass "cMass"
|
|
OpName %cVel "cVel"
|
|
OpName %colVel "colVel"
|
|
OpName %cMassCount "cMassCount"
|
|
OpName %cVelCount "cVelCount"
|
|
OpName %pos_0 "pos"
|
|
OpName %vel "vel"
|
|
OpName %i "i"
|
|
OpDecorate %tint_pointsize BuiltIn PointSize
|
|
OpDecorate %tint_symbol Location 0
|
|
OpDecorate %tint_symbol_1 Location 1
|
|
OpDecorate %tint_symbol_2 Location 2
|
|
OpDecorate %tint_symbol_4 BuiltIn Position
|
|
OpDecorate %tint_symbol_7 Location 0
|
|
OpDecorate %SimParams Block
|
|
OpMemberDecorate %SimParams 0 Offset 0
|
|
OpMemberDecorate %SimParams 1 Offset 4
|
|
OpMemberDecorate %SimParams 2 Offset 8
|
|
OpMemberDecorate %SimParams 3 Offset 12
|
|
OpMemberDecorate %SimParams 4 Offset 16
|
|
OpMemberDecorate %SimParams 5 Offset 20
|
|
OpMemberDecorate %SimParams 6 Offset 24
|
|
OpDecorate %params NonWritable
|
|
OpDecorate %params Binding 0
|
|
OpDecorate %params DescriptorSet 0
|
|
OpDecorate %Particles Block
|
|
OpMemberDecorate %Particles 0 Offset 0
|
|
OpMemberDecorate %Particle 0 Offset 0
|
|
OpMemberDecorate %Particle 1 Offset 8
|
|
OpDecorate %_arr_Particle_uint_5 ArrayStride 16
|
|
OpDecorate %particlesA Binding 1
|
|
OpDecorate %particlesA DescriptorSet 0
|
|
OpDecorate %particlesB Binding 2
|
|
OpDecorate %particlesB DescriptorSet 0
|
|
OpDecorate %tint_symbol_9 BuiltIn GlobalInvocationId
|
|
%float = OpTypeFloat 32
|
|
%_ptr_Output_float = OpTypePointer Output %float
|
|
%4 = OpConstantNull %float
|
|
%tint_pointsize = OpVariable %_ptr_Output_float Output %4
|
|
%v2float = OpTypeVector %float 2
|
|
%_ptr_Input_v2float = OpTypePointer Input %v2float
|
|
%tint_symbol = OpVariable %_ptr_Input_v2float Input
|
|
%tint_symbol_1 = OpVariable %_ptr_Input_v2float Input
|
|
%tint_symbol_2 = OpVariable %_ptr_Input_v2float Input
|
|
%v4float = OpTypeVector %float 4
|
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
%13 = OpConstantNull %v4float
|
|
%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %13
|
|
%tint_symbol_7 = OpVariable %_ptr_Output_v4float Output %13
|
|
%SimParams = OpTypeStruct %float %float %float %float %float %float %float
|
|
%_ptr_Uniform_SimParams = OpTypePointer Uniform %SimParams
|
|
%params = OpVariable %_ptr_Uniform_SimParams Uniform
|
|
%Particle = OpTypeStruct %v2float %v2float
|
|
%uint = OpTypeInt 32 0
|
|
%uint_5 = OpConstant %uint 5
|
|
%_arr_Particle_uint_5 = OpTypeArray %Particle %uint_5
|
|
%Particles = OpTypeStruct %_arr_Particle_uint_5
|
|
%_ptr_StorageBuffer_Particles = OpTypePointer StorageBuffer %Particles
|
|
%particlesA = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
|
|
%particlesB = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
|
|
%v3uint = OpTypeVector %uint 3
|
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
%tint_symbol_9 = OpVariable %_ptr_Input_v3uint Input
|
|
%void = OpTypeVoid
|
|
%29 = OpTypeFunction %void %v4float
|
|
%34 = OpTypeFunction %void
|
|
%float_1 = OpConstant %float 1
|
|
%uint_0 = OpConstant %uint 0
|
|
%_ptr_Input_float = OpTypePointer Input %float
|
|
%uint_1 = OpConstant %uint 1
|
|
%_ptr_Function_float = OpTypePointer Function %float
|
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
%75 = OpConstantNull %v2float
|
|
%float_0 = OpConstant %float 0
|
|
%90 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
|
%_ptr_Input_uint = OpTypePointer Input %uint
|
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
|
%98 = OpConstantNull %uint
|
|
%bool = OpTypeBool
|
|
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
|
|
%113 = OpConstantComposite %v2float %float_0 %float_0
|
|
%int = OpTypeInt 32 1
|
|
%int_0 = OpConstant %int 0
|
|
%_ptr_Function_int = OpTypePointer Function %int
|
|
%121 = OpConstantNull %int
|
|
%_ptr_Uniform_float = OpTypePointer Uniform %float
|
|
%int_1 = OpConstant %int 1
|
|
%uint_2 = OpConstant %uint 2
|
|
%uint_3 = OpConstant %uint 3
|
|
%uint_4 = OpConstant %uint 4
|
|
%uint_6 = OpConstant %uint 6
|
|
%float_0_100000001 = OpConstant %float 0.100000001
|
|
%float_n1 = OpConstant %float -1
|
|
%tint_symbol_5 = OpFunction %void None %29
|
|
%tint_symbol_3 = OpFunctionParameter %v4float
|
|
%33 = OpLabel
|
|
OpStore %tint_symbol_4 %tint_symbol_3
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%vert_main = OpFunction %void None %34
|
|
%36 = OpLabel
|
|
%angle = OpVariable %_ptr_Function_float Function %4
|
|
%pos = OpVariable %_ptr_Function_v2float Function %75
|
|
OpStore %tint_pointsize %float_1
|
|
%43 = OpAccessChain %_ptr_Input_float %tint_symbol_1 %uint_0
|
|
%44 = OpLoad %float %43
|
|
%46 = OpAccessChain %_ptr_Input_float %tint_symbol_1 %uint_1
|
|
%47 = OpLoad %float %46
|
|
%39 = OpExtInst %float %40 Atan2 %44 %47
|
|
%38 = OpFNegate %float %39
|
|
OpStore %angle %38
|
|
%50 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_0
|
|
%51 = OpLoad %float %50
|
|
%53 = OpLoad %float %angle
|
|
%52 = OpExtInst %float %40 Cos %53
|
|
%54 = OpFMul %float %51 %52
|
|
%55 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_1
|
|
%56 = OpLoad %float %55
|
|
%58 = OpLoad %float %angle
|
|
%57 = OpExtInst %float %40 Sin %58
|
|
%59 = OpFMul %float %56 %57
|
|
%60 = OpFSub %float %54 %59
|
|
%61 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_0
|
|
%62 = OpLoad %float %61
|
|
%64 = OpLoad %float %angle
|
|
%63 = OpExtInst %float %40 Sin %64
|
|
%65 = OpFMul %float %62 %63
|
|
%66 = OpAccessChain %_ptr_Input_float %tint_symbol_2 %uint_1
|
|
%67 = OpLoad %float %66
|
|
%69 = OpLoad %float %angle
|
|
%68 = OpExtInst %float %40 Cos %69
|
|
%70 = OpFMul %float %67 %68
|
|
%71 = OpFAdd %float %65 %70
|
|
%72 = OpCompositeConstruct %v2float %60 %71
|
|
OpStore %pos %72
|
|
%77 = OpLoad %v2float %pos
|
|
%78 = OpLoad %v2float %tint_symbol
|
|
%79 = OpFAdd %v2float %77 %78
|
|
%80 = OpCompositeExtract %float %79 0
|
|
%81 = OpCompositeExtract %float %79 1
|
|
%83 = OpCompositeConstruct %v4float %80 %81 %float_0 %float_1
|
|
%76 = OpFunctionCall %void %tint_symbol_5 %83
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%tint_symbol_8 = OpFunction %void None %29
|
|
%tint_symbol_6 = OpFunctionParameter %v4float
|
|
%86 = OpLabel
|
|
OpStore %tint_symbol_7 %tint_symbol_6
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%frag_main = OpFunction %void None %34
|
|
%88 = OpLabel
|
|
%89 = OpFunctionCall %void %tint_symbol_8 %90
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%comp_main = OpFunction %void None %34
|
|
%92 = OpLabel
|
|
%index = OpVariable %_ptr_Function_uint Function %98
|
|
%vPos = OpVariable %_ptr_Function_v2float Function %75
|
|
%vVel = OpVariable %_ptr_Function_v2float Function %75
|
|
%cMass = OpVariable %_ptr_Function_v2float Function %75
|
|
%cVel = OpVariable %_ptr_Function_v2float Function %75
|
|
%colVel = OpVariable %_ptr_Function_v2float Function %75
|
|
%cMassCount = OpVariable %_ptr_Function_int Function %121
|
|
%cVelCount = OpVariable %_ptr_Function_int Function %121
|
|
%pos_0 = OpVariable %_ptr_Function_v2float Function %75
|
|
%vel = OpVariable %_ptr_Function_v2float Function %75
|
|
%i = OpVariable %_ptr_Function_uint Function %98
|
|
%94 = OpAccessChain %_ptr_Input_uint %tint_symbol_9 %uint_0
|
|
%95 = OpLoad %uint %94
|
|
OpStore %index %95
|
|
%99 = OpLoad %uint %index
|
|
%100 = OpUGreaterThanEqual %bool %99 %uint_5
|
|
OpSelectionMerge %102 None
|
|
OpBranchConditional %100 %103 %102
|
|
%103 = OpLabel
|
|
OpReturn
|
|
%102 = OpLabel
|
|
%104 = OpLoad %uint %index
|
|
%106 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %104 %uint_0
|
|
%107 = OpLoad %v2float %106
|
|
OpStore %vPos %107
|
|
%109 = OpLoad %uint %index
|
|
%110 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %109 %uint_1
|
|
%111 = OpLoad %v2float %110
|
|
OpStore %vVel %111
|
|
OpStore %cMass %113
|
|
OpStore %cVel %113
|
|
OpStore %colVel %113
|
|
OpStore %cMassCount %int_0
|
|
OpStore %cVelCount %int_0
|
|
OpStore %i %uint_0
|
|
OpBranch %126
|
|
%126 = OpLabel
|
|
OpLoopMerge %127 %128 None
|
|
OpBranch %129
|
|
%129 = OpLabel
|
|
%131 = OpLoad %uint %i
|
|
%132 = OpULessThan %bool %131 %uint_5
|
|
%130 = OpLogicalNot %bool %132
|
|
OpSelectionMerge %133 None
|
|
OpBranchConditional %130 %134 %133
|
|
%134 = OpLabel
|
|
OpBranch %127
|
|
%133 = OpLabel
|
|
%135 = OpLoad %uint %i
|
|
%136 = OpLoad %uint %index
|
|
%137 = OpIEqual %bool %135 %136
|
|
OpSelectionMerge %138 None
|
|
OpBranchConditional %137 %139 %138
|
|
%139 = OpLabel
|
|
OpBranch %128
|
|
%138 = OpLabel
|
|
%140 = OpLoad %uint %i
|
|
%141 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %140 %uint_0
|
|
%142 = OpLoad %v2float %141
|
|
%143 = OpVectorShuffle %v2float %142 %142 0 1
|
|
OpStore %pos_0 %143
|
|
%144 = OpLoad %uint %i
|
|
%145 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesA %uint_0 %144 %uint_1
|
|
%146 = OpLoad %v2float %145
|
|
%147 = OpVectorShuffle %v2float %146 %146 0 1
|
|
OpStore %vel %147
|
|
%149 = OpLoad %v2float %pos_0
|
|
%150 = OpLoad %v2float %vPos
|
|
%148 = OpExtInst %float %40 Distance %149 %150
|
|
%152 = OpAccessChain %_ptr_Uniform_float %params %uint_1
|
|
%153 = OpLoad %float %152
|
|
%154 = OpFOrdLessThan %bool %148 %153
|
|
OpSelectionMerge %155 None
|
|
OpBranchConditional %154 %156 %155
|
|
%156 = OpLabel
|
|
%157 = OpLoad %v2float %cMass
|
|
%158 = OpLoad %v2float %pos_0
|
|
%159 = OpFAdd %v2float %157 %158
|
|
OpStore %cMass %159
|
|
%160 = OpLoad %int %cMassCount
|
|
%162 = OpIAdd %int %160 %int_1
|
|
OpStore %cMassCount %162
|
|
OpBranch %155
|
|
%155 = OpLabel
|
|
%164 = OpLoad %v2float %pos_0
|
|
%165 = OpLoad %v2float %vPos
|
|
%163 = OpExtInst %float %40 Distance %164 %165
|
|
%167 = OpAccessChain %_ptr_Uniform_float %params %uint_2
|
|
%168 = OpLoad %float %167
|
|
%169 = OpFOrdLessThan %bool %163 %168
|
|
OpSelectionMerge %170 None
|
|
OpBranchConditional %169 %171 %170
|
|
%171 = OpLabel
|
|
%172 = OpLoad %v2float %colVel
|
|
%173 = OpLoad %v2float %pos_0
|
|
%174 = OpLoad %v2float %vPos
|
|
%175 = OpFSub %v2float %173 %174
|
|
%176 = OpFSub %v2float %172 %175
|
|
OpStore %colVel %176
|
|
OpBranch %170
|
|
%170 = OpLabel
|
|
%178 = OpLoad %v2float %pos_0
|
|
%179 = OpLoad %v2float %vPos
|
|
%177 = OpExtInst %float %40 Distance %178 %179
|
|
%181 = OpAccessChain %_ptr_Uniform_float %params %uint_3
|
|
%182 = OpLoad %float %181
|
|
%183 = OpFOrdLessThan %bool %177 %182
|
|
OpSelectionMerge %184 None
|
|
OpBranchConditional %183 %185 %184
|
|
%185 = OpLabel
|
|
%186 = OpLoad %v2float %cVel
|
|
%187 = OpLoad %v2float %vel
|
|
%188 = OpFAdd %v2float %186 %187
|
|
OpStore %cVel %188
|
|
%189 = OpLoad %int %cVelCount
|
|
%190 = OpIAdd %int %189 %int_1
|
|
OpStore %cVelCount %190
|
|
OpBranch %184
|
|
%184 = OpLabel
|
|
OpBranch %128
|
|
%128 = OpLabel
|
|
%191 = OpLoad %uint %i
|
|
%192 = OpIAdd %uint %191 %uint_1
|
|
OpStore %i %192
|
|
OpBranch %126
|
|
%127 = OpLabel
|
|
%193 = OpLoad %int %cMassCount
|
|
%194 = OpSGreaterThan %bool %193 %int_0
|
|
OpSelectionMerge %195 None
|
|
OpBranchConditional %194 %196 %195
|
|
%196 = OpLabel
|
|
%197 = OpLoad %v2float %cMass
|
|
%199 = OpLoad %int %cMassCount
|
|
%198 = OpConvertSToF %float %199
|
|
%201 = OpLoad %int %cMassCount
|
|
%200 = OpConvertSToF %float %201
|
|
%202 = OpCompositeConstruct %v2float %198 %200
|
|
%203 = OpFDiv %v2float %197 %202
|
|
%204 = OpLoad %v2float %vPos
|
|
%205 = OpFSub %v2float %203 %204
|
|
OpStore %cMass %205
|
|
OpBranch %195
|
|
%195 = OpLabel
|
|
%206 = OpLoad %int %cVelCount
|
|
%207 = OpSGreaterThan %bool %206 %int_0
|
|
OpSelectionMerge %208 None
|
|
OpBranchConditional %207 %209 %208
|
|
%209 = OpLabel
|
|
%210 = OpLoad %v2float %cVel
|
|
%212 = OpLoad %int %cVelCount
|
|
%211 = OpConvertSToF %float %212
|
|
%214 = OpLoad %int %cVelCount
|
|
%213 = OpConvertSToF %float %214
|
|
%215 = OpCompositeConstruct %v2float %211 %213
|
|
%216 = OpFDiv %v2float %210 %215
|
|
OpStore %cVel %216
|
|
OpBranch %208
|
|
%208 = OpLabel
|
|
%217 = OpLoad %v2float %vVel
|
|
%218 = OpLoad %v2float %cMass
|
|
%220 = OpAccessChain %_ptr_Uniform_float %params %uint_4
|
|
%221 = OpLoad %float %220
|
|
%222 = OpVectorTimesScalar %v2float %218 %221
|
|
%223 = OpFAdd %v2float %217 %222
|
|
%224 = OpLoad %v2float %colVel
|
|
%225 = OpAccessChain %_ptr_Uniform_float %params %uint_5
|
|
%226 = OpLoad %float %225
|
|
%227 = OpVectorTimesScalar %v2float %224 %226
|
|
%228 = OpFAdd %v2float %223 %227
|
|
%229 = OpLoad %v2float %cVel
|
|
%231 = OpAccessChain %_ptr_Uniform_float %params %uint_6
|
|
%232 = OpLoad %float %231
|
|
%233 = OpVectorTimesScalar %v2float %229 %232
|
|
%234 = OpFAdd %v2float %228 %233
|
|
OpStore %vVel %234
|
|
%236 = OpLoad %v2float %vVel
|
|
%235 = OpExtInst %v2float %40 Normalize %236
|
|
%239 = OpLoad %v2float %vVel
|
|
%238 = OpExtInst %float %40 Length %239
|
|
%237 = OpExtInst %float %40 NClamp %238 %float_0 %float_0_100000001
|
|
%241 = OpVectorTimesScalar %v2float %235 %237
|
|
OpStore %vVel %241
|
|
%242 = OpLoad %v2float %vPos
|
|
%243 = OpLoad %v2float %vVel
|
|
%244 = OpAccessChain %_ptr_Uniform_float %params %uint_0
|
|
%245 = OpLoad %float %244
|
|
%246 = OpVectorTimesScalar %v2float %243 %245
|
|
%247 = OpFAdd %v2float %242 %246
|
|
OpStore %vPos %247
|
|
%248 = OpAccessChain %_ptr_Function_float %vPos %uint_0
|
|
%249 = OpLoad %float %248
|
|
%251 = OpFOrdLessThan %bool %249 %float_n1
|
|
OpSelectionMerge %252 None
|
|
OpBranchConditional %251 %253 %252
|
|
%253 = OpLabel
|
|
%254 = OpAccessChain %_ptr_Function_float %vPos %uint_0
|
|
OpStore %254 %float_1
|
|
OpBranch %252
|
|
%252 = OpLabel
|
|
%255 = OpAccessChain %_ptr_Function_float %vPos %uint_0
|
|
%256 = OpLoad %float %255
|
|
%257 = OpFOrdGreaterThan %bool %256 %float_1
|
|
OpSelectionMerge %258 None
|
|
OpBranchConditional %257 %259 %258
|
|
%259 = OpLabel
|
|
%260 = OpAccessChain %_ptr_Function_float %vPos %uint_0
|
|
OpStore %260 %float_n1
|
|
OpBranch %258
|
|
%258 = OpLabel
|
|
%261 = OpAccessChain %_ptr_Function_float %vPos %uint_1
|
|
%262 = OpLoad %float %261
|
|
%263 = OpFOrdLessThan %bool %262 %float_n1
|
|
OpSelectionMerge %264 None
|
|
OpBranchConditional %263 %265 %264
|
|
%265 = OpLabel
|
|
%266 = OpAccessChain %_ptr_Function_float %vPos %uint_1
|
|
OpStore %266 %float_1
|
|
OpBranch %264
|
|
%264 = OpLabel
|
|
%267 = OpAccessChain %_ptr_Function_float %vPos %uint_1
|
|
%268 = OpLoad %float %267
|
|
%269 = OpFOrdGreaterThan %bool %268 %float_1
|
|
OpSelectionMerge %270 None
|
|
OpBranchConditional %269 %271 %270
|
|
%271 = OpLabel
|
|
%272 = OpAccessChain %_ptr_Function_float %vPos %uint_1
|
|
OpStore %272 %float_n1
|
|
OpBranch %270
|
|
%270 = OpLabel
|
|
%273 = OpLoad %uint %index
|
|
%274 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %273 %uint_0
|
|
%275 = OpLoad %v2float %vPos
|
|
OpStore %274 %275
|
|
%276 = OpLoad %uint %index
|
|
%277 = OpAccessChain %_ptr_StorageBuffer_v2float %particlesB %uint_0 %276 %uint_1
|
|
%278 = OpLoad %v2float %vVel
|
|
OpStore %277 %278
|
|
OpReturn
|
|
OpFunctionEnd
|