1; SPIR-V 2; Version: 1.3 3; Generator: Unknown(30017); 21022 4; Bound: 233 5; Schema: 0 6 OpCapability Shader 7 OpCapability SampledBuffer 8 OpCapability ImageBuffer 9 OpCapability ImageQuery 10 OpCapability StorageImageWriteWithoutFormat 11 OpCapability GroupNonUniformBallot 12 OpCapability RuntimeDescriptorArray 13 OpCapability UniformTexelBufferArrayDynamicIndexing 14 OpCapability StorageTexelBufferArrayDynamicIndexing 15 OpCapability UniformTexelBufferArrayNonUniformIndexing 16 OpCapability StorageTexelBufferArrayNonUniformIndexing 17 OpCapability PhysicalStorageBufferAddresses 18 OpExtension "SPV_EXT_descriptor_indexing" 19 OpExtension "SPV_KHR_physical_storage_buffer" 20 OpMemoryModel PhysicalStorageBuffer64 GLSL450 21 OpEntryPoint GLCompute %main "main" %gl_GlobalInvocationID 22 OpExecutionMode %main LocalSize 1 1 1 23 OpName %main "main" 24 OpName %RootConstants "RootConstants" 25 OpName %registers "registers" 26 OpName %SSBO_Offsets "SSBO_Offsets" 27 OpDecorate %RootConstants Block 28 OpMemberDecorate %RootConstants 0 Offset 0 29 OpMemberDecorate %RootConstants 1 Offset 4 30 OpMemberDecorate %RootConstants 2 Offset 8 31 OpMemberDecorate %RootConstants 3 Offset 12 32 OpMemberDecorate %RootConstants 4 Offset 16 33 OpMemberDecorate %RootConstants 5 Offset 20 34 OpMemberDecorate %RootConstants 6 Offset 24 35 OpMemberDecorate %RootConstants 7 Offset 28 36 OpDecorate %_runtimearr_v2uint ArrayStride 8 37 OpMemberDecorate %SSBO_Offsets 0 Offset 0 38 OpDecorate %SSBO_Offsets Block 39 OpDecorate %13 DescriptorSet 0 40 OpDecorate %13 Binding 0 41 OpDecorate %13 NonWritable 42 OpDecorate %13 Restrict 43 OpDecorate %18 DescriptorSet 1 44 OpDecorate %18 Binding 0 45 OpDecorate %22 DescriptorSet 4 46 OpDecorate %22 Binding 0 47 OpDecorate %26 DescriptorSet 4 48 OpDecorate %26 Binding 0 49 OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId 50 OpDecorate %148 NonUniform 51 OpDecorate %149 NonUniform 52 OpDecorate %172 NonUniform 53 OpDecorate %173 NonUniform 54 OpDecorate %196 NonUniform 55 OpDecorate %197 NonUniform 56 OpDecorate %205 NonUniform 57 %void = OpTypeVoid 58 %2 = OpTypeFunction %void 59 %uint = OpTypeInt 32 0 60%RootConstants = OpTypeStruct %uint %uint %uint %uint %uint %uint %uint %uint 61%_ptr_PushConstant_RootConstants = OpTypePointer PushConstant %RootConstants 62 %registers = OpVariable %_ptr_PushConstant_RootConstants PushConstant 63 %v2uint = OpTypeVector %uint 2 64%_runtimearr_v2uint = OpTypeRuntimeArray %v2uint 65%SSBO_Offsets = OpTypeStruct %_runtimearr_v2uint 66%_ptr_StorageBuffer_SSBO_Offsets = OpTypePointer StorageBuffer %SSBO_Offsets 67 %13 = OpVariable %_ptr_StorageBuffer_SSBO_Offsets StorageBuffer 68 %float = OpTypeFloat 32 69 %15 = OpTypeImage %float Buffer 0 0 0 1 Unknown 70%_runtimearr_15 = OpTypeRuntimeArray %15 71%_ptr_UniformConstant__runtimearr_15 = OpTypePointer UniformConstant %_runtimearr_15 72 %18 = OpVariable %_ptr_UniformConstant__runtimearr_15 UniformConstant 73 %19 = OpTypeImage %float Buffer 0 0 0 2 R32f 74%_runtimearr_19 = OpTypeRuntimeArray %19 75%_ptr_UniformConstant__runtimearr_19 = OpTypePointer UniformConstant %_runtimearr_19 76 %22 = OpVariable %_ptr_UniformConstant__runtimearr_19 UniformConstant 77 %23 = OpTypeImage %uint Buffer 0 0 0 2 R32ui 78%_runtimearr_23 = OpTypeRuntimeArray %23 79%_ptr_UniformConstant__runtimearr_23 = OpTypePointer UniformConstant %_runtimearr_23 80 %26 = OpVariable %_ptr_UniformConstant__runtimearr_23 UniformConstant 81%_ptr_UniformConstant_23 = OpTypePointer UniformConstant %23 82%_ptr_PushConstant_uint = OpTypePointer PushConstant %uint 83 %uint_4 = OpConstant %uint 4 84 %uint_2 = OpConstant %uint 2 85 %uint_3 = OpConstant %uint 3 86%_ptr_StorageBuffer_v2uint = OpTypePointer StorageBuffer %v2uint 87 %uint_0 = OpConstant %uint 0 88%_ptr_UniformConstant_19 = OpTypePointer UniformConstant %19 89%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 90 %uint_1 = OpConstant %uint 1 91 %v3uint = OpTypeVector %uint 3 92%_ptr_Input_v3uint = OpTypePointer Input %v3uint 93%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input 94%_ptr_Input_uint = OpTypePointer Input %uint 95 %bool = OpTypeBool 96%uint_4294967295 = OpConstant %uint 4294967295 97 %v4float = OpTypeVector %float 4 98 %uint_1024 = OpConstant %uint 1024 99 %uint_2048 = OpConstant %uint 2048 100%_ptr_Image_uint = OpTypePointer Image %uint 101 %uint_40 = OpConstant %uint 40 102 %uint_50 = OpConstant %uint 50 103 %uint_70 = OpConstant %uint 70 104 %main = OpFunction %void None %2 105 %4 = OpLabel 106 OpBranch %231 107 %231 = OpLabel 108 %30 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 109 %32 = OpLoad %uint %30 110 %33 = OpIAdd %uint %32 %uint_2 111 %28 = OpAccessChain %_ptr_UniformConstant_23 %26 %33 112 %35 = OpLoad %23 %28 113 %36 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %33 114 %39 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %36 115 %41 = OpLoad %v2uint %39 116 %44 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 117 %45 = OpLoad %uint %44 118 %43 = OpAccessChain %_ptr_UniformConstant_19 %22 %45 119 %46 = OpLoad %19 %43 120 %47 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %45 121 %48 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %47 122 %49 = OpLoad %v2uint %48 123 %52 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1 124 %54 = OpLoad %uint %52 125 %55 = OpIAdd %uint %54 %uint_1 126 %51 = OpAccessChain %_ptr_UniformConstant_15 %18 %55 127 %56 = OpLoad %15 %51 128 %57 = OpGroupNonUniformBroadcastFirst %uint %uint_3 %55 129 %58 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %57 130 %59 = OpLoad %v2uint %58 131 %64 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_0 132 %65 = OpLoad %uint %64 133 %66 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_1 134 %67 = OpLoad %uint %66 135 %68 = OpAccessChain %_ptr_Input_uint %gl_GlobalInvocationID %uint_2 136 %69 = OpLoad %uint %68 137 %70 = OpIAdd %uint %65 %uint_4 138 %71 = OpCompositeExtract %uint %49 0 139 %72 = OpCompositeExtract %uint %49 1 140 %73 = OpIAdd %uint %70 %71 141 %75 = OpULessThan %bool %70 %72 142 %76 = OpSelect %uint %75 %73 %uint_4294967295 143 %79 = OpImageRead %v4float %46 %76 144 %80 = OpCompositeExtract %float %79 0 145 %81 = OpCompositeExtract %float %79 1 146 %82 = OpCompositeExtract %float %79 2 147 %83 = OpCompositeExtract %float %79 3 148 %84 = OpIAdd %uint %65 %uint_1024 149 %86 = OpCompositeExtract %uint %49 0 150 %87 = OpCompositeExtract %uint %49 1 151 %88 = OpIAdd %uint %84 %86 152 %89 = OpULessThan %bool %84 %87 153 %90 = OpSelect %uint %89 %88 %uint_4294967295 154 %91 = OpCompositeConstruct %v4float %80 %81 %82 %83 155 OpImageWrite %46 %90 %91 156 %92 = OpIAdd %uint %65 %uint_2 157 %93 = OpCompositeExtract %uint %59 0 158 %94 = OpCompositeExtract %uint %59 1 159 %95 = OpIAdd %uint %92 %93 160 %96 = OpULessThan %bool %92 %94 161 %97 = OpSelect %uint %96 %95 %uint_4294967295 162 %98 = OpImageFetch %v4float %56 %97 163 %99 = OpCompositeExtract %float %98 0 164 %100 = OpCompositeExtract %float %98 1 165 %101 = OpCompositeExtract %float %98 2 166 %102 = OpCompositeExtract %float %98 3 167 %103 = OpIAdd %uint %65 %uint_2048 168 %105 = OpCompositeExtract %uint %49 0 169 %106 = OpCompositeExtract %uint %49 1 170 %107 = OpIAdd %uint %103 %105 171 %108 = OpULessThan %bool %103 %106 172 %109 = OpSelect %uint %108 %107 %uint_4294967295 173 %110 = OpCompositeConstruct %v4float %99 %100 %101 %102 174 OpImageWrite %46 %109 %110 175 %111 = OpCompositeExtract %uint %41 0 176 %112 = OpCompositeExtract %uint %41 1 177 %113 = OpIAdd %uint %65 %111 178 %114 = OpULessThan %bool %65 %112 179 %115 = OpSelect %uint %114 %113 %uint_4294967295 180 %117 = OpImageTexelPointer %_ptr_Image_uint %28 %115 %uint_0 181 %118 = OpAtomicIAdd %uint %117 %uint_1 %uint_0 %uint_40 182 %120 = OpCompositeExtract %uint %41 0 183 %121 = OpCompositeExtract %uint %41 1 184 %122 = OpIAdd %uint %67 %120 185 %123 = OpULessThan %bool %67 %121 186 %124 = OpSelect %uint %123 %122 %uint_4294967295 187 %125 = OpImageTexelPointer %_ptr_Image_uint %28 %124 %uint_0 188 %126 = OpAtomicCompareExchange %uint %125 %uint_1 %uint_0 %uint_0 %uint_50 %uint_40 189 %128 = OpCompositeExtract %uint %49 1 190 %129 = OpConvertUToF %float %128 191 %130 = OpCompositeExtract %uint %49 0 192 %131 = OpCompositeExtract %uint %49 1 193 %132 = OpIAdd %uint %uint_0 %130 194 %133 = OpULessThan %bool %uint_0 %131 195 %134 = OpSelect %uint %133 %132 %uint_4294967295 196 %135 = OpCompositeConstruct %v4float %129 %129 %129 %129 197 OpImageWrite %46 %134 %135 198 %136 = OpCompositeExtract %uint %59 1 199 %137 = OpConvertUToF %float %136 200 %138 = OpCompositeExtract %uint %49 0 201 %139 = OpCompositeExtract %uint %49 1 202 %140 = OpIAdd %uint %uint_1 %138 203 %141 = OpULessThan %bool %uint_1 %139 204 %142 = OpSelect %uint %141 %140 %uint_4294967295 205 %143 = OpCompositeConstruct %v4float %137 %137 %137 %137 206 OpImageWrite %46 %142 %143 207 %144 = OpIAdd %uint %69 %uint_0 208 %146 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 209 %147 = OpLoad %uint %146 210 %148 = OpIAdd %uint %147 %144 211 %145 = OpAccessChain %_ptr_UniformConstant_19 %22 %148 212 %149 = OpLoad %19 %145 213 %150 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %148 214 %151 = OpLoad %v2uint %150 215 %152 = OpCompositeExtract %uint %151 0 216 %153 = OpCompositeExtract %uint %151 1 217 %154 = OpIAdd %uint %70 %152 218 %155 = OpULessThan %bool %70 %153 219 %156 = OpSelect %uint %155 %154 %uint_4294967295 220 %157 = OpImageRead %v4float %149 %156 221 %158 = OpCompositeExtract %float %157 0 222 %159 = OpCompositeExtract %float %157 1 223 %160 = OpCompositeExtract %float %157 2 224 %161 = OpCompositeExtract %float %157 3 225 %162 = OpCompositeExtract %uint %151 0 226 %163 = OpCompositeExtract %uint %151 1 227 %164 = OpIAdd %uint %84 %162 228 %165 = OpULessThan %bool %84 %163 229 %166 = OpSelect %uint %165 %164 %uint_4294967295 230 %167 = OpCompositeConstruct %v4float %158 %159 %160 %161 231 OpImageWrite %149 %166 %167 232 %168 = OpIAdd %uint %69 %uint_0 233 %170 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_1 234 %171 = OpLoad %uint %170 235 %172 = OpIAdd %uint %171 %168 236 %169 = OpAccessChain %_ptr_UniformConstant_15 %18 %172 237 %173 = OpLoad %15 %169 238 %174 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %172 239 %175 = OpLoad %v2uint %174 240 %176 = OpCompositeExtract %uint %175 0 241 %177 = OpCompositeExtract %uint %175 1 242 %178 = OpIAdd %uint %70 %176 243 %179 = OpULessThan %bool %70 %177 244 %180 = OpSelect %uint %179 %178 %uint_4294967295 245 %181 = OpImageFetch %v4float %173 %180 246 %182 = OpCompositeExtract %float %181 0 247 %183 = OpCompositeExtract %float %181 1 248 %184 = OpCompositeExtract %float %181 2 249 %185 = OpCompositeExtract %float %181 3 250 %186 = OpCompositeExtract %uint %151 0 251 %187 = OpCompositeExtract %uint %151 1 252 %188 = OpIAdd %uint %103 %186 253 %189 = OpULessThan %bool %103 %187 254 %190 = OpSelect %uint %189 %188 %uint_4294967295 255 %191 = OpCompositeConstruct %v4float %182 %183 %184 %185 256 OpImageWrite %149 %190 %191 257 %192 = OpIAdd %uint %69 %uint_0 258 %194 = OpAccessChain %_ptr_PushConstant_uint %registers %uint_4 259 %195 = OpLoad %uint %194 260 %196 = OpIAdd %uint %195 %192 261 %193 = OpAccessChain %_ptr_UniformConstant_23 %26 %196 262 %197 = OpLoad %23 %193 263 %198 = OpAccessChain %_ptr_StorageBuffer_v2uint %13 %uint_0 %196 264 %199 = OpLoad %v2uint %198 265 %200 = OpCompositeExtract %uint %199 0 266 %201 = OpCompositeExtract %uint %199 1 267 %202 = OpIAdd %uint %67 %200 268 %203 = OpULessThan %bool %67 %201 269 %204 = OpSelect %uint %203 %202 %uint_4294967295 270 %205 = OpImageTexelPointer %_ptr_Image_uint %193 %204 %uint_0 271 %206 = OpAtomicIAdd %uint %205 %uint_1 %uint_0 %uint_40 272 %207 = OpCompositeExtract %uint %199 0 273 %208 = OpCompositeExtract %uint %199 1 274 %209 = OpIAdd %uint %67 %207 275 %210 = OpULessThan %bool %67 %208 276 %211 = OpSelect %uint %210 %209 %uint_4294967295 277 %212 = OpImageTexelPointer %_ptr_Image_uint %193 %211 %uint_0 278 %213 = OpAtomicCompareExchange %uint %212 %uint_1 %uint_0 %uint_0 %uint_70 %uint_40 279 %215 = OpCompositeExtract %uint %151 1 280 %216 = OpConvertUToF %float %215 281 %217 = OpCompositeExtract %uint %49 0 282 %218 = OpCompositeExtract %uint %49 1 283 %219 = OpIAdd %uint %uint_2 %217 284 %220 = OpULessThan %bool %uint_2 %218 285 %221 = OpSelect %uint %220 %219 %uint_4294967295 286 %222 = OpCompositeConstruct %v4float %216 %216 %216 %216 287 OpImageWrite %46 %221 %222 288 %223 = OpCompositeExtract %uint %175 1 289 %224 = OpConvertUToF %float %223 290 %225 = OpCompositeExtract %uint %49 0 291 %226 = OpCompositeExtract %uint %49 1 292 %227 = OpIAdd %uint %uint_3 %225 293 %228 = OpULessThan %bool %uint_3 %226 294 %229 = OpSelect %uint %228 %227 %uint_4294967295 295 %230 = OpCompositeConstruct %v4float %224 %224 %224 %224 296 OpImageWrite %46 %229 %230 297 OpReturn 298 OpFunctionEnd 299