wgpu/naga/tests/out/spv/shadow.spvasm
Samson 105cb9db31
[naga wgsl-in] Proper singular generic in vec and matrix (#6189)
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-09-02 14:04:51 +02:00

420 lines
12 KiB
Plaintext

; SPIR-V
; Version: 1.2
; Generator: rspirv
; Bound: 265
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %84 "vs_main" %74 %77 %79 %81 %83
OpEntryPoint Fragment %142 "fs_main" %133 %136 %139 %141
OpEntryPoint Fragment %210 "fs_main_without_storage" %203 %205 %207 %209
OpExecutionMode %142 OriginUpperLeft
OpExecutionMode %210 OriginUpperLeft
OpMemberName %8 0 "view_proj"
OpMemberName %8 1 "num_lights"
OpName %8 "Globals"
OpMemberName %9 0 "world"
OpMemberName %9 1 "color"
OpName %9 "Entity"
OpMemberName %11 0 "proj_position"
OpMemberName %11 1 "world_normal"
OpMemberName %11 2 "world_position"
OpName %11 "VertexOutput"
OpMemberName %15 0 "proj"
OpMemberName %15 1 "pos"
OpMemberName %15 2 "color"
OpName %15 "Light"
OpName %23 "c_ambient"
OpName %18 "c_max_lights"
OpName %24 "u_globals"
OpName %27 "u_entity"
OpName %30 "s_lights"
OpName %33 "u_lights"
OpName %36 "t_shadow"
OpName %38 "sampler_shadow"
OpName %41 "light_id"
OpName %42 "homogeneous_coords"
OpName %43 "fetch_shadow"
OpName %74 "position"
OpName %77 "normal"
OpName %79 "proj_position"
OpName %81 "world_normal"
OpName %83 "world_position"
OpName %84 "vs_main"
OpName %91 "out"
OpName %133 "proj_position"
OpName %136 "world_normal"
OpName %139 "world_position"
OpName %142 "fs_main"
OpName %149 "color"
OpName %150 "i"
OpName %203 "proj_position"
OpName %205 "world_normal"
OpName %207 "world_position"
OpName %210 "fs_main_without_storage"
OpName %217 "color"
OpName %218 "i"
OpMemberDecorate %8 0 Offset 0
OpMemberDecorate %8 0 ColMajor
OpMemberDecorate %8 0 MatrixStride 16
OpMemberDecorate %8 1 Offset 64
OpMemberDecorate %9 0 Offset 0
OpMemberDecorate %9 0 ColMajor
OpMemberDecorate %9 0 MatrixStride 16
OpMemberDecorate %9 1 Offset 64
OpMemberDecorate %11 0 Offset 0
OpMemberDecorate %11 1 Offset 16
OpMemberDecorate %11 2 Offset 32
OpMemberDecorate %15 0 Offset 0
OpMemberDecorate %15 0 ColMajor
OpMemberDecorate %15 0 MatrixStride 16
OpMemberDecorate %15 1 Offset 64
OpMemberDecorate %15 2 Offset 80
OpDecorate %16 ArrayStride 96
OpDecorate %17 ArrayStride 96
OpDecorate %24 DescriptorSet 0
OpDecorate %24 Binding 0
OpDecorate %25 Block
OpMemberDecorate %25 0 Offset 0
OpDecorate %27 DescriptorSet 1
OpDecorate %27 Binding 0
OpDecorate %28 Block
OpMemberDecorate %28 0 Offset 0
OpDecorate %30 NonWritable
OpDecorate %30 DescriptorSet 0
OpDecorate %30 Binding 1
OpDecorate %31 Block
OpMemberDecorate %31 0 Offset 0
OpDecorate %33 DescriptorSet 0
OpDecorate %33 Binding 1
OpDecorate %34 Block
OpMemberDecorate %34 0 Offset 0
OpDecorate %36 DescriptorSet 0
OpDecorate %36 Binding 2
OpDecorate %38 DescriptorSet 0
OpDecorate %38 Binding 3
OpDecorate %74 Location 0
OpDecorate %77 Location 1
OpDecorate %79 BuiltIn Position
OpDecorate %81 Location 0
OpDecorate %83 Location 1
OpDecorate %133 BuiltIn FragCoord
OpDecorate %136 Location 0
OpDecorate %139 Location 1
OpDecorate %141 Location 0
OpDecorate %203 BuiltIn FragCoord
OpDecorate %205 Location 0
OpDecorate %207 Location 1
OpDecorate %209 Location 0
%2 = OpTypeVoid
%3 = OpTypeFloat 32
%5 = OpTypeVector %3 4
%4 = OpTypeMatrix %5 4
%6 = OpTypeInt 32 0
%7 = OpTypeVector %6 4
%8 = OpTypeStruct %4 %7
%9 = OpTypeStruct %4 %5
%10 = OpTypeVector %3 3
%11 = OpTypeStruct %5 %10 %5
%13 = OpTypeInt 32 1
%12 = OpTypeVector %13 4
%14 = OpTypeMatrix %10 3
%15 = OpTypeStruct %4 %5 %5
%16 = OpTypeRuntimeArray %15
%18 = OpConstant %6 10
%17 = OpTypeArray %15 %18
%19 = OpTypeImage %3 2D 1 1 0 1 Unknown
%20 = OpTypeSampler
%21 = OpTypeVector %3 2
%22 = OpConstant %3 0.05
%23 = OpConstantComposite %10 %22 %22 %22
%25 = OpTypeStruct %8
%26 = OpTypePointer Uniform %25
%24 = OpVariable %26 Uniform
%28 = OpTypeStruct %9
%29 = OpTypePointer Uniform %28
%27 = OpVariable %29 Uniform
%31 = OpTypeStruct %16
%32 = OpTypePointer StorageBuffer %31
%30 = OpVariable %32 StorageBuffer
%34 = OpTypeStruct %17
%35 = OpTypePointer Uniform %34
%33 = OpVariable %35 Uniform
%37 = OpTypePointer UniformConstant %19
%36 = OpVariable %37 UniformConstant
%39 = OpTypePointer UniformConstant %20
%38 = OpVariable %39 UniformConstant
%44 = OpTypeFunction %3 %6 %5
%47 = OpConstant %3 0.0
%48 = OpConstant %3 1.0
%49 = OpConstant %3 0.5
%50 = OpConstant %3 -0.5
%51 = OpConstantComposite %21 %49 %50
%52 = OpConstantComposite %21 %49 %49
%55 = OpTypeBool
%68 = OpTypeSampledImage %19
%75 = OpTypePointer Input %12
%74 = OpVariable %75 Input
%77 = OpVariable %75 Input
%80 = OpTypePointer Output %5
%79 = OpVariable %80 Output
%82 = OpTypePointer Output %10
%81 = OpVariable %82 Output
%83 = OpVariable %80 Output
%85 = OpTypeFunction %2
%86 = OpTypePointer Uniform %8
%87 = OpConstant %6 0
%89 = OpTypePointer Uniform %9
%92 = OpTypePointer Function %11
%93 = OpConstantNull %11
%95 = OpTypePointer Uniform %4
%102 = OpTypePointer Function %10
%110 = OpTypeVector %13 3
%114 = OpConstant %6 1
%116 = OpTypePointer Function %5
%117 = OpConstant %6 2
%125 = OpTypePointer Output %3
%134 = OpTypePointer Input %5
%133 = OpVariable %134 Input
%137 = OpTypePointer Input %10
%136 = OpVariable %137 Input
%139 = OpVariable %134 Input
%141 = OpVariable %80 Output
%145 = OpTypePointer StorageBuffer %16
%151 = OpTypePointer Function %6
%160 = OpTypePointer Uniform %7
%161 = OpTypePointer Uniform %6
%171 = OpTypePointer StorageBuffer %15
%197 = OpTypePointer Uniform %5
%203 = OpVariable %134 Input
%205 = OpVariable %137 Input
%207 = OpVariable %134 Input
%209 = OpVariable %80 Output
%213 = OpTypePointer Uniform %17
%236 = OpTypePointer Uniform %15
%43 = OpFunction %3 None %44
%41 = OpFunctionParameter %6
%42 = OpFunctionParameter %5
%40 = OpLabel
%45 = OpLoad %19 %36
%46 = OpLoad %20 %38
OpBranch %53
%53 = OpLabel
%54 = OpCompositeExtract %3 %42 3
%56 = OpFOrdLessThanEqual %55 %54 %47
OpSelectionMerge %57 None
OpBranchConditional %56 %58 %57
%58 = OpLabel
OpReturnValue %48
%57 = OpLabel
%59 = OpCompositeExtract %3 %42 3
%60 = OpFDiv %3 %48 %59
%61 = OpVectorShuffle %21 %42 %42 0 1
%62 = OpFMul %21 %61 %51
%63 = OpVectorTimesScalar %21 %62 %60
%64 = OpFAdd %21 %63 %52
%65 = OpBitcast %13 %41
%66 = OpCompositeExtract %3 %42 2
%67 = OpFMul %3 %66 %60
%69 = OpConvertSToF %3 %65
%70 = OpCompositeConstruct %10 %64 %69
%71 = OpSampledImage %68 %45 %46
%72 = OpImageSampleDrefExplicitLod %3 %71 %70 %67 Lod %47
OpReturnValue %72
OpFunctionEnd
%84 = OpFunction %2 None %85
%73 = OpLabel
%91 = OpVariable %92 Function %93
%76 = OpLoad %12 %74
%78 = OpLoad %12 %77
%88 = OpAccessChain %86 %24 %87
%90 = OpAccessChain %89 %27 %87
OpBranch %94
%94 = OpLabel
%96 = OpAccessChain %95 %90 %87
%97 = OpLoad %4 %96
%98 = OpAccessChain %95 %90 %87
%99 = OpLoad %4 %98
%100 = OpConvertSToF %5 %76
%101 = OpMatrixTimesVector %5 %99 %100
%103 = OpCompositeExtract %5 %97 0
%104 = OpVectorShuffle %10 %103 %103 0 1 2
%105 = OpCompositeExtract %5 %97 1
%106 = OpVectorShuffle %10 %105 %105 0 1 2
%107 = OpCompositeExtract %5 %97 2
%108 = OpVectorShuffle %10 %107 %107 0 1 2
%109 = OpCompositeConstruct %14 %104 %106 %108
%111 = OpVectorShuffle %110 %78 %78 0 1 2
%112 = OpConvertSToF %10 %111
%113 = OpMatrixTimesVector %10 %109 %112
%115 = OpAccessChain %102 %91 %114
OpStore %115 %113
%118 = OpAccessChain %116 %91 %117
OpStore %118 %101
%119 = OpAccessChain %95 %88 %87
%120 = OpLoad %4 %119
%121 = OpMatrixTimesVector %5 %120 %101
%122 = OpAccessChain %116 %91 %87
OpStore %122 %121
%123 = OpLoad %11 %91
%124 = OpCompositeExtract %5 %123 0
OpStore %79 %124
%126 = OpAccessChain %125 %79 %114
%127 = OpLoad %3 %126
%128 = OpFNegate %3 %127
OpStore %126 %128
%129 = OpCompositeExtract %10 %123 1
OpStore %81 %129
%130 = OpCompositeExtract %5 %123 2
OpStore %83 %130
OpReturn
OpFunctionEnd
%142 = OpFunction %2 None %85
%131 = OpLabel
%149 = OpVariable %102 Function %23
%150 = OpVariable %151 Function %87
%135 = OpLoad %5 %133
%138 = OpLoad %10 %136
%140 = OpLoad %5 %139
%132 = OpCompositeConstruct %11 %135 %138 %140
%143 = OpAccessChain %86 %24 %87
%144 = OpAccessChain %89 %27 %87
%146 = OpAccessChain %145 %30 %87
%147 = OpLoad %19 %36
%148 = OpLoad %20 %38
OpBranch %152
%152 = OpLabel
%153 = OpCompositeExtract %10 %132 1
%154 = OpExtInst %10 %1 Normalize %153
OpBranch %155
%155 = OpLabel
OpLoopMerge %156 %158 None
OpBranch %157
%157 = OpLabel
%159 = OpLoad %6 %150
%162 = OpAccessChain %161 %143 %114 %87
%163 = OpLoad %6 %162
%164 = OpExtInst %6 %1 UMin %163 %18
%165 = OpULessThan %55 %159 %164
OpSelectionMerge %166 None
OpBranchConditional %165 %166 %167
%167 = OpLabel
OpBranch %156
%166 = OpLabel
OpBranch %168
%168 = OpLabel
%170 = OpLoad %6 %150
%172 = OpAccessChain %171 %146 %170
%173 = OpLoad %15 %172
%174 = OpLoad %6 %150
%175 = OpCompositeExtract %4 %173 0
%176 = OpCompositeExtract %5 %132 2
%177 = OpMatrixTimesVector %5 %175 %176
%178 = OpFunctionCall %3 %43 %174 %177
%179 = OpCompositeExtract %5 %173 1
%180 = OpVectorShuffle %10 %179 %179 0 1 2
%181 = OpCompositeExtract %5 %132 2
%182 = OpVectorShuffle %10 %181 %181 0 1 2
%183 = OpFSub %10 %180 %182
%184 = OpExtInst %10 %1 Normalize %183
%185 = OpDot %3 %154 %184
%186 = OpExtInst %3 %1 FMax %47 %185
%187 = OpFMul %3 %178 %186
%188 = OpCompositeExtract %5 %173 2
%189 = OpVectorShuffle %10 %188 %188 0 1 2
%190 = OpVectorTimesScalar %10 %189 %187
%191 = OpLoad %10 %149
%192 = OpFAdd %10 %191 %190
OpStore %149 %192
OpBranch %169
%169 = OpLabel
OpBranch %158
%158 = OpLabel
%193 = OpLoad %6 %150
%194 = OpIAdd %6 %193 %114
OpStore %150 %194
OpBranch %155
%156 = OpLabel
%195 = OpLoad %10 %149
%196 = OpCompositeConstruct %5 %195 %48
%198 = OpAccessChain %197 %144 %114
%199 = OpLoad %5 %198
%200 = OpFMul %5 %196 %199
OpStore %141 %200
OpReturn
OpFunctionEnd
%210 = OpFunction %2 None %85
%201 = OpLabel
%217 = OpVariable %102 Function %23
%218 = OpVariable %151 Function %87
%204 = OpLoad %5 %203
%206 = OpLoad %10 %205
%208 = OpLoad %5 %207
%202 = OpCompositeConstruct %11 %204 %206 %208
%211 = OpAccessChain %86 %24 %87
%212 = OpAccessChain %89 %27 %87
%214 = OpAccessChain %213 %33 %87
%215 = OpLoad %19 %36
%216 = OpLoad %20 %38
OpBranch %219
%219 = OpLabel
%220 = OpCompositeExtract %10 %202 1
%221 = OpExtInst %10 %1 Normalize %220
OpBranch %222
%222 = OpLabel
OpLoopMerge %223 %225 None
OpBranch %224
%224 = OpLabel
%226 = OpLoad %6 %218
%227 = OpAccessChain %161 %211 %114 %87
%228 = OpLoad %6 %227
%229 = OpExtInst %6 %1 UMin %228 %18
%230 = OpULessThan %55 %226 %229
OpSelectionMerge %231 None
OpBranchConditional %230 %231 %232
%232 = OpLabel
OpBranch %223
%231 = OpLabel
OpBranch %233
%233 = OpLabel
%235 = OpLoad %6 %218
%237 = OpAccessChain %236 %214 %235
%238 = OpLoad %15 %237
%239 = OpLoad %6 %218
%240 = OpCompositeExtract %4 %238 0
%241 = OpCompositeExtract %5 %202 2
%242 = OpMatrixTimesVector %5 %240 %241
%243 = OpFunctionCall %3 %43 %239 %242
%244 = OpCompositeExtract %5 %238 1
%245 = OpVectorShuffle %10 %244 %244 0 1 2
%246 = OpCompositeExtract %5 %202 2
%247 = OpVectorShuffle %10 %246 %246 0 1 2
%248 = OpFSub %10 %245 %247
%249 = OpExtInst %10 %1 Normalize %248
%250 = OpDot %3 %221 %249
%251 = OpExtInst %3 %1 FMax %47 %250
%252 = OpFMul %3 %243 %251
%253 = OpCompositeExtract %5 %238 2
%254 = OpVectorShuffle %10 %253 %253 0 1 2
%255 = OpVectorTimesScalar %10 %254 %252
%256 = OpLoad %10 %217
%257 = OpFAdd %10 %256 %255
OpStore %217 %257
OpBranch %234
%234 = OpLabel
OpBranch %225
%225 = OpLabel
%258 = OpLoad %6 %218
%259 = OpIAdd %6 %258 %114
OpStore %218 %259
OpBranch %222
%223 = OpLabel
%260 = OpLoad %10 %217
%261 = OpCompositeConstruct %5 %260 %48
%262 = OpAccessChain %197 %212 %114
%263 = OpLoad %5 %262
%264 = OpFMul %5 %261 %263
OpStore %209 %264
OpReturn
OpFunctionEnd