blob: 243bda2ea8404f2f17cfdb4328fe4e3b56c1ffed [file] [log] [blame]
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 258
; Schema: 0
OpCapability Shader
%168 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vertexMain "vertexMain" %position_1 %normal_1 %tangent_1 %texcoord_1 %joints_1 %weights_1 %instance0_1 %instance1_1 %instance2_1 %instance3_1 %instanceColor_1 %position_2 %worldPos_1 %view_1 %texcoord_2 %texcoord2_1 %color_1 %instanceColor_2 %normal_2 %tangent_2 %bitangent_1 %vertex_point_size
OpName %position_1 "position_1"
OpName %normal_1 "normal_1"
OpName %tangent_1 "tangent_1"
OpName %texcoord_1 "texcoord_1"
OpName %joints_1 "joints_1"
OpName %weights_1 "weights_1"
OpName %instance0_1 "instance0_1"
OpName %instance1_1 "instance1_1"
OpName %instance2_1 "instance2_1"
OpName %instance3_1 "instance3_1"
OpName %instanceColor_1 "instanceColor_1"
OpName %position_2 "position_2"
OpName %worldPos_1 "worldPos_1"
OpName %view_1 "view_1"
OpName %texcoord_2 "texcoord_2"
OpName %texcoord2_1 "texcoord2_1"
OpName %color_1 "color_1"
OpName %instanceColor_2 "instanceColor_2"
OpName %normal_2 "normal_2"
OpName %tangent_2 "tangent_2"
OpName %bitangent_1 "bitangent_1"
OpName %vertex_point_size "vertex_point_size"
OpName %Camera "Camera"
OpMemberName %Camera 0 "projection"
OpMemberName %Camera 1 "inverseProjection"
OpMemberName %Camera 2 "view"
OpMemberName %Camera 3 "position"
OpMemberName %Camera 4 "time"
OpMemberName %Camera 5 "outputSize"
OpMemberName %Camera 6 "zNear"
OpMemberName %Camera 7 "zFar"
OpName %camera "camera"
OpName %Joints "Joints"
OpMemberName %Joints 0 "matrices"
OpName %joint "joint"
OpName %inverseBind "inverseBind"
OpName %VertexInput "VertexInput"
OpMemberName %VertexInput 0 "position"
OpMemberName %VertexInput 1 "normal"
OpMemberName %VertexInput 2 "tangent"
OpMemberName %VertexInput 3 "texcoord"
OpMemberName %VertexInput 4 "joints"
OpMemberName %VertexInput 5 "weights"
OpMemberName %VertexInput 6 "instance0"
OpMemberName %VertexInput 7 "instance1"
OpMemberName %VertexInput 8 "instance2"
OpMemberName %VertexInput 9 "instance3"
OpMemberName %VertexInput 10 "instanceColor"
OpName %getInstanceMatrix "getInstanceMatrix"
OpName %input "input"
OpName %getSkinMatrix "getSkinMatrix"
OpName %input_0 "input"
OpName %VertexOutput "VertexOutput"
OpMemberName %VertexOutput 0 "position"
OpMemberName %VertexOutput 1 "worldPos"
OpMemberName %VertexOutput 2 "view"
OpMemberName %VertexOutput 3 "texcoord"
OpMemberName %VertexOutput 4 "texcoord2"
OpMemberName %VertexOutput 5 "color"
OpMemberName %VertexOutput 6 "instanceColor"
OpMemberName %VertexOutput 7 "normal"
OpMemberName %VertexOutput 8 "tangent"
OpMemberName %VertexOutput 9 "bitangent"
OpName %vertexMain_inner "vertexMain_inner"
OpName %input_1 "input"
OpName %output "output"
OpName %vertexMain "vertexMain"
OpDecorate %position_1 Location 0
OpDecorate %normal_1 Location 1
OpDecorate %tangent_1 Location 2
OpDecorate %texcoord_1 Location 3
OpDecorate %joints_1 Location 6
OpDecorate %weights_1 Location 7
OpDecorate %instance0_1 Location 8
OpDecorate %instance1_1 Location 9
OpDecorate %instance2_1 Location 10
OpDecorate %instance3_1 Location 11
OpDecorate %instanceColor_1 Location 12
OpDecorate %position_2 BuiltIn Position
OpDecorate %worldPos_1 Location 0
OpDecorate %view_1 Location 1
OpDecorate %texcoord_2 Location 2
OpDecorate %texcoord2_1 Location 3
OpDecorate %color_1 Location 4
OpDecorate %instanceColor_2 Location 5
OpDecorate %normal_2 Location 6
OpDecorate %tangent_2 Location 7
OpDecorate %bitangent_1 Location 8
OpDecorate %vertex_point_size BuiltIn PointSize
OpDecorate %Camera Block
OpMemberDecorate %Camera 0 Offset 0
OpMemberDecorate %Camera 0 ColMajor
OpMemberDecorate %Camera 0 MatrixStride 16
OpMemberDecorate %Camera 1 Offset 64
OpMemberDecorate %Camera 1 ColMajor
OpMemberDecorate %Camera 1 MatrixStride 16
OpMemberDecorate %Camera 2 Offset 128
OpMemberDecorate %Camera 2 ColMajor
OpMemberDecorate %Camera 2 MatrixStride 16
OpMemberDecorate %Camera 3 Offset 192
OpMemberDecorate %Camera 4 Offset 204
OpMemberDecorate %Camera 5 Offset 208
OpMemberDecorate %Camera 6 Offset 216
OpMemberDecorate %Camera 7 Offset 220
OpDecorate %camera NonWritable
OpDecorate %camera Binding 0
OpDecorate %camera DescriptorSet 0
OpDecorate %Joints Block
OpMemberDecorate %Joints 0 Offset 0
OpMemberDecorate %Joints 0 ColMajor
OpMemberDecorate %Joints 0 MatrixStride 16
OpDecorate %_runtimearr_mat4v4float ArrayStride 64
OpDecorate %joint NonWritable
OpDecorate %joint Binding 1
OpDecorate %joint DescriptorSet 0
OpDecorate %inverseBind NonWritable
OpDecorate %inverseBind Binding 2
OpDecorate %inverseBind DescriptorSet 0
OpMemberDecorate %VertexInput 0 Offset 0
OpMemberDecorate %VertexInput 1 Offset 16
OpMemberDecorate %VertexInput 2 Offset 32
OpMemberDecorate %VertexInput 3 Offset 48
OpMemberDecorate %VertexInput 4 Offset 64
OpMemberDecorate %VertexInput 5 Offset 80
OpMemberDecorate %VertexInput 6 Offset 96
OpMemberDecorate %VertexInput 7 Offset 112
OpMemberDecorate %VertexInput 8 Offset 128
OpMemberDecorate %VertexInput 9 Offset 144
OpMemberDecorate %VertexInput 10 Offset 160
OpMemberDecorate %VertexOutput 0 Offset 0
OpMemberDecorate %VertexOutput 1 Offset 16
OpMemberDecorate %VertexOutput 2 Offset 32
OpMemberDecorate %VertexOutput 3 Offset 48
OpMemberDecorate %VertexOutput 4 Offset 56
OpMemberDecorate %VertexOutput 5 Offset 64
OpMemberDecorate %VertexOutput 6 Offset 80
OpMemberDecorate %VertexOutput 7 Offset 96
OpMemberDecorate %VertexOutput 8 Offset 112
OpMemberDecorate %VertexOutput 9 Offset 128
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Input_v4float = OpTypePointer Input %v4float
%position_1 = OpVariable %_ptr_Input_v4float Input
%v3float = OpTypeVector %float 3
%_ptr_Input_v3float = OpTypePointer Input %v3float
%normal_1 = OpVariable %_ptr_Input_v3float Input
%tangent_1 = OpVariable %_ptr_Input_v4float Input
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%texcoord_1 = OpVariable %_ptr_Input_v2float Input
%uint = OpTypeInt 32 0
%v4uint = OpTypeVector %uint 4
%_ptr_Input_v4uint = OpTypePointer Input %v4uint
%joints_1 = OpVariable %_ptr_Input_v4uint Input
%weights_1 = OpVariable %_ptr_Input_v4float Input
%instance0_1 = OpVariable %_ptr_Input_v4float Input
%instance1_1 = OpVariable %_ptr_Input_v4float Input
%instance2_1 = OpVariable %_ptr_Input_v4float Input
%instance3_1 = OpVariable %_ptr_Input_v4float Input
%instanceColor_1 = OpVariable %_ptr_Input_v4float Input
%_ptr_Output_v4float = OpTypePointer Output %v4float
%24 = OpConstantNull %v4float
%position_2 = OpVariable %_ptr_Output_v4float Output %24
%_ptr_Output_v3float = OpTypePointer Output %v3float
%27 = OpConstantNull %v3float
%worldPos_1 = OpVariable %_ptr_Output_v3float Output %27
%view_1 = OpVariable %_ptr_Output_v3float Output %27
%_ptr_Output_v2float = OpTypePointer Output %v2float
%31 = OpConstantNull %v2float
%texcoord_2 = OpVariable %_ptr_Output_v2float Output %31
%texcoord2_1 = OpVariable %_ptr_Output_v2float Output %31
%color_1 = OpVariable %_ptr_Output_v4float Output %24
%instanceColor_2 = OpVariable %_ptr_Output_v4float Output %24
%normal_2 = OpVariable %_ptr_Output_v3float Output %27
%tangent_2 = OpVariable %_ptr_Output_v3float Output %27
%bitangent_1 = OpVariable %_ptr_Output_v3float Output %27
%_ptr_Output_float = OpTypePointer Output %float
%40 = OpConstantNull %float
%vertex_point_size = OpVariable %_ptr_Output_float Output %40
%mat4v4float = OpTypeMatrix %v4float 4
%Camera = OpTypeStruct %mat4v4float %mat4v4float %mat4v4float %v3float %float %v2float %float %float
%_ptr_Uniform_Camera = OpTypePointer Uniform %Camera
%camera = OpVariable %_ptr_Uniform_Camera Uniform
%_runtimearr_mat4v4float = OpTypeRuntimeArray %mat4v4float
%Joints = OpTypeStruct %_runtimearr_mat4v4float
%_ptr_StorageBuffer_Joints = OpTypePointer StorageBuffer %Joints
%joint = OpVariable %_ptr_StorageBuffer_Joints StorageBuffer
%inverseBind = OpVariable %_ptr_StorageBuffer_Joints StorageBuffer
%VertexInput = OpTypeStruct %v4float %v3float %v4float %v2float %v4uint %v4float %v4float %v4float %v4float %v4float %v4float
%50 = OpTypeFunction %mat4v4float %VertexInput
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_mat4v4float = OpTypePointer StorageBuffer %mat4v4float
%VertexOutput = OpTypeStruct %v4float %v3float %v3float %v2float %v2float %v4float %v4float %v3float %v3float %v3float
%155 = OpTypeFunction %VertexOutput %VertexInput
%_ptr_Function_VertexOutput = OpTypePointer Function %VertexOutput
%162 = OpConstantNull %VertexOutput
%uint_7 = OpConstant %uint 7
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_0 = OpConstant %float 0
%uint_8 = OpConstant %uint 8
%uint_9 = OpConstant %uint 9
%uint_5 = OpConstant %uint 5
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_1 = OpConstant %float 1
%202 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%uint_3 = OpConstant %uint 3
%_ptr_Function_v2float = OpTypePointer Function %v2float
%uint_6 = OpConstant %uint 6
%uint_1 = OpConstant %uint 1
%uint_2 = OpConstant %uint 2
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
%void = OpTypeVoid
%231 = OpTypeFunction %void
%getInstanceMatrix = OpFunction %mat4v4float None %50
%input = OpFunctionParameter %VertexInput
%54 = OpLabel
%55 = OpCompositeExtract %v4float %input 6
%56 = OpCompositeExtract %v4float %input 7
%57 = OpCompositeExtract %v4float %input 8
%58 = OpCompositeExtract %v4float %input 9
%59 = OpCompositeConstruct %mat4v4float %55 %56 %57 %58
OpReturnValue %59
OpFunctionEnd
%getSkinMatrix = OpFunction %mat4v4float None %50
%input_0 = OpFunctionParameter %VertexInput
%62 = OpLabel
%64 = OpCompositeExtract %v4uint %input_0 4
%65 = OpCompositeExtract %uint %64 0
%67 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %joint %uint_0 %65
%68 = OpLoad %mat4v4float %67
%69 = OpCompositeExtract %v4uint %input_0 4
%70 = OpCompositeExtract %uint %69 0
%71 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %inverseBind %uint_0 %70
%72 = OpLoad %mat4v4float %71
%73 = OpMatrixTimesMatrix %mat4v4float %68 %72
%74 = OpCompositeExtract %v4uint %input_0 4
%75 = OpCompositeExtract %uint %74 1
%76 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %joint %uint_0 %75
%77 = OpLoad %mat4v4float %76
%78 = OpCompositeExtract %v4uint %input_0 4
%79 = OpCompositeExtract %uint %78 1
%80 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %inverseBind %uint_0 %79
%81 = OpLoad %mat4v4float %80
%82 = OpMatrixTimesMatrix %mat4v4float %77 %81
%83 = OpCompositeExtract %v4uint %input_0 4
%84 = OpCompositeExtract %uint %83 2
%85 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %joint %uint_0 %84
%86 = OpLoad %mat4v4float %85
%87 = OpCompositeExtract %v4uint %input_0 4
%88 = OpCompositeExtract %uint %87 2
%89 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %inverseBind %uint_0 %88
%90 = OpLoad %mat4v4float %89
%91 = OpMatrixTimesMatrix %mat4v4float %86 %90
%92 = OpCompositeExtract %v4uint %input_0 4
%93 = OpCompositeExtract %uint %92 3
%94 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %joint %uint_0 %93
%95 = OpLoad %mat4v4float %94
%96 = OpCompositeExtract %v4uint %input_0 4
%97 = OpCompositeExtract %uint %96 3
%98 = OpAccessChain %_ptr_StorageBuffer_mat4v4float %inverseBind %uint_0 %97
%99 = OpLoad %mat4v4float %98
%100 = OpMatrixTimesMatrix %mat4v4float %95 %99
%101 = OpCompositeExtract %v4float %input_0 5
%102 = OpCompositeExtract %float %101 0
%103 = OpMatrixTimesScalar %mat4v4float %73 %102
%104 = OpCompositeExtract %v4float %input_0 5
%105 = OpCompositeExtract %float %104 1
%106 = OpMatrixTimesScalar %mat4v4float %82 %105
%108 = OpCompositeExtract %v4float %103 0
%109 = OpCompositeExtract %v4float %106 0
%110 = OpFAdd %v4float %108 %109
%111 = OpCompositeExtract %v4float %103 1
%112 = OpCompositeExtract %v4float %106 1
%113 = OpFAdd %v4float %111 %112
%114 = OpCompositeExtract %v4float %103 2
%115 = OpCompositeExtract %v4float %106 2
%116 = OpFAdd %v4float %114 %115
%117 = OpCompositeExtract %v4float %103 3
%118 = OpCompositeExtract %v4float %106 3
%119 = OpFAdd %v4float %117 %118
%120 = OpCompositeConstruct %mat4v4float %110 %113 %116 %119
%121 = OpCompositeExtract %v4float %input_0 5
%122 = OpCompositeExtract %float %121 2
%123 = OpMatrixTimesScalar %mat4v4float %91 %122
%125 = OpCompositeExtract %v4float %120 0
%126 = OpCompositeExtract %v4float %123 0
%127 = OpFAdd %v4float %125 %126
%128 = OpCompositeExtract %v4float %120 1
%129 = OpCompositeExtract %v4float %123 1
%130 = OpFAdd %v4float %128 %129
%131 = OpCompositeExtract %v4float %120 2
%132 = OpCompositeExtract %v4float %123 2
%133 = OpFAdd %v4float %131 %132
%134 = OpCompositeExtract %v4float %120 3
%135 = OpCompositeExtract %v4float %123 3
%136 = OpFAdd %v4float %134 %135
%137 = OpCompositeConstruct %mat4v4float %127 %130 %133 %136
%138 = OpCompositeExtract %v4float %input_0 5
%139 = OpCompositeExtract %float %138 3
%140 = OpMatrixTimesScalar %mat4v4float %100 %139
%142 = OpCompositeExtract %v4float %137 0
%143 = OpCompositeExtract %v4float %140 0
%144 = OpFAdd %v4float %142 %143
%145 = OpCompositeExtract %v4float %137 1
%146 = OpCompositeExtract %v4float %140 1
%147 = OpFAdd %v4float %145 %146
%148 = OpCompositeExtract %v4float %137 2
%149 = OpCompositeExtract %v4float %140 2
%150 = OpFAdd %v4float %148 %149
%151 = OpCompositeExtract %v4float %137 3
%152 = OpCompositeExtract %v4float %140 3
%153 = OpFAdd %v4float %151 %152
%154 = OpCompositeConstruct %mat4v4float %144 %147 %150 %153
OpReturnValue %154
OpFunctionEnd
%vertexMain_inner = OpFunction %VertexOutput None %155
%input_1 = OpFunctionParameter %VertexInput
%159 = OpLabel
%output = OpVariable %_ptr_Function_VertexOutput Function %162
%163 = OpFunctionCall %mat4v4float %getSkinMatrix %input_1
%166 = OpAccessChain %_ptr_Function_v3float %output %uint_7
%169 = OpCompositeExtract %v3float %input_1 1
%170 = OpCompositeExtract %float %169 0
%171 = OpCompositeExtract %float %169 1
%172 = OpCompositeExtract %float %169 2
%174 = OpCompositeConstruct %v4float %170 %171 %172 %float_0
%175 = OpMatrixTimesVector %v4float %163 %174
%176 = OpVectorShuffle %v3float %175 %175 0 1 2
%167 = OpExtInst %v3float %168 Normalize %176
OpStore %166 %167
%178 = OpAccessChain %_ptr_Function_v3float %output %uint_8
%180 = OpCompositeExtract %v4float %input_1 2
%181 = OpVectorShuffle %v3float %180 %180 0 1 2
%182 = OpCompositeExtract %float %181 0
%183 = OpCompositeExtract %float %181 1
%184 = OpCompositeExtract %float %181 2
%185 = OpCompositeConstruct %v4float %182 %183 %184 %float_0
%186 = OpMatrixTimesVector %v4float %163 %185
%187 = OpVectorShuffle %v3float %186 %186 0 1 2
%179 = OpExtInst %v3float %168 Normalize %187
OpStore %178 %179
%189 = OpAccessChain %_ptr_Function_v3float %output %uint_9
%191 = OpAccessChain %_ptr_Function_v3float %output %uint_7
%192 = OpLoad %v3float %191
%193 = OpAccessChain %_ptr_Function_v3float %output %uint_8
%194 = OpLoad %v3float %193
%190 = OpExtInst %v3float %168 Cross %192 %194
%195 = OpCompositeExtract %v4float %input_1 2
%196 = OpCompositeExtract %float %195 3
%197 = OpVectorTimesScalar %v3float %190 %196
OpStore %189 %197
%200 = OpAccessChain %_ptr_Function_v4float %output %uint_5
OpStore %200 %202
%205 = OpAccessChain %_ptr_Function_v2float %output %uint_3
%206 = OpCompositeExtract %v2float %input_1 3
OpStore %205 %206
%208 = OpAccessChain %_ptr_Function_v4float %output %uint_6
%209 = OpCompositeExtract %v4float %input_1 10
OpStore %208 %209
%210 = OpCompositeExtract %v4float %input_1 0
%211 = OpMatrixTimesVector %v4float %163 %210
%213 = OpAccessChain %_ptr_Function_v3float %output %uint_1
%214 = OpVectorShuffle %v3float %211 %211 0 1 2
OpStore %213 %214
%216 = OpAccessChain %_ptr_Function_v3float %output %uint_2
%218 = OpAccessChain %_ptr_Uniform_v3float %camera %uint_3
%219 = OpLoad %v3float %218
%220 = OpVectorShuffle %v3float %211 %211 0 1 2
%221 = OpFSub %v3float %219 %220
OpStore %216 %221
%222 = OpAccessChain %_ptr_Function_v4float %output %uint_0
%224 = OpAccessChain %_ptr_Uniform_mat4v4float %camera %uint_0
%225 = OpLoad %mat4v4float %224
%226 = OpAccessChain %_ptr_Uniform_mat4v4float %camera %uint_2
%227 = OpLoad %mat4v4float %226
%228 = OpMatrixTimesMatrix %mat4v4float %225 %227
%229 = OpMatrixTimesVector %v4float %228 %211
OpStore %222 %229
%230 = OpLoad %VertexOutput %output
OpReturnValue %230
OpFunctionEnd
%vertexMain = OpFunction %void None %231
%234 = OpLabel
%236 = OpLoad %v4float %position_1
%237 = OpLoad %v3float %normal_1
%238 = OpLoad %v4float %tangent_1
%239 = OpLoad %v2float %texcoord_1
%240 = OpLoad %v4uint %joints_1
%241 = OpLoad %v4float %weights_1
%242 = OpLoad %v4float %instance0_1
%243 = OpLoad %v4float %instance1_1
%244 = OpLoad %v4float %instance2_1
%245 = OpLoad %v4float %instance3_1
%246 = OpLoad %v4float %instanceColor_1
%247 = OpCompositeConstruct %VertexInput %236 %237 %238 %239 %240 %241 %242 %243 %244 %245 %246
%235 = OpFunctionCall %VertexOutput %vertexMain_inner %247
%248 = OpCompositeExtract %v4float %235 0
OpStore %position_2 %248
%249 = OpCompositeExtract %v3float %235 1
OpStore %worldPos_1 %249
%250 = OpCompositeExtract %v3float %235 2
OpStore %view_1 %250
%251 = OpCompositeExtract %v2float %235 3
OpStore %texcoord_2 %251
%252 = OpCompositeExtract %v2float %235 4
OpStore %texcoord2_1 %252
%253 = OpCompositeExtract %v4float %235 5
OpStore %color_1 %253
%254 = OpCompositeExtract %v4float %235 6
OpStore %instanceColor_2 %254
%255 = OpCompositeExtract %v3float %235 7
OpStore %normal_2 %255
%256 = OpCompositeExtract %v3float %235 8
OpStore %tangent_2 %256
%257 = OpCompositeExtract %v3float %235 9
OpStore %bitangent_1 %257
OpStore %vertex_point_size %float_1
OpReturn
OpFunctionEnd