778 lines
34 KiB
Plaintext
778 lines
34 KiB
Plaintext
|
; SPIR-V
|
||
|
; Version: 1.3
|
||
|
; Generator: Google Tint Compiler; 0
|
||
|
; Bound: 515
|
||
|
; Schema: 0
|
||
|
OpCapability Shader
|
||
|
%145 = OpExtInstImport "GLSL.std.450"
|
||
|
OpMemoryModel Logical GLSL450
|
||
|
OpEntryPoint GLCompute %computeMain "computeMain" %global_id_1
|
||
|
OpExecutionMode %computeMain LocalSize 4 4 4
|
||
|
OpName %global_id_1 "global_id_1"
|
||
|
OpName %Tables "Tables"
|
||
|
OpMemberName %Tables 0 "edges"
|
||
|
OpMemberName %Tables 1 "tris"
|
||
|
OpName %tables "tables"
|
||
|
OpName %IsosurfaceVolume "IsosurfaceVolume"
|
||
|
OpMemberName %IsosurfaceVolume 0 "min"
|
||
|
OpMemberName %IsosurfaceVolume 1 "max"
|
||
|
OpMemberName %IsosurfaceVolume 2 "step"
|
||
|
OpMemberName %IsosurfaceVolume 3 "size"
|
||
|
OpMemberName %IsosurfaceVolume 4 "threshold"
|
||
|
OpMemberName %IsosurfaceVolume 5 "values"
|
||
|
OpName %volume "volume"
|
||
|
OpName %PositionBuffer "PositionBuffer"
|
||
|
OpMemberName %PositionBuffer 0 "values"
|
||
|
OpName %positionsOut "positionsOut"
|
||
|
OpName %NormalBuffer "NormalBuffer"
|
||
|
OpMemberName %NormalBuffer 0 "values"
|
||
|
OpName %normalsOut "normalsOut"
|
||
|
OpName %IndexBuffer "IndexBuffer"
|
||
|
OpMemberName %IndexBuffer 0 "tris"
|
||
|
OpName %indicesOut "indicesOut"
|
||
|
OpName %DrawIndirectArgs "DrawIndirectArgs"
|
||
|
OpMemberName %DrawIndirectArgs 0 "vc"
|
||
|
OpMemberName %DrawIndirectArgs 1 "vertexCount"
|
||
|
OpMemberName %DrawIndirectArgs 2 "firstVertex"
|
||
|
OpMemberName %DrawIndirectArgs 3 "firstInstance"
|
||
|
OpMemberName %DrawIndirectArgs 4 "indexCount"
|
||
|
OpMemberName %DrawIndirectArgs 5 "indexedInstanceCount"
|
||
|
OpMemberName %DrawIndirectArgs 6 "indexedFirstIndex"
|
||
|
OpMemberName %DrawIndirectArgs 7 "indexedBaseVertex"
|
||
|
OpMemberName %DrawIndirectArgs 8 "indexedFirstInstance"
|
||
|
OpName %drawOut "drawOut"
|
||
|
OpName %positions "positions"
|
||
|
OpName %normals "normals"
|
||
|
OpName %indices "indices"
|
||
|
OpName %cubeVerts "cubeVerts"
|
||
|
OpName %valueAt "valueAt"
|
||
|
OpName %index "index"
|
||
|
OpName %positionAt "positionAt"
|
||
|
OpName %index_0 "index"
|
||
|
OpName %normalAt "normalAt"
|
||
|
OpName %index_1 "index"
|
||
|
OpName %interpX "interpX"
|
||
|
OpName %index_2 "index"
|
||
|
OpName %i "i"
|
||
|
OpName %va "va"
|
||
|
OpName %vb "vb"
|
||
|
OpName %interpY "interpY"
|
||
|
OpName %index_3 "index"
|
||
|
OpName %i_0 "i"
|
||
|
OpName %va_0 "va"
|
||
|
OpName %vb_0 "vb"
|
||
|
OpName %interpZ "interpZ"
|
||
|
OpName %index_4 "index"
|
||
|
OpName %i_1 "i"
|
||
|
OpName %va_1 "va"
|
||
|
OpName %vb_1 "vb"
|
||
|
OpName %computeMain_inner "computeMain_inner"
|
||
|
OpName %global_id "global_id"
|
||
|
OpName %cubeIndex "cubeIndex"
|
||
|
OpName %firstVertex "firstVertex"
|
||
|
OpName %i_2 "i"
|
||
|
OpName %i_3 "i"
|
||
|
OpName %i_4 "i"
|
||
|
OpName %computeMain "computeMain"
|
||
|
OpDecorate %global_id_1 BuiltIn GlobalInvocationId
|
||
|
OpDecorate %Tables Block
|
||
|
OpMemberDecorate %Tables 0 Offset 0
|
||
|
OpDecorate %_arr_uint_uint_256 ArrayStride 4
|
||
|
OpMemberDecorate %Tables 1 Offset 1024
|
||
|
OpDecorate %_arr_int_uint_4096 ArrayStride 4
|
||
|
OpDecorate %tables NonWritable
|
||
|
OpDecorate %tables DescriptorSet 0
|
||
|
OpDecorate %tables Binding 0
|
||
|
OpDecorate %IsosurfaceVolume Block
|
||
|
OpMemberDecorate %IsosurfaceVolume 0 Offset 0
|
||
|
OpMemberDecorate %IsosurfaceVolume 1 Offset 16
|
||
|
OpMemberDecorate %IsosurfaceVolume 2 Offset 32
|
||
|
OpMemberDecorate %IsosurfaceVolume 3 Offset 48
|
||
|
OpMemberDecorate %IsosurfaceVolume 4 Offset 60
|
||
|
OpMemberDecorate %IsosurfaceVolume 5 Offset 64
|
||
|
OpDecorate %_runtimearr_float ArrayStride 4
|
||
|
OpDecorate %volume NonReadable
|
||
|
OpDecorate %volume DescriptorSet 0
|
||
|
OpDecorate %volume Binding 1
|
||
|
OpDecorate %PositionBuffer Block
|
||
|
OpMemberDecorate %PositionBuffer 0 Offset 0
|
||
|
OpDecorate %positionsOut NonReadable
|
||
|
OpDecorate %positionsOut DescriptorSet 0
|
||
|
OpDecorate %positionsOut Binding 2
|
||
|
OpDecorate %NormalBuffer Block
|
||
|
OpMemberDecorate %NormalBuffer 0 Offset 0
|
||
|
OpDecorate %normalsOut NonReadable
|
||
|
OpDecorate %normalsOut DescriptorSet 0
|
||
|
OpDecorate %normalsOut Binding 3
|
||
|
OpDecorate %IndexBuffer Block
|
||
|
OpMemberDecorate %IndexBuffer 0 Offset 0
|
||
|
OpDecorate %_runtimearr_uint ArrayStride 4
|
||
|
OpDecorate %indicesOut NonReadable
|
||
|
OpDecorate %indicesOut DescriptorSet 0
|
||
|
OpDecorate %indicesOut Binding 4
|
||
|
OpDecorate %DrawIndirectArgs Block
|
||
|
OpMemberDecorate %DrawIndirectArgs 0 Offset 0
|
||
|
OpMemberDecorate %DrawIndirectArgs 1 Offset 4
|
||
|
OpMemberDecorate %DrawIndirectArgs 2 Offset 8
|
||
|
OpMemberDecorate %DrawIndirectArgs 3 Offset 12
|
||
|
OpMemberDecorate %DrawIndirectArgs 4 Offset 16
|
||
|
OpMemberDecorate %DrawIndirectArgs 5 Offset 20
|
||
|
OpMemberDecorate %DrawIndirectArgs 6 Offset 24
|
||
|
OpMemberDecorate %DrawIndirectArgs 7 Offset 28
|
||
|
OpMemberDecorate %DrawIndirectArgs 8 Offset 32
|
||
|
OpDecorate %drawOut DescriptorSet 0
|
||
|
OpDecorate %drawOut Binding 5
|
||
|
OpDecorate %_arr_v3float_uint_12 ArrayStride 16
|
||
|
OpDecorate %_arr_uint_uint_12 ArrayStride 4
|
||
|
%uint = OpTypeInt 32 0
|
||
|
%v3uint = OpTypeVector %uint 3
|
||
|
%_ptr_Input_v3uint = OpTypePointer Input %v3uint
|
||
|
%global_id_1 = OpVariable %_ptr_Input_v3uint Input
|
||
|
%uint_256 = OpConstant %uint 256
|
||
|
%_arr_uint_uint_256 = OpTypeArray %uint %uint_256
|
||
|
%int = OpTypeInt 32 1
|
||
|
%uint_4096 = OpConstant %uint 4096
|
||
|
%_arr_int_uint_4096 = OpTypeArray %int %uint_4096
|
||
|
%Tables = OpTypeStruct %_arr_uint_uint_256 %_arr_int_uint_4096
|
||
|
%_ptr_StorageBuffer_Tables = OpTypePointer StorageBuffer %Tables
|
||
|
%tables = OpVariable %_ptr_StorageBuffer_Tables StorageBuffer
|
||
|
%float = OpTypeFloat 32
|
||
|
%v3float = OpTypeVector %float 3
|
||
|
%_runtimearr_float = OpTypeRuntimeArray %float
|
||
|
%IsosurfaceVolume = OpTypeStruct %v3float %v3float %v3float %v3uint %float %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_IsosurfaceVolume = OpTypePointer StorageBuffer %IsosurfaceVolume
|
||
|
%volume = OpVariable %_ptr_StorageBuffer_IsosurfaceVolume StorageBuffer
|
||
|
%PositionBuffer = OpTypeStruct %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_PositionBuffer = OpTypePointer StorageBuffer %PositionBuffer
|
||
|
%positionsOut = OpVariable %_ptr_StorageBuffer_PositionBuffer StorageBuffer
|
||
|
%NormalBuffer = OpTypeStruct %_runtimearr_float
|
||
|
%_ptr_StorageBuffer_NormalBuffer = OpTypePointer StorageBuffer %NormalBuffer
|
||
|
%normalsOut = OpVariable %_ptr_StorageBuffer_NormalBuffer StorageBuffer
|
||
|
%_runtimearr_uint = OpTypeRuntimeArray %uint
|
||
|
%IndexBuffer = OpTypeStruct %_runtimearr_uint
|
||
|
%_ptr_StorageBuffer_IndexBuffer = OpTypePointer StorageBuffer %IndexBuffer
|
||
|
%indicesOut = OpVariable %_ptr_StorageBuffer_IndexBuffer StorageBuffer
|
||
|
%DrawIndirectArgs = OpTypeStruct %uint %uint %uint %uint %uint %uint %uint %uint %uint
|
||
|
%_ptr_StorageBuffer_DrawIndirectArgs = OpTypePointer StorageBuffer %DrawIndirectArgs
|
||
|
%drawOut = OpVariable %_ptr_StorageBuffer_DrawIndirectArgs StorageBuffer
|
||
|
%uint_12 = OpConstant %uint 12
|
||
|
%_arr_v3float_uint_12 = OpTypeArray %v3float %uint_12
|
||
|
%_ptr_Private__arr_v3float_uint_12 = OpTypePointer Private %_arr_v3float_uint_12
|
||
|
%36 = OpConstantNull %_arr_v3float_uint_12
|
||
|
%positions = OpVariable %_ptr_Private__arr_v3float_uint_12 Private %36
|
||
|
%normals = OpVariable %_ptr_Private__arr_v3float_uint_12 Private %36
|
||
|
%_arr_uint_uint_12 = OpTypeArray %uint %uint_12
|
||
|
%_ptr_Private__arr_uint_uint_12 = OpTypePointer Private %_arr_uint_uint_12
|
||
|
%41 = OpConstantNull %_arr_uint_uint_12
|
||
|
%indices = OpVariable %_ptr_Private__arr_uint_uint_12 Private %41
|
||
|
%uint_0 = OpConstant %uint 0
|
||
|
%_ptr_Private_uint = OpTypePointer Private %uint
|
||
|
%cubeVerts = OpVariable %_ptr_Private_uint Private %uint_0
|
||
|
%45 = OpTypeFunction %float %v3uint
|
||
|
%bool = OpTypeBool
|
||
|
%uint_3 = OpConstant %uint 3
|
||
|
%_ptr_StorageBuffer_v3uint = OpTypePointer StorageBuffer %v3uint
|
||
|
%v3bool = OpTypeVector %bool 3
|
||
|
%float_0 = OpConstant %float 0
|
||
|
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
|
||
|
%uint_1 = OpConstant %uint 1
|
||
|
%uint_5 = OpConstant %uint 5
|
||
|
%_ptr_StorageBuffer_float = OpTypePointer StorageBuffer %float
|
||
|
%80 = OpTypeFunction %v3float %v3uint
|
||
|
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
|
||
|
%uint_2 = OpConstant %uint 2
|
||
|
%98 = OpConstantComposite %v3uint %uint_1 %uint_0 %uint_0
|
||
|
%104 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_0
|
||
|
%110 = OpConstantComposite %v3uint %uint_0 %uint_0 %uint_1
|
||
|
%void = OpTypeVoid
|
||
|
%116 = OpTypeFunction %void %uint %v3uint %float %float
|
||
|
%uint_4 = OpConstant %uint 4
|
||
|
%_ptr_Private_v3float = OpTypePointer Private %v3float
|
||
|
%211 = OpTypeFunction %void %v3uint
|
||
|
%216 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_0
|
||
|
%220 = OpConstantComposite %v3uint %uint_1 %uint_0 %uint_1
|
||
|
%222 = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
|
||
|
%224 = OpConstantComposite %v3uint %uint_0 %uint_1 %uint_1
|
||
|
%_ptr_Function_uint = OpTypePointer Function %uint
|
||
|
%236 = OpConstantNull %uint
|
||
|
%uint_8 = OpConstant %uint 8
|
||
|
%uint_16 = OpConstant %uint 16
|
||
|
%uint_32 = OpConstant %uint 32
|
||
|
%uint_64 = OpConstant %uint 64
|
||
|
%uint_128 = OpConstant %uint 128
|
||
|
%uint_6 = OpConstant %uint 6
|
||
|
%uint_7 = OpConstant %uint 7
|
||
|
%uint_512 = OpConstant %uint 512
|
||
|
%uint_9 = OpConstant %uint 9
|
||
|
%uint_1024 = OpConstant %uint 1024
|
||
|
%uint_10 = OpConstant %uint 10
|
||
|
%uint_2048 = OpConstant %uint 2048
|
||
|
%uint_11 = OpConstant %uint 11
|
||
|
%_ptr_StorageBuffer_int = OpTypePointer StorageBuffer %int
|
||
|
%_ptr_StorageBuffer_uint_0 = OpTypePointer StorageBuffer %uint
|
||
|
%uint_15 = OpConstant %uint 15
|
||
|
%_ptr_Private_float = OpTypePointer Private %float
|
||
|
%510 = OpTypeFunction %void
|
||
|
%valueAt = OpFunction %float None %45
|
||
|
%index = OpFunctionParameter %v3uint
|
||
|
%48 = OpLabel
|
||
|
%53 = OpAccessChain %_ptr_StorageBuffer_v3uint %volume %uint_3
|
||
|
%54 = OpLoad %v3uint %53
|
||
|
%55 = OpUGreaterThanEqual %v3bool %index %54
|
||
|
%49 = OpAny %bool %55
|
||
|
OpSelectionMerge %57 None
|
||
|
OpBranchConditional %49 %58 %57
|
||
|
%58 = OpLabel
|
||
|
OpReturnValue %float_0
|
||
|
%57 = OpLabel
|
||
|
%60 = OpCompositeExtract %uint %index 0
|
||
|
%61 = OpCompositeExtract %uint %index 1
|
||
|
%63 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
|
||
|
%64 = OpLoad %uint %63
|
||
|
%65 = OpIMul %uint %61 %64
|
||
|
%66 = OpIAdd %uint %60 %65
|
||
|
%67 = OpCompositeExtract %uint %index 2
|
||
|
%68 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
|
||
|
%69 = OpLoad %uint %68
|
||
|
%70 = OpIMul %uint %67 %69
|
||
|
%72 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_1
|
||
|
%73 = OpLoad %uint %72
|
||
|
%74 = OpIMul %uint %70 %73
|
||
|
%75 = OpIAdd %uint %66 %74
|
||
|
%78 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_5 %75
|
||
|
%79 = OpLoad %float %78
|
||
|
OpReturnValue %79
|
||
|
OpFunctionEnd
|
||
|
%positionAt = OpFunction %v3float None %80
|
||
|
%index_0 = OpFunctionParameter %v3uint
|
||
|
%83 = OpLabel
|
||
|
%85 = OpAccessChain %_ptr_StorageBuffer_v3float %volume %uint_0
|
||
|
%86 = OpLoad %v3float %85
|
||
|
%88 = OpAccessChain %_ptr_StorageBuffer_v3float %volume %uint_2
|
||
|
%89 = OpLoad %v3float %88
|
||
|
%91 = OpVectorShuffle %v3uint %index_0 %index_0 0 1 2
|
||
|
%90 = OpConvertUToF %v3float %91
|
||
|
%92 = OpFMul %v3float %89 %90
|
||
|
%93 = OpFAdd %v3float %86 %92
|
||
|
OpReturnValue %93
|
||
|
OpFunctionEnd
|
||
|
%normalAt = OpFunction %v3float None %80
|
||
|
%index_1 = OpFunctionParameter %v3uint
|
||
|
%96 = OpLabel
|
||
|
%99 = OpISub %v3uint %index_1 %98
|
||
|
%97 = OpFunctionCall %float %valueAt %99
|
||
|
%101 = OpIAdd %v3uint %index_1 %98
|
||
|
%100 = OpFunctionCall %float %valueAt %101
|
||
|
%102 = OpFSub %float %97 %100
|
||
|
%105 = OpISub %v3uint %index_1 %104
|
||
|
%103 = OpFunctionCall %float %valueAt %105
|
||
|
%107 = OpIAdd %v3uint %index_1 %104
|
||
|
%106 = OpFunctionCall %float %valueAt %107
|
||
|
%108 = OpFSub %float %103 %106
|
||
|
%111 = OpISub %v3uint %index_1 %110
|
||
|
%109 = OpFunctionCall %float %valueAt %111
|
||
|
%113 = OpIAdd %v3uint %index_1 %110
|
||
|
%112 = OpFunctionCall %float %valueAt %113
|
||
|
%114 = OpFSub %float %109 %112
|
||
|
%115 = OpCompositeConstruct %v3float %102 %108 %114
|
||
|
OpReturnValue %115
|
||
|
OpFunctionEnd
|
||
|
%interpX = OpFunction %void None %116
|
||
|
%index_2 = OpFunctionParameter %uint
|
||
|
%i = OpFunctionParameter %v3uint
|
||
|
%va = OpFunctionParameter %float
|
||
|
%vb = OpFunctionParameter %float
|
||
|
%123 = OpLabel
|
||
|
%125 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%126 = OpLoad %float %125
|
||
|
%127 = OpFSub %float %126 %va
|
||
|
%128 = OpFSub %float %vb %va
|
||
|
%129 = OpFDiv %float %127 %128
|
||
|
%130 = OpLoad %uint %cubeVerts
|
||
|
%132 = OpAccessChain %_ptr_Private_v3float %positions %130
|
||
|
%133 = OpFunctionCall %v3float %positionAt %i
|
||
|
%134 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_0
|
||
|
%135 = OpLoad %float %134
|
||
|
%136 = OpFMul %float %135 %129
|
||
|
%137 = OpCompositeConstruct %v3float %136 %float_0 %float_0
|
||
|
%138 = OpFAdd %v3float %133 %137
|
||
|
OpStore %132 %138
|
||
|
%139 = OpFunctionCall %v3float %normalAt %i
|
||
|
%141 = OpIAdd %v3uint %i %98
|
||
|
%140 = OpFunctionCall %v3float %normalAt %141
|
||
|
%142 = OpLoad %uint %cubeVerts
|
||
|
%143 = OpAccessChain %_ptr_Private_v3float %normals %142
|
||
|
%146 = OpCompositeConstruct %v3float %129 %129 %129
|
||
|
%144 = OpExtInst %v3float %145 FMix %139 %140 %146
|
||
|
OpStore %143 %144
|
||
|
%147 = OpAccessChain %_ptr_Private_uint %indices %index_2
|
||
|
%148 = OpLoad %uint %cubeVerts
|
||
|
OpStore %147 %148
|
||
|
%149 = OpLoad %uint %cubeVerts
|
||
|
%150 = OpIAdd %uint %149 %uint_1
|
||
|
OpStore %cubeVerts %150
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%interpY = OpFunction %void None %116
|
||
|
%index_3 = OpFunctionParameter %uint
|
||
|
%i_0 = OpFunctionParameter %v3uint
|
||
|
%va_0 = OpFunctionParameter %float
|
||
|
%vb_0 = OpFunctionParameter %float
|
||
|
%156 = OpLabel
|
||
|
%157 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%158 = OpLoad %float %157
|
||
|
%159 = OpFSub %float %158 %va_0
|
||
|
%160 = OpFSub %float %vb_0 %va_0
|
||
|
%161 = OpFDiv %float %159 %160
|
||
|
%162 = OpLoad %uint %cubeVerts
|
||
|
%163 = OpAccessChain %_ptr_Private_v3float %positions %162
|
||
|
%164 = OpFunctionCall %v3float %positionAt %i_0
|
||
|
%165 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_1
|
||
|
%166 = OpLoad %float %165
|
||
|
%167 = OpFMul %float %166 %161
|
||
|
%168 = OpCompositeConstruct %v3float %float_0 %167 %float_0
|
||
|
%169 = OpFAdd %v3float %164 %168
|
||
|
OpStore %163 %169
|
||
|
%170 = OpFunctionCall %v3float %normalAt %i_0
|
||
|
%172 = OpIAdd %v3uint %i_0 %104
|
||
|
%171 = OpFunctionCall %v3float %normalAt %172
|
||
|
%173 = OpLoad %uint %cubeVerts
|
||
|
%174 = OpAccessChain %_ptr_Private_v3float %normals %173
|
||
|
%176 = OpCompositeConstruct %v3float %161 %161 %161
|
||
|
%175 = OpExtInst %v3float %145 FMix %170 %171 %176
|
||
|
OpStore %174 %175
|
||
|
%177 = OpAccessChain %_ptr_Private_uint %indices %index_3
|
||
|
%178 = OpLoad %uint %cubeVerts
|
||
|
OpStore %177 %178
|
||
|
%179 = OpLoad %uint %cubeVerts
|
||
|
%180 = OpIAdd %uint %179 %uint_1
|
||
|
OpStore %cubeVerts %180
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%interpZ = OpFunction %void None %116
|
||
|
%index_4 = OpFunctionParameter %uint
|
||
|
%i_1 = OpFunctionParameter %v3uint
|
||
|
%va_1 = OpFunctionParameter %float
|
||
|
%vb_1 = OpFunctionParameter %float
|
||
|
%186 = OpLabel
|
||
|
%187 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%188 = OpLoad %float %187
|
||
|
%189 = OpFSub %float %188 %va_1
|
||
|
%190 = OpFSub %float %vb_1 %va_1
|
||
|
%191 = OpFDiv %float %189 %190
|
||
|
%192 = OpLoad %uint %cubeVerts
|
||
|
%193 = OpAccessChain %_ptr_Private_v3float %positions %192
|
||
|
%194 = OpFunctionCall %v3float %positionAt %i_1
|
||
|
%195 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_2 %uint_2
|
||
|
%196 = OpLoad %float %195
|
||
|
%197 = OpFMul %float %196 %191
|
||
|
%198 = OpCompositeConstruct %v3float %float_0 %float_0 %197
|
||
|
%199 = OpFAdd %v3float %194 %198
|
||
|
OpStore %193 %199
|
||
|
%200 = OpFunctionCall %v3float %normalAt %i_1
|
||
|
%202 = OpIAdd %v3uint %i_1 %110
|
||
|
%201 = OpFunctionCall %v3float %normalAt %202
|
||
|
%203 = OpLoad %uint %cubeVerts
|
||
|
%204 = OpAccessChain %_ptr_Private_v3float %normals %203
|
||
|
%206 = OpCompositeConstruct %v3float %191 %191 %191
|
||
|
%205 = OpExtInst %v3float %145 FMix %200 %201 %206
|
||
|
OpStore %204 %205
|
||
|
%207 = OpAccessChain %_ptr_Private_uint %indices %index_4
|
||
|
%208 = OpLoad %uint %cubeVerts
|
||
|
OpStore %207 %208
|
||
|
%209 = OpLoad %uint %cubeVerts
|
||
|
%210 = OpIAdd %uint %209 %uint_1
|
||
|
OpStore %cubeVerts %210
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%computeMain_inner = OpFunction %void None %211
|
||
|
%global_id = OpFunctionParameter %v3uint
|
||
|
%214 = OpLabel
|
||
|
%cubeIndex = OpVariable %_ptr_Function_uint Function %236
|
||
|
%firstVertex = OpVariable %_ptr_Function_uint Function %236
|
||
|
%i_2 = OpVariable %_ptr_Function_uint Function %236
|
||
|
%i_3 = OpVariable %_ptr_Function_uint Function %236
|
||
|
%i_4 = OpVariable %_ptr_Function_uint Function %236
|
||
|
%215 = OpIAdd %v3uint %global_id %98
|
||
|
%217 = OpIAdd %v3uint %global_id %216
|
||
|
%218 = OpIAdd %v3uint %global_id %104
|
||
|
%219 = OpIAdd %v3uint %global_id %110
|
||
|
%221 = OpIAdd %v3uint %global_id %220
|
||
|
%223 = OpIAdd %v3uint %global_id %222
|
||
|
%225 = OpIAdd %v3uint %global_id %224
|
||
|
%226 = OpFunctionCall %float %valueAt %global_id
|
||
|
%227 = OpFunctionCall %float %valueAt %215
|
||
|
%228 = OpFunctionCall %float %valueAt %217
|
||
|
%229 = OpFunctionCall %float %valueAt %218
|
||
|
%230 = OpFunctionCall %float %valueAt %219
|
||
|
%231 = OpFunctionCall %float %valueAt %221
|
||
|
%232 = OpFunctionCall %float %valueAt %223
|
||
|
%233 = OpFunctionCall %float %valueAt %225
|
||
|
OpStore %cubeIndex %uint_0
|
||
|
%237 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%238 = OpLoad %float %237
|
||
|
%239 = OpFOrdLessThan %bool %226 %238
|
||
|
OpSelectionMerge %240 None
|
||
|
OpBranchConditional %239 %241 %240
|
||
|
%241 = OpLabel
|
||
|
%242 = OpLoad %uint %cubeIndex
|
||
|
%243 = OpBitwiseOr %uint %242 %uint_1
|
||
|
OpStore %cubeIndex %243
|
||
|
OpBranch %240
|
||
|
%240 = OpLabel
|
||
|
%244 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%245 = OpLoad %float %244
|
||
|
%246 = OpFOrdLessThan %bool %227 %245
|
||
|
OpSelectionMerge %247 None
|
||
|
OpBranchConditional %246 %248 %247
|
||
|
%248 = OpLabel
|
||
|
%249 = OpLoad %uint %cubeIndex
|
||
|
%250 = OpBitwiseOr %uint %249 %uint_2
|
||
|
OpStore %cubeIndex %250
|
||
|
OpBranch %247
|
||
|
%247 = OpLabel
|
||
|
%251 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%252 = OpLoad %float %251
|
||
|
%253 = OpFOrdLessThan %bool %228 %252
|
||
|
OpSelectionMerge %254 None
|
||
|
OpBranchConditional %253 %255 %254
|
||
|
%255 = OpLabel
|
||
|
%256 = OpLoad %uint %cubeIndex
|
||
|
%257 = OpBitwiseOr %uint %256 %uint_4
|
||
|
OpStore %cubeIndex %257
|
||
|
OpBranch %254
|
||
|
%254 = OpLabel
|
||
|
%258 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%259 = OpLoad %float %258
|
||
|
%260 = OpFOrdLessThan %bool %229 %259
|
||
|
OpSelectionMerge %261 None
|
||
|
OpBranchConditional %260 %262 %261
|
||
|
%262 = OpLabel
|
||
|
%263 = OpLoad %uint %cubeIndex
|
||
|
%265 = OpBitwiseOr %uint %263 %uint_8
|
||
|
OpStore %cubeIndex %265
|
||
|
OpBranch %261
|
||
|
%261 = OpLabel
|
||
|
%266 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%267 = OpLoad %float %266
|
||
|
%268 = OpFOrdLessThan %bool %230 %267
|
||
|
OpSelectionMerge %269 None
|
||
|
OpBranchConditional %268 %270 %269
|
||
|
%270 = OpLabel
|
||
|
%271 = OpLoad %uint %cubeIndex
|
||
|
%273 = OpBitwiseOr %uint %271 %uint_16
|
||
|
OpStore %cubeIndex %273
|
||
|
OpBranch %269
|
||
|
%269 = OpLabel
|
||
|
%274 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%275 = OpLoad %float %274
|
||
|
%276 = OpFOrdLessThan %bool %231 %275
|
||
|
OpSelectionMerge %277 None
|
||
|
OpBranchConditional %276 %278 %277
|
||
|
%278 = OpLabel
|
||
|
%279 = OpLoad %uint %cubeIndex
|
||
|
%281 = OpBitwiseOr %uint %279 %uint_32
|
||
|
OpStore %cubeIndex %281
|
||
|
OpBranch %277
|
||
|
%277 = OpLabel
|
||
|
%282 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%283 = OpLoad %float %282
|
||
|
%284 = OpFOrdLessThan %bool %232 %283
|
||
|
OpSelectionMerge %285 None
|
||
|
OpBranchConditional %284 %286 %285
|
||
|
%286 = OpLabel
|
||
|
%287 = OpLoad %uint %cubeIndex
|
||
|
%289 = OpBitwiseOr %uint %287 %uint_64
|
||
|
OpStore %cubeIndex %289
|
||
|
OpBranch %285
|
||
|
%285 = OpLabel
|
||
|
%290 = OpAccessChain %_ptr_StorageBuffer_float %volume %uint_4
|
||
|
%291 = OpLoad %float %290
|
||
|
%292 = OpFOrdLessThan %bool %233 %291
|
||
|
OpSelectionMerge %293 None
|
||
|
OpBranchConditional %292 %294 %293
|
||
|
%294 = OpLabel
|
||
|
%295 = OpLoad %uint %cubeIndex
|
||
|
%297 = OpBitwiseOr %uint %295 %uint_128
|
||
|
OpStore %cubeIndex %297
|
||
|
OpBranch %293
|
||
|
%293 = OpLabel
|
||
|
%298 = OpLoad %uint %cubeIndex
|
||
|
%299 = OpAccessChain %_ptr_StorageBuffer_uint %tables %uint_0 %298
|
||
|
%300 = OpLoad %uint %299
|
||
|
%301 = OpBitwiseAnd %uint %300 %uint_1
|
||
|
%302 = OpINotEqual %bool %301 %uint_0
|
||
|
OpSelectionMerge %303 None
|
||
|
OpBranchConditional %302 %304 %303
|
||
|
%304 = OpLabel
|
||
|
%305 = OpFunctionCall %void %interpX %uint_0 %global_id %226 %227
|
||
|
OpBranch %303
|
||
|
%303 = OpLabel
|
||
|
%306 = OpBitwiseAnd %uint %300 %uint_2
|
||
|
%307 = OpINotEqual %bool %306 %uint_0
|
||
|
OpSelectionMerge %308 None
|
||
|
OpBranchConditional %307 %309 %308
|
||
|
%309 = OpLabel
|
||
|
%310 = OpFunctionCall %void %interpY %uint_1 %215 %227 %228
|
||
|
OpBranch %308
|
||
|
%308 = OpLabel
|
||
|
%311 = OpBitwiseAnd %uint %300 %uint_4
|
||
|
%312 = OpINotEqual %bool %311 %uint_0
|
||
|
OpSelectionMerge %313 None
|
||
|
OpBranchConditional %312 %314 %313
|
||
|
%314 = OpLabel
|
||
|
%315 = OpFunctionCall %void %interpX %uint_2 %218 %229 %228
|
||
|
OpBranch %313
|
||
|
%313 = OpLabel
|
||
|
%316 = OpBitwiseAnd %uint %300 %uint_8
|
||
|
%317 = OpINotEqual %bool %316 %uint_0
|
||
|
OpSelectionMerge %318 None
|
||
|
OpBranchConditional %317 %319 %318
|
||
|
%319 = OpLabel
|
||
|
%320 = OpFunctionCall %void %interpY %uint_3 %global_id %226 %229
|
||
|
OpBranch %318
|
||
|
%318 = OpLabel
|
||
|
%321 = OpBitwiseAnd %uint %300 %uint_16
|
||
|
%322 = OpINotEqual %bool %321 %uint_0
|
||
|
OpSelectionMerge %323 None
|
||
|
OpBranchConditional %322 %324 %323
|
||
|
%324 = OpLabel
|
||
|
%325 = OpFunctionCall %void %interpX %uint_4 %219 %230 %231
|
||
|
OpBranch %323
|
||
|
%323 = OpLabel
|
||
|
%326 = OpBitwiseAnd %uint %300 %uint_32
|
||
|
%327 = OpINotEqual %bool %326 %uint_0
|
||
|
OpSelectionMerge %328 None
|
||
|
OpBranchConditional %327 %329 %328
|
||
|
%329 = OpLabel
|
||
|
%330 = OpFunctionCall %void %interpY %uint_5 %221 %231 %232
|
||
|
OpBranch %328
|
||
|
%328 = OpLabel
|
||
|
%331 = OpBitwiseAnd %uint %300 %uint_64
|
||
|
%332 = OpINotEqual %bool %331 %uint_0
|
||
|
OpSelectionMerge %333 None
|
||
|
OpBranchConditional %332 %334 %333
|
||
|
%334 = OpLabel
|
||
|
%335 = OpFunctionCall %void %interpX %uint_6 %225 %233 %232
|
||
|
OpBranch %333
|
||
|
%333 = OpLabel
|
||
|
%337 = OpBitwiseAnd %uint %300 %uint_128
|
||
|
%338 = OpINotEqual %bool %337 %uint_0
|
||
|
OpSelectionMerge %339 None
|
||
|
OpBranchConditional %338 %340 %339
|
||
|
%340 = OpLabel
|
||
|
%341 = OpFunctionCall %void %interpY %uint_7 %219 %230 %233
|
||
|
OpBranch %339
|
||
|
%339 = OpLabel
|
||
|
%343 = OpBitwiseAnd %uint %300 %uint_256
|
||
|
%344 = OpINotEqual %bool %343 %uint_0
|
||
|
OpSelectionMerge %345 None
|
||
|
OpBranchConditional %344 %346 %345
|
||
|
%346 = OpLabel
|
||
|
%347 = OpFunctionCall %void %interpZ %uint_8 %global_id %226 %230
|
||
|
OpBranch %345
|
||
|
%345 = OpLabel
|
||
|
%349 = OpBitwiseAnd %uint %300 %uint_512
|
||
|
%350 = OpINotEqual %bool %349 %uint_0
|
||
|
OpSelectionMerge %351 None
|
||
|
OpBranchConditional %350 %352 %351
|
||
|
%352 = OpLabel
|
||
|
%353 = OpFunctionCall %void %interpZ %uint_9 %215 %227 %231
|
||
|
OpBranch %351
|
||
|
%351 = OpLabel
|
||
|
%356 = OpBitwiseAnd %uint %300 %uint_1024
|
||
|
%357 = OpINotEqual %bool %356 %uint_0
|
||
|
OpSelectionMerge %358 None
|
||
|
OpBranchConditional %357 %359 %358
|
||
|
%359 = OpLabel
|
||
|
%360 = OpFunctionCall %void %interpZ %uint_10 %217 %228 %232
|
||
|
OpBranch %358
|
||
|
%358 = OpLabel
|
||
|
%363 = OpBitwiseAnd %uint %300 %uint_2048
|
||
|
%364 = OpINotEqual %bool %363 %uint_0
|
||
|
OpSelectionMerge %365 None
|
||
|
OpBranchConditional %364 %366 %365
|
||
|
%366 = OpLabel
|
||
|
%367 = OpFunctionCall %void %interpZ %uint_11 %218 %229 %233
|
||
|
OpBranch %365
|
||
|
%365 = OpLabel
|
||
|
%369 = OpLoad %uint %cubeIndex
|
||
|
%370 = OpShiftLeftLogical %uint %369 %uint_4
|
||
|
%371 = OpIAdd %uint %370 %uint_1
|
||
|
%373 = OpISub %uint %371 %uint_1
|
||
|
%375 = OpAccessChain %_ptr_StorageBuffer_int %tables %uint_1 %373
|
||
|
%376 = OpLoad %int %375
|
||
|
%372 = OpBitcast %uint %376
|
||
|
%380 = OpAccessChain %_ptr_StorageBuffer_uint_0 %drawOut %uint_1
|
||
|
%381 = OpLoad %uint %cubeVerts
|
||
|
%377 = OpAtomicIAdd %uint %380 %uint_1 %uint_0 %381
|
||
|
OpStore %firstVertex %377
|
||
|
%383 = OpCompositeExtract %uint %global_id 0
|
||
|
%384 = OpCompositeExtract %uint %global_id 1
|
||
|
%385 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
|
||
|
%386 = OpLoad %uint %385
|
||
|
%387 = OpIMul %uint %384 %386
|
||
|
%388 = OpIAdd %uint %383 %387
|
||
|
%389 = OpCompositeExtract %uint %global_id 2
|
||
|
%390 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_0
|
||
|
%391 = OpLoad %uint %390
|
||
|
%392 = OpIMul %uint %389 %391
|
||
|
%393 = OpAccessChain %_ptr_StorageBuffer_uint %volume %uint_3 %uint_1
|
||
|
%394 = OpLoad %uint %393
|
||
|
%395 = OpIMul %uint %392 %394
|
||
|
%396 = OpIAdd %uint %388 %395
|
||
|
%398 = OpIMul %uint %396 %uint_15
|
||
|
OpStore %i_2 %uint_0
|
||
|
OpBranch %400
|
||
|
%400 = OpLabel
|
||
|
OpLoopMerge %401 %402 None
|
||
|
OpBranch %403
|
||
|
%403 = OpLabel
|
||
|
%405 = OpLoad %uint %i_2
|
||
|
%406 = OpLoad %uint %cubeVerts
|
||
|
%407 = OpULessThan %bool %405 %406
|
||
|
%404 = OpLogicalNot %bool %407
|
||
|
OpSelectionMerge %408 None
|
||
|
OpBranchConditional %404 %409 %408
|
||
|
%409 = OpLabel
|
||
|
OpBranch %401
|
||
|
%408 = OpLabel
|
||
|
%410 = OpLoad %uint %firstVertex
|
||
|
%411 = OpIMul %uint %410 %uint_3
|
||
|
%412 = OpLoad %uint %i_2
|
||
|
%413 = OpIMul %uint %412 %uint_3
|
||
|
%414 = OpIAdd %uint %411 %413
|
||
|
%415 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %414
|
||
|
%416 = OpLoad %uint %i_2
|
||
|
%418 = OpAccessChain %_ptr_Private_float %positions %416 %uint_0
|
||
|
%419 = OpLoad %float %418
|
||
|
OpStore %415 %419
|
||
|
%420 = OpLoad %uint %firstVertex
|
||
|
%421 = OpIMul %uint %420 %uint_3
|
||
|
%422 = OpLoad %uint %i_2
|
||
|
%423 = OpIMul %uint %422 %uint_3
|
||
|
%424 = OpIAdd %uint %421 %423
|
||
|
%425 = OpIAdd %uint %424 %uint_1
|
||
|
%426 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %425
|
||
|
%427 = OpLoad %uint %i_2
|
||
|
%428 = OpAccessChain %_ptr_Private_float %positions %427 %uint_1
|
||
|
%429 = OpLoad %float %428
|
||
|
OpStore %426 %429
|
||
|
%430 = OpLoad %uint %firstVertex
|
||
|
%431 = OpIMul %uint %430 %uint_3
|
||
|
%432 = OpLoad %uint %i_2
|
||
|
%433 = OpIMul %uint %432 %uint_3
|
||
|
%434 = OpIAdd %uint %431 %433
|
||
|
%435 = OpIAdd %uint %434 %uint_2
|
||
|
%436 = OpAccessChain %_ptr_StorageBuffer_float %positionsOut %uint_0 %435
|
||
|
%437 = OpLoad %uint %i_2
|
||
|
%438 = OpAccessChain %_ptr_Private_float %positions %437 %uint_2
|
||
|
%439 = OpLoad %float %438
|
||
|
OpStore %436 %439
|
||
|
%440 = OpLoad %uint %firstVertex
|
||
|
%441 = OpIMul %uint %440 %uint_3
|
||
|
%442 = OpLoad %uint %i_2
|
||
|
%443 = OpIMul %uint %442 %uint_3
|
||
|
%444 = OpIAdd %uint %441 %443
|
||
|
%445 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %444
|
||
|
%446 = OpLoad %uint %i_2
|
||
|
%447 = OpAccessChain %_ptr_Private_float %normals %446 %uint_0
|
||
|
%448 = OpLoad %float %447
|
||
|
OpStore %445 %448
|
||
|
%449 = OpLoad %uint %firstVertex
|
||
|
%450 = OpIMul %uint %449 %uint_3
|
||
|
%451 = OpLoad %uint %i_2
|
||
|
%452 = OpIMul %uint %451 %uint_3
|
||
|
%453 = OpIAdd %uint %450 %452
|
||
|
%454 = OpIAdd %uint %453 %uint_1
|
||
|
%455 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %454
|
||
|
%456 = OpLoad %uint %i_2
|
||
|
%457 = OpAccessChain %_ptr_Private_float %normals %456 %uint_1
|
||
|
%458 = OpLoad %float %457
|
||
|
OpStore %455 %458
|
||
|
%459 = OpLoad %uint %firstVertex
|
||
|
%460 = OpIMul %uint %459 %uint_3
|
||
|
%461 = OpLoad %uint %i_2
|
||
|
%462 = OpIMul %uint %461 %uint_3
|
||
|
%463 = OpIAdd %uint %460 %462
|
||
|
%464 = OpIAdd %uint %463 %uint_2
|
||
|
%465 = OpAccessChain %_ptr_StorageBuffer_float %normalsOut %uint_0 %464
|
||
|
%466 = OpLoad %uint %i_2
|
||
|
%467 = OpAccessChain %_ptr_Private_float %normals %466 %uint_2
|
||
|
%468 = OpLoad %float %467
|
||
|
OpStore %465 %468
|
||
|
OpBranch %402
|
||
|
%402 = OpLabel
|
||
|
%469 = OpLoad %uint %i_2
|
||
|
%470 = OpIAdd %uint %469 %uint_1
|
||
|
OpStore %i_2 %470
|
||
|
OpBranch %400
|
||
|
%401 = OpLabel
|
||
|
OpStore %i_3 %uint_0
|
||
|
OpBranch %472
|
||
|
%472 = OpLabel
|
||
|
OpLoopMerge %473 %474 None
|
||
|
OpBranch %475
|
||
|
%475 = OpLabel
|
||
|
%477 = OpLoad %uint %i_3
|
||
|
%478 = OpULessThan %bool %477 %372
|
||
|
%476 = OpLogicalNot %bool %478
|
||
|
OpSelectionMerge %479 None
|
||
|
OpBranchConditional %476 %480 %479
|
||
|
%480 = OpLabel
|
||
|
OpBranch %473
|
||
|
%479 = OpLabel
|
||
|
%481 = OpLoad %uint %i_3
|
||
|
%482 = OpIAdd %uint %371 %481
|
||
|
%483 = OpAccessChain %_ptr_StorageBuffer_int %tables %uint_1 %482
|
||
|
%484 = OpLoad %int %483
|
||
|
%485 = OpLoad %uint %i_3
|
||
|
%486 = OpIAdd %uint %398 %485
|
||
|
%487 = OpAccessChain %_ptr_StorageBuffer_uint %indicesOut %uint_0 %486
|
||
|
%488 = OpLoad %uint %firstVertex
|
||
|
%489 = OpAccessChain %_ptr_Private_uint %indices %484
|
||
|
%490 = OpLoad %uint %489
|
||
|
%491 = OpIAdd %uint %488 %490
|
||
|
OpStore %487 %491
|
||
|
OpBranch %474
|
||
|
%474 = OpLabel
|
||
|
%492 = OpLoad %uint %i_3
|
||
|
%493 = OpIAdd %uint %492 %uint_1
|
||
|
OpStore %i_3 %493
|
||
|
OpBranch %472
|
||
|
%473 = OpLabel
|
||
|
OpStore %i_4 %372
|
||
|
OpBranch %495
|
||
|
%495 = OpLabel
|
||
|
OpLoopMerge %496 %497 None
|
||
|
OpBranch %498
|
||
|
%498 = OpLabel
|
||
|
%500 = OpLoad %uint %i_4
|
||
|
%501 = OpULessThan %bool %500 %uint_15
|
||
|
%499 = OpLogicalNot %bool %501
|
||
|
OpSelectionMerge %502 None
|
||
|
OpBranchConditional %499 %503 %502
|
||
|
%503 = OpLabel
|
||
|
OpBranch %496
|
||
|
%502 = OpLabel
|
||
|
%504 = OpLoad %uint %i_4
|
||
|
%505 = OpIAdd %uint %398 %504
|
||
|
%506 = OpAccessChain %_ptr_StorageBuffer_uint %indicesOut %uint_0 %505
|
||
|
%507 = OpLoad %uint %firstVertex
|
||
|
OpStore %506 %507
|
||
|
OpBranch %497
|
||
|
%497 = OpLabel
|
||
|
%508 = OpLoad %uint %i_4
|
||
|
%509 = OpIAdd %uint %508 %uint_1
|
||
|
OpStore %i_4 %509
|
||
|
OpBranch %495
|
||
|
%496 = OpLabel
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|
||
|
%computeMain = OpFunction %void None %510
|
||
|
%512 = OpLabel
|
||
|
%514 = OpLoad %v3uint %global_id_1
|
||
|
%513 = OpFunctionCall %void %computeMain_inner %514
|
||
|
OpReturn
|
||
|
OpFunctionEnd
|