; SPIR-V ; Version: 1.5 ; Generator: Google spiregg; 0 ; Bound: 308 ; Schema: 0 OpCapability MeshShadingNV OpExtension "SPV_NV_mesh_shader" %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint MeshNV %main "main" %CameraCB %EmittedParticleCB %counterBuffer %particleBuffer %aliveList %gl_GlobalInvocationID %gl_LocalInvocationIndex %gl_WorkGroupID %gl_Position %out_var_TEXCOORD0 %out_var_TEXCOORD1 %out_var_TEXCOORD2 %out_var_TEXCOORD3 %out_var_WORLDPOSITION %out_var_FRAMEBLEND %out_var_UNROTATED_UV %19 %20 OpExecutionMode %main LocalSize 64 1 1 OpExecutionMode %main OutputTrianglesNV OpExecutionMode %main OutputVertices 256 OpExecutionMode %main OutputPrimitivesNV 128 OpSource HLSL 650 OpName %type_CameraCB "type.CameraCB" OpMemberName %type_CameraCB 0 "g_xCamera_VP" OpMemberName %type_CameraCB 1 "g_xCamera_View" OpMemberName %type_CameraCB 2 "g_xCamera_Proj" OpMemberName %type_CameraCB 3 "g_xCamera_CamPos" OpMemberName %type_CameraCB 4 "g_xCamera_DistanceFromOrigin" OpMemberName %type_CameraCB 5 "g_xCamera_InvV" OpMemberName %type_CameraCB 6 "g_xCamera_InvP" OpMemberName %type_CameraCB 7 "g_xCamera_InvVP" OpMemberName %type_CameraCB 8 "g_xCamera_At" OpMemberName %type_CameraCB 9 "g_xCamera_ZNearP" OpMemberName %type_CameraCB 10 "g_xCamera_Up" OpMemberName %type_CameraCB 11 "g_xCamera_ZFarP" OpMemberName %type_CameraCB 12 "g_xCamera_ZNearP_rcp" OpMemberName %type_CameraCB 13 "g_xCamera_ZFarP_rcp" OpMemberName %type_CameraCB 14 "g_xCamera_ZRange" OpMemberName %type_CameraCB 15 "g_xCamera_ZRange_rcp" OpName %CameraCB "CameraCB" OpName %type_StructuredBuffer_uint "type.StructuredBuffer.uint" OpName %type_EmittedParticleCB "type.EmittedParticleCB" OpMemberName %type_EmittedParticleCB 0 "xEmitterWorld" OpMemberName %type_EmittedParticleCB 1 "xEmitCount" OpMemberName %type_EmittedParticleCB 2 "xEmitterMeshIndexCount" OpMemberName %type_EmittedParticleCB 3 "xEmitterMeshVertexPositionStride" OpMemberName %type_EmittedParticleCB 4 "xEmitterRandomness" OpMemberName %type_EmittedParticleCB 5 "xParticleSize" OpMemberName %type_EmittedParticleCB 6 "xParticleScaling" OpMemberName %type_EmittedParticleCB 7 "xParticleRotation" OpMemberName %type_EmittedParticleCB 8 "xParticleColor" OpMemberName %type_EmittedParticleCB 9 "xParticleRandomFactor" OpMemberName %type_EmittedParticleCB 10 "xParticleNormalFactor" OpMemberName %type_EmittedParticleCB 11 "xParticleLifeSpan" OpMemberName %type_EmittedParticleCB 12 "xParticleLifeSpanRandomness" OpMemberName %type_EmittedParticleCB 13 "xParticleMass" OpMemberName %type_EmittedParticleCB 14 "xParticleMotionBlurAmount" OpMemberName %type_EmittedParticleCB 15 "xEmitterOpacity" OpMemberName %type_EmittedParticleCB 16 "xEmitterMaxParticleCount" OpMemberName %type_EmittedParticleCB 17 "xEmitterFramesXY" OpMemberName %type_EmittedParticleCB 18 "xEmitterFrameCount" OpMemberName %type_EmittedParticleCB 19 "xEmitterFrameStart" OpMemberName %type_EmittedParticleCB 20 "xEmitterTexMul" OpMemberName %type_EmittedParticleCB 21 "xEmitterFrameRate" OpMemberName %type_EmittedParticleCB 22 "padding_xEmitter" OpMemberName %type_EmittedParticleCB 23 "xSPH_h" OpMemberName %type_EmittedParticleCB 24 "xSPH_h_rcp" OpMemberName %type_EmittedParticleCB 25 "xSPH_h2" OpMemberName %type_EmittedParticleCB 26 "xSPH_h3" OpMemberName %type_EmittedParticleCB 27 "xSPH_poly6_constant" OpMemberName %type_EmittedParticleCB 28 "xSPH_spiky_constant" OpMemberName %type_EmittedParticleCB 29 "xSPH_K" OpMemberName %type_EmittedParticleCB 30 "xSPH_p0" OpMemberName %type_EmittedParticleCB 31 "xSPH_e" OpMemberName %type_EmittedParticleCB 32 "xEmitterOptions" OpMemberName %type_EmittedParticleCB 33 "xEmitterFixedTimestep" OpMemberName %type_EmittedParticleCB 34 "xParticleEmissive" OpName %EmittedParticleCB "EmittedParticleCB" OpName %BILLBOARD "BILLBOARD" OpName %type_ByteAddressBuffer "type.ByteAddressBuffer" OpName %counterBuffer "counterBuffer" OpName %type_StructuredBuffer_Particle "type.StructuredBuffer.Particle" OpName %Particle "Particle" OpMemberName %Particle 0 "position" OpMemberName %Particle 1 "mass" OpMemberName %Particle 2 "force" OpMemberName %Particle 3 "rotationalVelocity" OpMemberName %Particle 4 "velocity" OpMemberName %Particle 5 "maxLife" OpMemberName %Particle 6 "sizeBeginEnd" OpMemberName %Particle 7 "life" OpMemberName %Particle 8 "color_mirror" OpName %particleBuffer "particleBuffer" OpName %aliveList "aliveList" OpName %out_var_TEXCOORD0 "out.var.TEXCOORD0" OpName %out_var_TEXCOORD1 "out.var.TEXCOORD1" OpName %out_var_TEXCOORD2 "out.var.TEXCOORD2" OpName %out_var_TEXCOORD3 "out.var.TEXCOORD3" OpName %out_var_WORLDPOSITION "out.var.WORLDPOSITION" OpName %out_var_FRAMEBLEND "out.var.FRAMEBLEND" OpName %out_var_UNROTATED_UV "out.var.UNROTATED_UV" OpName %main "main" OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId OpDecorate %gl_Position BuiltIn Position OpDecorate %19 BuiltIn PrimitiveIndicesNV OpDecorate %20 BuiltIn PrimitiveCountNV OpDecorate %out_var_TEXCOORD0 Location 0 OpDecorate %out_var_TEXCOORD1 Location 1 OpDecorate %out_var_TEXCOORD2 Location 2 OpDecorate %out_var_TEXCOORD3 Location 3 OpDecorate %out_var_WORLDPOSITION Location 4 OpDecorate %out_var_FRAMEBLEND Location 5 OpDecorate %out_var_UNROTATED_UV Location 6 OpDecorate %CameraCB DescriptorSet 0 OpDecorate %CameraCB Binding 2 OpDecorate %EmittedParticleCB DescriptorSet 0 OpDecorate %EmittedParticleCB Binding 7 OpDecorate %counterBuffer DescriptorSet 0 OpDecorate %counterBuffer Binding 1040 OpDecorate %particleBuffer DescriptorSet 0 OpDecorate %particleBuffer Binding 1041 OpDecorate %aliveList DescriptorSet 0 OpDecorate %aliveList Binding 1042 OpMemberDecorate %type_CameraCB 0 Offset 0 OpMemberDecorate %type_CameraCB 0 MatrixStride 16 OpMemberDecorate %type_CameraCB 0 RowMajor OpMemberDecorate %type_CameraCB 1 Offset 64 OpMemberDecorate %type_CameraCB 1 MatrixStride 16 OpMemberDecorate %type_CameraCB 1 RowMajor OpMemberDecorate %type_CameraCB 2 Offset 128 OpMemberDecorate %type_CameraCB 2 MatrixStride 16 OpMemberDecorate %type_CameraCB 2 RowMajor OpMemberDecorate %type_CameraCB 3 Offset 192 OpMemberDecorate %type_CameraCB 4 Offset 204 OpMemberDecorate %type_CameraCB 5 Offset 208 OpMemberDecorate %type_CameraCB 5 MatrixStride 16 OpMemberDecorate %type_CameraCB 5 RowMajor OpMemberDecorate %type_CameraCB 6 Offset 272 OpMemberDecorate %type_CameraCB 6 MatrixStride 16 OpMemberDecorate %type_CameraCB 6 RowMajor OpMemberDecorate %type_CameraCB 7 Offset 336 OpMemberDecorate %type_CameraCB 7 MatrixStride 16 OpMemberDecorate %type_CameraCB 7 RowMajor OpMemberDecorate %type_CameraCB 8 Offset 400 OpMemberDecorate %type_CameraCB 9 Offset 412 OpMemberDecorate %type_CameraCB 10 Offset 416 OpMemberDecorate %type_CameraCB 11 Offset 428 OpMemberDecorate %type_CameraCB 12 Offset 432 OpMemberDecorate %type_CameraCB 13 Offset 436 OpMemberDecorate %type_CameraCB 14 Offset 440 OpMemberDecorate %type_CameraCB 15 Offset 444 OpDecorate %type_CameraCB Block OpDecorate %_runtimearr_uint ArrayStride 4 OpMemberDecorate %type_StructuredBuffer_uint 0 Offset 0 OpMemberDecorate %type_StructuredBuffer_uint 0 NonWritable OpDecorate %type_StructuredBuffer_uint Block OpMemberDecorate %type_EmittedParticleCB 0 Offset 0 OpMemberDecorate %type_EmittedParticleCB 0 MatrixStride 16 OpMemberDecorate %type_EmittedParticleCB 0 RowMajor OpMemberDecorate %type_EmittedParticleCB 1 Offset 64 OpMemberDecorate %type_EmittedParticleCB 2 Offset 68 OpMemberDecorate %type_EmittedParticleCB 3 Offset 72 OpMemberDecorate %type_EmittedParticleCB 4 Offset 76 OpMemberDecorate %type_EmittedParticleCB 5 Offset 80 OpMemberDecorate %type_EmittedParticleCB 6 Offset 84 OpMemberDecorate %type_EmittedParticleCB 7 Offset 88 OpMemberDecorate %type_EmittedParticleCB 8 Offset 92 OpMemberDecorate %type_EmittedParticleCB 9 Offset 96 OpMemberDecorate %type_EmittedParticleCB 10 Offset 100 OpMemberDecorate %type_EmittedParticleCB 11 Offset 104 OpMemberDecorate %type_EmittedParticleCB 12 Offset 108 OpMemberDecorate %type_EmittedParticleCB 13 Offset 112 OpMemberDecorate %type_EmittedParticleCB 14 Offset 116 OpMemberDecorate %type_EmittedParticleCB 15 Offset 120 OpMemberDecorate %type_EmittedParticleCB 16 Offset 124 OpMemberDecorate %type_EmittedParticleCB 17 Offset 128 OpMemberDecorate %type_EmittedParticleCB 18 Offset 136 OpMemberDecorate %type_EmittedParticleCB 19 Offset 140 OpMemberDecorate %type_EmittedParticleCB 20 Offset 144 OpMemberDecorate %type_EmittedParticleCB 21 Offset 152 OpMemberDecorate %type_EmittedParticleCB 22 Offset 156 OpMemberDecorate %type_EmittedParticleCB 23 Offset 160 OpMemberDecorate %type_EmittedParticleCB 24 Offset 164 OpMemberDecorate %type_EmittedParticleCB 25 Offset 168 OpMemberDecorate %type_EmittedParticleCB 26 Offset 172 OpMemberDecorate %type_EmittedParticleCB 27 Offset 176 OpMemberDecorate %type_EmittedParticleCB 28 Offset 180 OpMemberDecorate %type_EmittedParticleCB 29 Offset 184 OpMemberDecorate %type_EmittedParticleCB 30 Offset 188 OpMemberDecorate %type_EmittedParticleCB 31 Offset 192 OpMemberDecorate %type_EmittedParticleCB 32 Offset 196 OpMemberDecorate %type_EmittedParticleCB 33 Offset 200 OpMemberDecorate %type_EmittedParticleCB 34 Offset 204 OpDecorate %type_EmittedParticleCB Block OpMemberDecorate %type_ByteAddressBuffer 0 Offset 0 OpMemberDecorate %type_ByteAddressBuffer 0 NonWritable OpDecorate %type_ByteAddressBuffer Block OpMemberDecorate %Particle 0 Offset 0 OpMemberDecorate %Particle 1 Offset 12 OpMemberDecorate %Particle 2 Offset 16 OpMemberDecorate %Particle 3 Offset 28 OpMemberDecorate %Particle 4 Offset 32 OpMemberDecorate %Particle 5 Offset 44 OpMemberDecorate %Particle 6 Offset 48 OpMemberDecorate %Particle 7 Offset 56 OpMemberDecorate %Particle 8 Offset 60 OpDecorate %_runtimearr_Particle ArrayStride 64 OpMemberDecorate %type_StructuredBuffer_Particle 0 Offset 0 OpMemberDecorate %type_StructuredBuffer_Particle 0 NonWritable OpDecorate %type_StructuredBuffer_Particle Block %uint = OpTypeInt 32 0 %uint_1 = OpConstant %uint 1 %uint_2 = OpConstant %uint 2 %uint_4 = OpConstant %uint 4 %uint_0 = OpConstant %uint 0 %uint_3 = OpConstant %uint 3 %uint_256 = OpConstant %uint 256 %int = OpTypeInt 32 1 %uint_64 = OpConstant %uint 64 %float = OpTypeFloat 32 %float_0_5 = OpConstant %float 0.5 %float_n1 = OpConstant %float -1 %float_0 = OpConstant %float 0 %float_1 = OpConstant %float 1 %int_0 = OpConstant %int 0 %int_5 = OpConstant %int 5 %int_1 = OpConstant %int 1 %int_15 = OpConstant %int 15 %int_21 = OpConstant %int 21 %int_19 = OpConstant %int 19 %int_18 = OpConstant %int 18 %int_17 = OpConstant %int 17 %uint_268435456 = OpConstant %uint 268435456 %uint_536870912 = OpConstant %uint 536870912 %float_n0_5 = OpConstant %float -0.5 %v2float = OpTypeVector %float 2 %56 = OpConstantComposite %v2float %float_0_5 %float_n0_5 %57 = OpConstantComposite %v2float %float_0_5 %float_0_5 %int_20 = OpConstant %int 20 %int_14 = OpConstant %int 14 %int_2 = OpConstant %int 2 %uint_16777215 = OpConstant %uint 16777215 %float_255 = OpConstant %float 255 %uint_24 = OpConstant %uint 24 %64 = OpConstantComposite %v2float %float_1 %float_n1 %v3uint = OpTypeVector %uint 3 %66 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_2 %67 = OpConstantComposite %v3uint %uint_2 %uint_1 %uint_3 %v3float = OpTypeVector %float 3 %v4float = OpTypeVector %float 4 %mat4v4float = OpTypeMatrix %v4float 4 %type_CameraCB = OpTypeStruct %mat4v4float %mat4v4float %mat4v4float %v3float %float %mat4v4float %mat4v4float %mat4v4float %v3float %float %v3float %float %float %float %float %float %_ptr_Uniform_type_CameraCB = OpTypePointer Uniform %type_CameraCB %v2uint = OpTypeVector %uint 2 %_runtimearr_uint = OpTypeRuntimeArray %uint %type_StructuredBuffer_uint = OpTypeStruct %_runtimearr_uint %_ptr_StorageBuffer_type_StructuredBuffer_uint = OpTypePointer StorageBuffer %type_StructuredBuffer_uint %mat2v2float = OpTypeMatrix %v2float 2 %mat3v3float = OpTypeMatrix %v3float 3 %type_EmittedParticleCB = OpTypeStruct %mat4v4float %uint %uint %uint %float %float %float %float %uint %float %float %float %float %float %float %float %uint %v2uint %uint %uint %v2float %float %float %float %float %float %float %float %float %float %float %float %uint %float %float %_ptr_Uniform_type_EmittedParticleCB = OpTypePointer Uniform %type_EmittedParticleCB %_arr_v3float_uint_4 = OpTypeArray %v3float %uint_4 %type_ByteAddressBuffer = OpTypeStruct %_runtimearr_uint %_ptr_StorageBuffer_type_ByteAddressBuffer = OpTypePointer StorageBuffer %type_ByteAddressBuffer %Particle = OpTypeStruct %v3float %float %v3float %float %v3float %float %v2float %float %uint %_runtimearr_Particle = OpTypeRuntimeArray %Particle %type_StructuredBuffer_Particle = OpTypeStruct %_runtimearr_Particle %_ptr_StorageBuffer_type_StructuredBuffer_Particle = OpTypePointer StorageBuffer %type_StructuredBuffer_Particle %_ptr_Input_v3uint = OpTypePointer Input %v3uint %_ptr_Input_uint = OpTypePointer Input %uint %_arr_v4float_uint_256 = OpTypeArray %v4float %uint_256 %_ptr_Output__arr_v4float_uint_256 = OpTypePointer Output %_arr_v4float_uint_256 %_arr_float_uint_256 = OpTypeArray %float %uint_256 %_ptr_Output__arr_float_uint_256 = OpTypePointer Output %_arr_float_uint_256 %_arr_uint_uint_256 = OpTypeArray %uint %uint_256 %_ptr_Output__arr_uint_uint_256 = OpTypePointer Output %_arr_uint_uint_256 %_arr_v3float_uint_256 = OpTypeArray %v3float %uint_256 %_ptr_Output__arr_v3float_uint_256 = OpTypePointer Output %_arr_v3float_uint_256 %_arr_v2float_uint_256 = OpTypeArray %v2float %uint_256 %_ptr_Output__arr_v2float_uint_256 = OpTypePointer Output %_arr_v2float_uint_256 %uint_384 = OpConstant %uint 384 %_arr_uint_uint_384 = OpTypeArray %uint %uint_384 %_ptr_Output__arr_uint_uint_384 = OpTypePointer Output %_arr_uint_uint_384 %_ptr_Output_uint = OpTypePointer Output %uint %void = OpTypeVoid %97 = OpTypeFunction %void %_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %bool = OpTypeBool %_ptr_StorageBuffer_Particle = OpTypePointer StorageBuffer %Particle %_ptr_Uniform_float = OpTypePointer Uniform %float %_ptr_Uniform_uint = OpTypePointer Uniform %uint %_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float %_ptr_Output_v4float = OpTypePointer Output %v4float %_ptr_Output_float = OpTypePointer Output %float %_ptr_Output_v3float = OpTypePointer Output %v3float %_ptr_Output_v2float = OpTypePointer Output %v2float %CameraCB = OpVariable %_ptr_Uniform_type_CameraCB Uniform %EmittedParticleCB = OpVariable %_ptr_Uniform_type_EmittedParticleCB Uniform %counterBuffer = OpVariable %_ptr_StorageBuffer_type_ByteAddressBuffer StorageBuffer %particleBuffer = OpVariable %_ptr_StorageBuffer_type_StructuredBuffer_Particle StorageBuffer %aliveList = OpVariable %_ptr_StorageBuffer_type_StructuredBuffer_uint StorageBuffer %gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input %gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input %gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input %gl_Position = OpVariable %_ptr_Output__arr_v4float_uint_256 Output %out_var_TEXCOORD0 = OpVariable %_ptr_Output__arr_v4float_uint_256 Output %out_var_TEXCOORD1 = OpVariable %_ptr_Output__arr_v4float_uint_256 Output %out_var_TEXCOORD2 = OpVariable %_ptr_Output__arr_float_uint_256 Output %out_var_TEXCOORD3 = OpVariable %_ptr_Output__arr_uint_uint_256 Output %out_var_WORLDPOSITION = OpVariable %_ptr_Output__arr_v3float_uint_256 Output %out_var_FRAMEBLEND = OpVariable %_ptr_Output__arr_float_uint_256 Output %out_var_UNROTATED_UV = OpVariable %_ptr_Output__arr_v2float_uint_256 Output %19 = OpVariable %_ptr_Output__arr_uint_uint_384 Output %20 = OpVariable %_ptr_Output_uint Output %_ptr_Function__arr_v3float_uint_4 = OpTypePointer Function %_arr_v3float_uint_4 %111 = OpConstantComposite %v3float %float_n1 %float_n1 %float_0 %112 = OpConstantComposite %v3float %float_1 %float_n1 %float_0 %113 = OpConstantComposite %v3float %float_n1 %float_1 %float_0 %114 = OpConstantComposite %v3float %float_1 %float_1 %float_0 %115 = OpConstantComposite %_arr_v3float_uint_4 %111 %112 %113 %114 %uint_6 = OpConstant %uint 6 %main = OpFunction %void None %97 %117 = OpLabel %BILLBOARD = OpVariable %_ptr_Function__arr_v3float_uint_4 Function OpStore %BILLBOARD %115 %118 = OpLoad %v3uint %gl_GlobalInvocationID %119 = OpCompositeExtract %uint %118 0 %120 = OpLoad %uint %gl_LocalInvocationIndex %121 = OpLoad %v3uint %gl_WorkGroupID %122 = OpCompositeExtract %uint %121 0 OpSelectionMerge %123 None OpSwitch %uint_0 %124 %124 = OpLabel %125 = OpAccessChain %_ptr_StorageBuffer_uint %counterBuffer %uint_0 %uint_3 %126 = OpLoad %uint %125 %127 = OpIMul %uint %122 %uint_64 %128 = OpISub %uint %126 %127 %129 = OpExtInst %uint %1 UMin %uint_64 %128 %130 = OpIMul %uint %129 %uint_2 OpStore %20 %130 %131 = OpUGreaterThanEqual %bool %120 %129 OpSelectionMerge %132 None OpBranchConditional %131 %133 %132 %133 = OpLabel OpBranch %123 %132 = OpLabel %134 = OpAccessChain %_ptr_StorageBuffer_uint %aliveList %int_0 %119 %135 = OpLoad %uint %134 %136 = OpAccessChain %_ptr_StorageBuffer_Particle %particleBuffer %int_0 %135 %137 = OpLoad %Particle %136 %138 = OpCompositeExtract %v3float %137 0 %139 = OpCompositeExtract %float %137 3 %140 = OpCompositeExtract %v3float %137 4 %141 = OpCompositeExtract %float %137 5 %142 = OpCompositeExtract %v2float %137 6 %143 = OpCompositeExtract %float %137 7 %144 = OpCompositeExtract %uint %137 8 %145 = OpFDiv %float %143 %141 %146 = OpFSub %float %float_1 %145 %147 = OpCompositeExtract %float %142 0 %148 = OpCompositeExtract %float %142 1 %149 = OpExtInst %float %1 FMix %147 %148 %146 %150 = OpExtInst %float %1 FMix %float_1 %float_0 %146 %151 = OpAccessChain %_ptr_Uniform_float %EmittedParticleCB %int_15 %152 = OpLoad %float %151 %153 = OpFMul %float %150 %152 %154 = OpExtInst %float %1 FClamp %153 %float_0 %float_1 %155 = OpFMul %float %146 %139 %156 = OpAccessChain %_ptr_Uniform_float %EmittedParticleCB %int_21 %157 = OpLoad %float %156 %158 = OpFOrdEqual %bool %157 %float_0 %159 = OpAccessChain %_ptr_Uniform_uint %EmittedParticleCB %int_19 %160 = OpLoad %uint %159 %161 = OpConvertUToF %float %160 %162 = OpAccessChain %_ptr_Uniform_uint %EmittedParticleCB %int_18 %163 = OpLoad %uint %162 %164 = OpConvertUToF %float %163 %165 = OpExtInst %float %1 FMix %161 %164 %146 %166 = OpFMul %float %143 %157 %167 = OpFAdd %float %161 %166 %168 = OpFRem %float %167 %164 %169 = OpSelect %float %158 %165 %168 %170 = OpExtInst %float %1 Floor %169 %171 = OpConvertFToU %uint %170 %172 = OpExtInst %float %1 Ceil %169 %173 = OpConvertFToU %uint %172 %174 = OpExtInst %float %1 Fract %169 %175 = OpAccessChain %_ptr_Uniform_uint %EmittedParticleCB %int_17 %int_0 %176 = OpLoad %uint %175 %177 = OpUMod %uint %171 %176 %178 = OpUDiv %uint %171 %176 %179 = OpCompositeConstruct %v2uint %177 %178 %180 = OpUMod %uint %173 %176 %181 = OpUDiv %uint %173 %176 %182 = OpCompositeConstruct %v2uint %180 %181 %183 = OpExtInst %float %1 Cos %155 %184 = OpExtInst %float %1 Sin %155 %185 = OpFNegate %float %184 %186 = OpCompositeConstruct %v2float %183 %185 %187 = OpCompositeConstruct %v2float %184 %183 %188 = OpCompositeConstruct %mat2v2float %186 %187 %189 = OpAccessChain %_ptr_Uniform_mat4v4float %CameraCB %int_1 %190 = OpLoad %mat4v4float %189 %191 = OpCompositeExtract %v4float %190 0 %192 = OpVectorShuffle %v3float %191 %191 0 1 2 %193 = OpCompositeExtract %v4float %190 1 %194 = OpVectorShuffle %v3float %193 %193 0 1 2 %195 = OpCompositeExtract %v4float %190 2 %196 = OpVectorShuffle %v3float %195 %195 0 1 2 %197 = OpCompositeConstruct %mat3v3float %192 %194 %196 %198 = OpVectorTimesMatrix %v3float %140 %197 OpBranch %199 %199 = OpLabel %200 = OpPhi %uint %uint_0 %132 %201 %202 %203 = OpULessThan %bool %200 %uint_4 OpLoopMerge %204 %202 None OpBranchConditional %203 %202 %204 %202 = OpLabel %205 = OpAccessChain %_ptr_Function_v3float %BILLBOARD %200 %206 = OpLoad %v3float %205 %207 = OpBitwiseAnd %uint %144 %uint_268435456 %208 = OpINotEqual %bool %207 %uint_0 %209 = OpCompositeExtract %float %206 0 %210 = OpFNegate %float %209 %211 = OpSelect %float %208 %210 %209 %212 = OpCompositeInsert %v3float %211 %206 0 %213 = OpBitwiseAnd %uint %144 %uint_536870912 %214 = OpINotEqual %bool %213 %uint_0 %215 = OpCompositeExtract %float %206 1 %216 = OpFNegate %float %215 %217 = OpSelect %float %214 %216 %215 %218 = OpCompositeInsert %v3float %217 %212 1 %219 = OpVectorShuffle %v2float %218 %218 0 1 %220 = OpFMul %v2float %219 %56 %221 = OpFAdd %v2float %220 %57 %222 = OpConvertUToF %v2float %179 %223 = OpFAdd %v2float %221 %222 %224 = OpAccessChain %_ptr_Uniform_v2float %EmittedParticleCB %int_20 %225 = OpLoad %v2float %224 %226 = OpFMul %v2float %223 %225 %227 = OpConvertUToF %v2float %182 %228 = OpFAdd %v2float %221 %227 %229 = OpFMul %v2float %228 %225 %230 = OpMatrixTimesVector %v2float %188 %219 %231 = OpVectorShuffle %v3float %218 %230 3 4 2 %232 = OpVectorTimesScalar %v3float %231 %149 %233 = OpDot %float %232 %198 %234 = OpVectorTimesScalar %v3float %198 %233 %235 = OpAccessChain %_ptr_Uniform_float %EmittedParticleCB %int_14 %236 = OpLoad %float %235 %237 = OpVectorTimesScalar %v3float %234 %236 %238 = OpFAdd %v3float %232 %237 %239 = OpCompositeExtract %float %138 0 %240 = OpCompositeExtract %float %138 1 %241 = OpCompositeExtract %float %138 2 %242 = OpCompositeConstruct %v4float %239 %240 %241 %float_1 %243 = OpVectorTimesMatrix %v4float %242 %190 %244 = OpVectorShuffle %v3float %243 %243 0 1 2 %245 = OpFAdd %v3float %244 %238 %246 = OpVectorShuffle %v4float %243 %245 4 5 6 3 %247 = OpAccessChain %_ptr_Uniform_mat4v4float %CameraCB %int_5 %248 = OpLoad %mat4v4float %247 %249 = OpCompositeExtract %float %245 0 %250 = OpCompositeExtract %float %245 1 %251 = OpCompositeExtract %float %245 2 %252 = OpCompositeConstruct %v4float %249 %250 %251 %float_1 %253 = OpVectorTimesMatrix %v4float %252 %248 %254 = OpVectorShuffle %v3float %253 %253 0 1 2 %255 = OpAccessChain %_ptr_Uniform_mat4v4float %CameraCB %int_2 %256 = OpLoad %mat4v4float %255 %257 = OpVectorTimesMatrix %v4float %246 %256 %258 = OpCompositeExtract %float %226 0 %259 = OpCompositeExtract %float %226 1 %260 = OpCompositeExtract %float %229 0 %261 = OpCompositeExtract %float %229 1 %262 = OpCompositeConstruct %v4float %258 %259 %260 %261 %263 = OpBitwiseAnd %uint %144 %uint_16777215 %264 = OpFMul %float %154 %float_255 %265 = OpConvertFToU %uint %264 %266 = OpShiftLeftLogical %uint %265 %uint_24 %267 = OpBitwiseOr %uint %263 %266 %268 = OpVectorShuffle %v2float %238 %238 0 1 %269 = OpFMul %v2float %268 %64 %270 = OpCompositeConstruct %v2float %149 %149 %271 = OpFDiv %v2float %269 %270 %272 = OpVectorTimesScalar %v2float %271 %float_0_5 %273 = OpFAdd %v2float %272 %57 %274 = OpIMul %uint %120 %uint_4 %275 = OpIAdd %uint %274 %200 %276 = OpAccessChain %_ptr_Output_v4float %gl_Position %275 OpStore %276 %257 %277 = OpAccessChain %_ptr_Output_v4float %out_var_TEXCOORD0 %275 OpStore %277 %257 %278 = OpAccessChain %_ptr_Output_v4float %out_var_TEXCOORD1 %275 OpStore %278 %262 %279 = OpAccessChain %_ptr_Output_float %out_var_TEXCOORD2 %275 OpStore %279 %149 %280 = OpAccessChain %_ptr_Output_uint %out_var_TEXCOORD3 %275 OpStore %280 %267 %281 = OpAccessChain %_ptr_Output_v3float %out_var_WORLDPOSITION %275 OpStore %281 %254 %282 = OpAccessChain %_ptr_Output_float %out_var_FRAMEBLEND %275 OpStore %282 %174 %283 = OpAccessChain %_ptr_Output_v2float %out_var_UNROTATED_UV %275 OpStore %283 %273 %201 = OpIAdd %uint %200 %uint_1 OpBranch %199 %204 = OpLabel %284 = OpIMul %uint %120 %uint_4 %285 = OpCompositeConstruct %v3uint %284 %284 %284 %286 = OpIAdd %v3uint %66 %285 %287 = OpIMul %uint %120 %uint_2 %288 = OpIMul %uint %120 %uint_6 %289 = OpAccessChain %_ptr_Output_uint %19 %288 %290 = OpCompositeExtract %uint %286 0 OpStore %289 %290 %291 = OpIAdd %uint %288 %uint_1 %292 = OpAccessChain %_ptr_Output_uint %19 %291 %293 = OpCompositeExtract %uint %286 1 OpStore %292 %293 %294 = OpIAdd %uint %288 %uint_2 %295 = OpAccessChain %_ptr_Output_uint %19 %294 %296 = OpCompositeExtract %uint %286 2 OpStore %295 %296 %297 = OpIAdd %v3uint %67 %285 %298 = OpIAdd %uint %287 %uint_1 %299 = OpIMul %uint %298 %uint_3 %300 = OpAccessChain %_ptr_Output_uint %19 %299 %301 = OpCompositeExtract %uint %297 0 OpStore %300 %301 %302 = OpIAdd %uint %299 %uint_1 %303 = OpAccessChain %_ptr_Output_uint %19 %302 %304 = OpCompositeExtract %uint %297 1 OpStore %303 %304 %305 = OpIAdd %uint %299 %uint_2 %306 = OpAccessChain %_ptr_Output_uint %19 %305 %307 = OpCompositeExtract %uint %297 2 OpStore %306 %307 OpBranch %123 %123 = OpLabel OpReturn OpFunctionEnd