484 lines
23 KiB
Plaintext
484 lines
23 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 274
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpCapability Float16
|
|
OpCapability UniformAndStorageBuffer16BitAccess
|
|
OpCapability StorageBuffer16BitAccess
|
|
OpCapability StorageInputOutput16
|
|
OpCapability Sampled1D
|
|
OpCapability ImageQuery
|
|
%71 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Vertex %vertex_main "vertex_main" %value_1 %vertex_point_size
|
|
OpEntryPoint Fragment %fragment_main "fragment_main"
|
|
OpEntryPoint GLCompute %rgba32uintin "rgba32uintin"
|
|
OpEntryPoint Vertex %vs_main "vs_main" %position_1 %color_1 %quad_pos_1 %position_2 %color_2 %quad_pos_2 %vertex_point_size_1
|
|
OpEntryPoint GLCompute %simulate "simulate" %GlobalInvocationID_1
|
|
OpEntryPoint GLCompute %export_level "export_level" %coord_1
|
|
OpExecutionMode %fragment_main OriginUpperLeft
|
|
OpExecutionMode %rgba32uintin LocalSize 1 1 1
|
|
OpExecutionMode %simulate LocalSize 64 1 1
|
|
OpExecutionMode %export_level LocalSize 64 1 1
|
|
OpName %value_1 "value_1"
|
|
OpName %vertex_point_size "vertex_point_size"
|
|
OpName %position_1 "position_1"
|
|
OpName %color_1 "color_1"
|
|
OpName %quad_pos_1 "quad_pos_1"
|
|
OpName %position_2 "position_2"
|
|
OpName %color_2 "color_2"
|
|
OpName %quad_pos_2 "quad_pos_2"
|
|
OpName %vertex_point_size_1 "vertex_point_size_1"
|
|
OpName %GlobalInvocationID_1 "GlobalInvocationID_1"
|
|
OpName %coord_1 "coord_1"
|
|
OpName %rand_seed "rand_seed"
|
|
OpName %render_params_block "render_params_block"
|
|
OpMemberName %render_params_block 0 "inner"
|
|
OpName %RenderParams "RenderParams"
|
|
OpMemberName %RenderParams 0 "modelViewProjectionMatrix"
|
|
OpMemberName %RenderParams 1 "right"
|
|
OpMemberName %RenderParams 2 "up"
|
|
OpName %render_params "render_params"
|
|
OpName %sim_params_block "sim_params_block"
|
|
OpMemberName %sim_params_block 0 "inner"
|
|
OpName %SimulationParams "SimulationParams"
|
|
OpMemberName %SimulationParams 0 "deltaTime"
|
|
OpMemberName %SimulationParams 1 "seed"
|
|
OpName %sim_params "sim_params"
|
|
OpName %Particles "Particles"
|
|
OpMemberName %Particles 0 "particles"
|
|
OpName %Particle "Particle"
|
|
OpMemberName %Particle 0 "position"
|
|
OpMemberName %Particle 1 "lifetime"
|
|
OpMemberName %Particle 2 "color"
|
|
OpMemberName %Particle 3 "velocity"
|
|
OpName %data "data"
|
|
OpName %texture "texture"
|
|
OpName %ubo_block "ubo_block"
|
|
OpMemberName %ubo_block 0 "inner"
|
|
OpName %UBO "UBO"
|
|
OpMemberName %UBO 0 "width"
|
|
OpName %ubo "ubo"
|
|
OpName %Buffer "Buffer"
|
|
OpMemberName %Buffer 0 "weights"
|
|
OpName %buf_in "buf_in"
|
|
OpName %buf_out "buf_out"
|
|
OpName %tex_in "tex_in"
|
|
OpName %tex_out "tex_out"
|
|
OpName %asinh_468a48 "asinh_468a48"
|
|
OpName %arg_0 "arg_0"
|
|
OpName %res "res"
|
|
OpName %vertex_main_inner "vertex_main_inner"
|
|
OpName %vertex_main "vertex_main"
|
|
OpName %fragment_main "fragment_main"
|
|
OpName %rgba32uintin "rgba32uintin"
|
|
OpName %VertexOutput "VertexOutput"
|
|
OpMemberName %VertexOutput 0 "position"
|
|
OpMemberName %VertexOutput 1 "color"
|
|
OpMemberName %VertexOutput 2 "quad_pos"
|
|
OpName %VertexInput "VertexInput"
|
|
OpMemberName %VertexInput 0 "position"
|
|
OpMemberName %VertexInput 1 "color"
|
|
OpMemberName %VertexInput 2 "quad_pos"
|
|
OpName %vs_main_inner "vs_main_inner"
|
|
OpName %in "in"
|
|
OpName %quad_pos "quad_pos"
|
|
OpName %position "position"
|
|
OpName %out "out"
|
|
OpName %vs_main "vs_main"
|
|
OpName %assign_and_preserve_padding_data_particles_X "assign_and_preserve_padding_data_particles_X"
|
|
OpName %dest "dest"
|
|
OpName %value "value"
|
|
OpName %simulate_inner "simulate_inner"
|
|
OpName %GlobalInvocationID "GlobalInvocationID"
|
|
OpName %particle "particle"
|
|
OpName %simulate "simulate"
|
|
OpName %export_level_inner "export_level_inner"
|
|
OpName %coord "coord"
|
|
OpName %export_level "export_level"
|
|
OpDecorate %value_1 BuiltIn Position
|
|
OpDecorate %vertex_point_size BuiltIn PointSize
|
|
OpDecorate %position_1 Location 0
|
|
OpDecorate %color_1 Location 1
|
|
OpDecorate %quad_pos_1 Location 2
|
|
OpDecorate %position_2 BuiltIn Position
|
|
OpDecorate %color_2 Location 0
|
|
OpDecorate %quad_pos_2 Location 1
|
|
OpDecorate %vertex_point_size_1 BuiltIn PointSize
|
|
OpDecorate %GlobalInvocationID_1 BuiltIn GlobalInvocationId
|
|
OpDecorate %coord_1 BuiltIn GlobalInvocationId
|
|
OpDecorate %render_params_block Block
|
|
OpMemberDecorate %render_params_block 0 Offset 0
|
|
OpMemberDecorate %RenderParams 0 Offset 0
|
|
OpMemberDecorate %RenderParams 0 ColMajor
|
|
OpMemberDecorate %RenderParams 0 MatrixStride 16
|
|
OpMemberDecorate %RenderParams 1 Offset 64
|
|
OpMemberDecorate %RenderParams 2 Offset 80
|
|
OpDecorate %render_params NonWritable
|
|
OpDecorate %render_params Binding 5
|
|
OpDecorate %render_params DescriptorSet 0
|
|
OpDecorate %sim_params_block Block
|
|
OpMemberDecorate %sim_params_block 0 Offset 0
|
|
OpMemberDecorate %SimulationParams 0 Offset 0
|
|
OpMemberDecorate %SimulationParams 1 Offset 16
|
|
OpDecorate %sim_params NonWritable
|
|
OpDecorate %sim_params Binding 0
|
|
OpDecorate %sim_params DescriptorSet 0
|
|
OpDecorate %Particles Block
|
|
OpMemberDecorate %Particles 0 Offset 0
|
|
OpMemberDecorate %Particle 0 Offset 0
|
|
OpMemberDecorate %Particle 1 Offset 12
|
|
OpMemberDecorate %Particle 2 Offset 16
|
|
OpMemberDecorate %Particle 3 Offset 32
|
|
OpDecorate %_runtimearr_Particle ArrayStride 48
|
|
OpDecorate %data Binding 1
|
|
OpDecorate %data DescriptorSet 0
|
|
OpDecorate %texture Binding 2
|
|
OpDecorate %texture DescriptorSet 0
|
|
OpDecorate %ubo_block Block
|
|
OpMemberDecorate %ubo_block 0 Offset 0
|
|
OpMemberDecorate %UBO 0 Offset 0
|
|
OpDecorate %ubo NonWritable
|
|
OpDecorate %ubo Binding 3
|
|
OpDecorate %ubo DescriptorSet 0
|
|
OpDecorate %Buffer Block
|
|
OpMemberDecorate %Buffer 0 Offset 0
|
|
OpDecorate %_runtimearr_float ArrayStride 4
|
|
OpDecorate %buf_in NonWritable
|
|
OpDecorate %buf_in Binding 4
|
|
OpDecorate %buf_in DescriptorSet 0
|
|
OpDecorate %buf_out Binding 5
|
|
OpDecorate %buf_out DescriptorSet 0
|
|
OpDecorate %tex_in Binding 6
|
|
OpDecorate %tex_in DescriptorSet 0
|
|
OpDecorate %tex_out NonReadable
|
|
OpDecorate %tex_out Binding 7
|
|
OpDecorate %tex_out DescriptorSet 0
|
|
OpMemberDecorate %VertexOutput 0 Offset 0
|
|
OpMemberDecorate %VertexOutput 1 Offset 16
|
|
OpMemberDecorate %VertexOutput 2 Offset 32
|
|
OpMemberDecorate %VertexInput 0 Offset 0
|
|
OpMemberDecorate %VertexInput 1 Offset 16
|
|
OpMemberDecorate %VertexInput 2 Offset 32
|
|
OpDecorate %_arr_uint_uint_1 ArrayStride 4
|
|
%float = OpTypeFloat 32
|
|
%v4float = OpTypeVector %float 4
|
|
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
%5 = OpConstantNull %v4float
|
|
%value_1 = OpVariable %_ptr_Output_v4float Output %5
|
|
%_ptr_Output_float = OpTypePointer Output %float
|
|
%8 = OpConstantNull %float
|
|
%vertex_point_size = OpVariable %_ptr_Output_float Output %8
|
|
%v3float = OpTypeVector %float 3
|
|
%_ptr_Input_v3float = OpTypePointer Input %v3float
|
|
%position_1 = OpVariable %_ptr_Input_v3float Input
|
|
%_ptr_Input_v4float = OpTypePointer Input %v4float
|
|
%color_1 = OpVariable %_ptr_Input_v4float Input
|
|
%v2float = OpTypeVector %float 2
|
|
%_ptr_Input_v2float = OpTypePointer Input %v2float
|
|
%quad_pos_1 = OpVariable %_ptr_Input_v2float Input
|
|
%position_2 = OpVariable %_ptr_Output_v4float Output %5
|
|
%color_2 = OpVariable %_ptr_Output_v4float Output %5
|
|
%_ptr_Output_v2float = OpTypePointer Output %v2float
|
|
%21 = OpConstantNull %v2float
|
|
%quad_pos_2 = OpVariable %_ptr_Output_v2float Output %21
|
|
%vertex_point_size_1 = OpVariable %_ptr_Output_float Output %8
|
|
%uint = OpTypeInt 32 0
|
|
%v3uint = OpTypeVector %uint 3
|
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
|
%GlobalInvocationID_1 = OpVariable %_ptr_Input_v3uint Input
|
|
%coord_1 = OpVariable %_ptr_Input_v3uint Input
|
|
%_ptr_Private_v2float = OpTypePointer Private %v2float
|
|
%rand_seed = OpVariable %_ptr_Private_v2float Private %21
|
|
%mat4v4float = OpTypeMatrix %v4float 4
|
|
%RenderParams = OpTypeStruct %mat4v4float %v3float %v3float
|
|
%render_params_block = OpTypeStruct %RenderParams
|
|
%_ptr_Uniform_render_params_block = OpTypePointer Uniform %render_params_block
|
|
%render_params = OpVariable %_ptr_Uniform_render_params_block Uniform
|
|
%SimulationParams = OpTypeStruct %float %v4float
|
|
%sim_params_block = OpTypeStruct %SimulationParams
|
|
%_ptr_Uniform_sim_params_block = OpTypePointer Uniform %sim_params_block
|
|
%sim_params = OpVariable %_ptr_Uniform_sim_params_block Uniform
|
|
%Particle = OpTypeStruct %v3float %float %v4float %v2float
|
|
%_runtimearr_Particle = OpTypeRuntimeArray %Particle
|
|
%Particles = OpTypeStruct %_runtimearr_Particle
|
|
%_ptr_StorageBuffer_Particles = OpTypePointer StorageBuffer %Particles
|
|
%data = OpVariable %_ptr_StorageBuffer_Particles StorageBuffer
|
|
%46 = OpTypeImage %float 1D 0 0 0 1 Unknown
|
|
%_ptr_UniformConstant_46 = OpTypePointer UniformConstant %46
|
|
%texture = OpVariable %_ptr_UniformConstant_46 UniformConstant
|
|
%UBO = OpTypeStruct %uint
|
|
%ubo_block = OpTypeStruct %UBO
|
|
%_ptr_Uniform_ubo_block = OpTypePointer Uniform %ubo_block
|
|
%ubo = OpVariable %_ptr_Uniform_ubo_block Uniform
|
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
|
%Buffer = OpTypeStruct %_runtimearr_float
|
|
%_ptr_StorageBuffer_Buffer = OpTypePointer StorageBuffer %Buffer
|
|
%buf_in = OpVariable %_ptr_StorageBuffer_Buffer StorageBuffer
|
|
%buf_out = OpVariable %_ptr_StorageBuffer_Buffer StorageBuffer
|
|
%58 = OpTypeImage %float 2D 0 0 0 1 Unknown
|
|
%_ptr_UniformConstant_58 = OpTypePointer UniformConstant %58
|
|
%tex_in = OpVariable %_ptr_UniformConstant_58 UniformConstant
|
|
%61 = OpTypeImage %float 2D 0 0 0 2 Rgba8
|
|
%_ptr_UniformConstant_61 = OpTypePointer UniformConstant %61
|
|
%tex_out = OpVariable %_ptr_UniformConstant_61 UniformConstant
|
|
%void = OpTypeVoid
|
|
%62 = OpTypeFunction %void
|
|
%half = OpTypeFloat 16
|
|
%67 = OpConstantNull %half
|
|
%_ptr_Function_half = OpTypePointer Function %half
|
|
%74 = OpTypeFunction %v4float
|
|
%float_1 = OpConstant %float 1
|
|
%VertexOutput = OpTypeStruct %v4float %v4float %v2float
|
|
%VertexInput = OpTypeStruct %v3float %v4float %v2float
|
|
%88 = OpTypeFunction %VertexOutput %VertexInput
|
|
%mat2v3float = OpTypeMatrix %v3float 2
|
|
%uint_0 = OpConstant %uint 0
|
|
%uint_1 = OpConstant %uint 1
|
|
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
|
|
%uint_2 = OpConstant %uint 2
|
|
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
|
%108 = OpConstantNull %v3float
|
|
%float_0_00999999978 = OpConstant %float 0.00999999978
|
|
%_ptr_Function_VertexOutput = OpTypePointer Function %VertexOutput
|
|
%119 = OpConstantNull %VertexOutput
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
|
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
|
|
%147 = OpTypeFunction %void %_arr_uint_uint_1 %Particle
|
|
%int = OpTypeInt 32 1
|
|
%154 = OpConstantNull %int
|
|
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
|
|
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
|
%_ptr_StorageBuffer_v4float = OpTypePointer StorageBuffer %v4float
|
|
%uint_3 = OpConstant %uint 3
|
|
%_ptr_StorageBuffer_v2float = OpTypePointer StorageBuffer %v2float
|
|
%172 = OpTypeFunction %void %v3uint
|
|
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
|
%v2uint = OpTypeVector %uint 2
|
|
%_ptr_StorageBuffer_Particle = OpTypePointer StorageBuffer %Particle
|
|
%_ptr_Function_Particle = OpTypePointer Function %Particle
|
|
%194 = OpConstantNull %Particle
|
|
%bool = OpTypeBool
|
|
%v2bool = OpTypeVector %bool 2
|
|
%_ptr_Uniform_uint = OpTypePointer Uniform %uint
|
|
%uint_31 = OpConstant %uint 31
|
|
%232 = OpConstantNull %uint
|
|
%253 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
|
%float_4 = OpConstant %float 4
|
|
%v2int = OpTypeVector %int 2
|
|
%asinh_468a48 = OpFunction %void None %62
|
|
%65 = OpLabel
|
|
%arg_0 = OpVariable %_ptr_Function_half Function %67
|
|
%res = OpVariable %_ptr_Function_half Function %67
|
|
OpStore %arg_0 %67
|
|
%72 = OpLoad %half %arg_0
|
|
%70 = OpExtInst %half %71 Asinh %72
|
|
OpStore %res %70
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%vertex_main_inner = OpFunction %v4float None %74
|
|
%76 = OpLabel
|
|
%77 = OpFunctionCall %void %asinh_468a48
|
|
OpReturnValue %5
|
|
OpFunctionEnd
|
|
%vertex_main = OpFunction %void None %62
|
|
%79 = OpLabel
|
|
%80 = OpFunctionCall %v4float %vertex_main_inner
|
|
OpStore %value_1 %80
|
|
OpStore %vertex_point_size %float_1
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%fragment_main = OpFunction %void None %62
|
|
%83 = OpLabel
|
|
%84 = OpFunctionCall %void %asinh_468a48
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%rgba32uintin = OpFunction %void None %62
|
|
%86 = OpLabel
|
|
%87 = OpFunctionCall %void %asinh_468a48
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%vs_main_inner = OpFunction %VertexOutput None %88
|
|
%in = OpFunctionParameter %VertexInput
|
|
%93 = OpLabel
|
|
%quad_pos = OpVariable %_ptr_Function_v3float Function %108
|
|
%113 = OpVariable %_ptr_Function_v3float Function %108
|
|
%position = OpVariable %_ptr_Function_v3float Function %108
|
|
%out = OpVariable %_ptr_Function_VertexOutput Function %119
|
|
%98 = OpAccessChain %_ptr_Uniform_v3float %render_params %uint_0 %uint_1
|
|
%99 = OpLoad %v3float %98
|
|
%101 = OpAccessChain %_ptr_Uniform_v3float %render_params %uint_0 %uint_2
|
|
%102 = OpLoad %v3float %101
|
|
%103 = OpCompositeConstruct %mat2v3float %99 %102
|
|
%104 = OpCompositeExtract %v2float %in 2
|
|
%105 = OpMatrixTimesVector %v3float %103 %104
|
|
OpStore %quad_pos %105
|
|
%109 = OpCompositeExtract %v3float %in 0
|
|
%110 = OpLoad %v3float %quad_pos
|
|
%114 = OpCompositeConstruct %v3float %float_0_00999999978 %float_0_00999999978 %float_0_00999999978
|
|
%112 = OpFAdd %v3float %110 %114
|
|
%115 = OpFSub %v3float %109 %112
|
|
OpStore %position %115
|
|
%121 = OpAccessChain %_ptr_Function_v4float %out %uint_0
|
|
%123 = OpAccessChain %_ptr_Uniform_mat4v4float %render_params %uint_0 %uint_0
|
|
%124 = OpLoad %mat4v4float %123
|
|
%125 = OpLoad %v3float %position
|
|
%126 = OpCompositeExtract %float %125 0
|
|
%127 = OpCompositeExtract %float %125 1
|
|
%128 = OpCompositeExtract %float %125 2
|
|
%129 = OpCompositeConstruct %v4float %126 %127 %128 %float_1
|
|
%130 = OpMatrixTimesVector %v4float %124 %129
|
|
OpStore %121 %130
|
|
%131 = OpAccessChain %_ptr_Function_v4float %out %uint_1
|
|
%132 = OpCompositeExtract %v4float %in 1
|
|
OpStore %131 %132
|
|
%134 = OpAccessChain %_ptr_Function_v2float %out %uint_2
|
|
%135 = OpCompositeExtract %v2float %in 2
|
|
OpStore %134 %135
|
|
%136 = OpLoad %VertexOutput %out
|
|
OpReturnValue %136
|
|
OpFunctionEnd
|
|
%vs_main = OpFunction %void None %62
|
|
%138 = OpLabel
|
|
%140 = OpLoad %v3float %position_1
|
|
%141 = OpLoad %v4float %color_1
|
|
%142 = OpLoad %v2float %quad_pos_1
|
|
%143 = OpCompositeConstruct %VertexInput %140 %141 %142
|
|
%139 = OpFunctionCall %VertexOutput %vs_main_inner %143
|
|
%144 = OpCompositeExtract %v4float %139 0
|
|
OpStore %position_2 %144
|
|
%145 = OpCompositeExtract %v4float %139 1
|
|
OpStore %color_2 %145
|
|
%146 = OpCompositeExtract %v2float %139 2
|
|
OpStore %quad_pos_2 %146
|
|
OpStore %vertex_point_size_1 %float_1
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%assign_and_preserve_padding_data_particles_X = OpFunction %void None %147
|
|
%dest = OpFunctionParameter %_arr_uint_uint_1
|
|
%value = OpFunctionParameter %Particle
|
|
%152 = OpLabel
|
|
%155 = OpCompositeExtract %uint %dest 0
|
|
%157 = OpAccessChain %_ptr_StorageBuffer_v3float %data %uint_0 %155 %uint_0
|
|
%158 = OpCompositeExtract %v3float %value 0
|
|
OpStore %157 %158
|
|
%159 = OpCompositeExtract %uint %dest 0
|
|
%161 = OpAccessChain %_ptr_StorageBuffer_float %data %uint_0 %159 %uint_1
|
|
%162 = OpCompositeExtract %float %value 1
|
|
OpStore %161 %162
|
|
%163 = OpCompositeExtract %uint %dest 0
|
|
%165 = OpAccessChain %_ptr_StorageBuffer_v4float %data %uint_0 %163 %uint_2
|
|
%166 = OpCompositeExtract %v4float %value 2
|
|
OpStore %165 %166
|
|
%167 = OpCompositeExtract %uint %dest 0
|
|
%170 = OpAccessChain %_ptr_StorageBuffer_v2float %data %uint_0 %167 %uint_3
|
|
%171 = OpCompositeExtract %v2float %value 3
|
|
OpStore %170 %171
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%simulate_inner = OpFunction %void None %172
|
|
%GlobalInvocationID = OpFunctionParameter %v3uint
|
|
%175 = OpLabel
|
|
%particle = OpVariable %_ptr_Function_Particle Function %194
|
|
%177 = OpAccessChain %_ptr_Uniform_v4float %sim_params %uint_0 %uint_1
|
|
%178 = OpLoad %v4float %177
|
|
%179 = OpVectorShuffle %v2float %178 %178 0 1
|
|
%182 = OpVectorShuffle %v2uint %GlobalInvocationID %GlobalInvocationID 0 1
|
|
%180 = OpConvertUToF %v2float %182
|
|
%183 = OpFMul %v2float %179 %180
|
|
%184 = OpAccessChain %_ptr_Uniform_v4float %sim_params %uint_0 %uint_1
|
|
%185 = OpLoad %v4float %184
|
|
%186 = OpVectorShuffle %v2float %185 %185 2 3
|
|
%187 = OpFMul %v2float %183 %186
|
|
OpStore %rand_seed %187
|
|
%188 = OpCompositeExtract %uint %GlobalInvocationID 0
|
|
%190 = OpAccessChain %_ptr_StorageBuffer_Particle %data %uint_0 %188
|
|
%191 = OpLoad %Particle %190
|
|
OpStore %particle %191
|
|
%196 = OpCompositeConstruct %_arr_uint_uint_1 %188
|
|
%197 = OpLoad %Particle %particle
|
|
%195 = OpFunctionCall %void %assign_and_preserve_padding_data_particles_X %196 %197
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%simulate = OpFunction %void None %62
|
|
%199 = OpLabel
|
|
%201 = OpLoad %v3uint %GlobalInvocationID_1
|
|
%200 = OpFunctionCall %void %simulate_inner %201
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%export_level_inner = OpFunction %void None %172
|
|
%coord = OpFunctionParameter %v3uint
|
|
%204 = OpLabel
|
|
%263 = OpVariable %_ptr_Function_v4float Function %5
|
|
%207 = OpVectorShuffle %v2uint %coord %coord 0 1
|
|
%210 = OpLoad %61 %tex_out
|
|
%209 = OpImageQuerySize %v2uint %210
|
|
%211 = OpULessThan %v2bool %207 %209
|
|
%205 = OpAll %bool %211
|
|
OpSelectionMerge %213 None
|
|
OpBranchConditional %205 %214 %213
|
|
%214 = OpLabel
|
|
%215 = OpCompositeExtract %uint %coord 0
|
|
%216 = OpCompositeExtract %uint %coord 1
|
|
%218 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
|
|
%219 = OpLoad %uint %218
|
|
%220 = OpIMul %uint %216 %219
|
|
%222 = OpBitwiseAnd %uint %220 %uint_31
|
|
%223 = OpShiftLeftLogical %uint %215 %222
|
|
%224 = OpCompositeExtract %uint %coord 0
|
|
%225 = OpISub %uint %224 %uint_2
|
|
%226 = OpCompositeExtract %uint %coord 1
|
|
%227 = OpShiftRightLogical %uint %226 %uint_2
|
|
%228 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
|
|
%229 = OpLoad %uint %228
|
|
%230 = OpIMul %uint %227 %229
|
|
%231 = OpIAdd %uint %225 %230
|
|
%233 = OpShiftLeftLogical %uint %231 %232
|
|
%234 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %233
|
|
%235 = OpLoad %float %234
|
|
%236 = OpIAdd %uint %231 %uint_1
|
|
%237 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %236
|
|
%238 = OpLoad %float %237
|
|
%239 = OpIAdd %uint %231 %uint_1
|
|
%240 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
|
|
%241 = OpLoad %uint %240
|
|
%242 = OpIAdd %uint %239 %241
|
|
%243 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %242
|
|
%244 = OpLoad %float %243
|
|
%245 = OpIAdd %uint %231 %uint_1
|
|
%246 = OpAccessChain %_ptr_Uniform_uint %ubo %uint_0 %uint_0
|
|
%247 = OpLoad %uint %246
|
|
%248 = OpIAdd %uint %245 %247
|
|
%249 = OpAccessChain %_ptr_StorageBuffer_float %buf_in %uint_0 %248
|
|
%250 = OpLoad %float %249
|
|
%252 = OpCompositeConstruct %v4float %235 %238 %244 %250
|
|
%251 = OpDot %float %252 %253
|
|
%254 = OpAccessChain %_ptr_StorageBuffer_float %buf_out %uint_0 %223
|
|
%256 = OpFRem %float %251 %float_4
|
|
OpStore %254 %256
|
|
%257 = OpFMul %float %235 %238
|
|
%258 = OpFDiv %float %235 %238
|
|
%259 = OpFAdd %float %258 %244
|
|
%260 = OpCompositeConstruct %v4float %235 %257 %259 %251
|
|
%261 = OpExtInst %float %71 NMax %251 %8
|
|
%264 = OpCompositeConstruct %v4float %261 %261 %261 %261
|
|
%262 = OpFAdd %v4float %260 %264
|
|
%266 = OpLoad %61 %tex_out
|
|
%269 = OpVectorShuffle %v2uint %coord %coord 0 1
|
|
%267 = OpBitcast %v2int %269
|
|
OpImageWrite %266 %267 %262
|
|
OpBranch %213
|
|
%213 = OpLabel
|
|
OpReturn
|
|
OpFunctionEnd
|
|
%export_level = OpFunction %void None %62
|
|
%271 = OpLabel
|
|
%273 = OpLoad %v3uint %coord_1
|
|
%272 = OpFunctionCall %void %export_level_inner %273
|
|
OpReturn
|
|
OpFunctionEnd
|