; SPIR-V
; Version: 1.5
; Generator: Google Shaderc over Glslang; 10
; Bound: 140
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %vert "vert" %u_Transform_0 %u_Cam_0 %vIn_position %vIn_color %vIn_normal %vIn_uv %_entryPointOutput_position %_entryPointOutput_worldNormal %_entryPointOutput_uv
OpSource HLSL 500
OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
OpSourceExtension "GL_GOOGLE_include_directive"
OpName %vert "vert"
OpName %u_Transform "u_Transform"
OpMemberName %u_Transform 0 "modelMatrix"
OpMemberName %u_Transform 1 "invModelMatrix"
OpName %u_Transform_0 "u_Transform"
OpName %u_Cam "u_Cam"
OpMemberName %u_Cam 0 "viewMatrix"
OpMemberName %u_Cam 1 "projMatrix"
OpMemberName %u_Cam 2 "invViewMatrix"
OpMemberName %u_Cam 3 "invProjMatrix"
OpMemberName %u_Cam 4 "position"
OpName %u_Cam_0 "u_Cam"
OpName %vIn_position "vIn.position"
OpName %vIn_color "vIn.color"
OpName %vIn_normal "vIn.normal"
OpName %vIn_uv "vIn.uv"
OpName %_entryPointOutput_position "@entryPointOutput.position"
OpName %_entryPointOutput_worldNormal "@entryPointOutput.worldNormal"
OpName %_entryPointOutput_uv "@entryPointOutput.uv"
OpMemberDecorate %u_Transform 0 RowMajor
OpMemberDecorate %u_Transform 0 Offset 0
OpMemberDecorate %u_Transform 0 MatrixStride 16
OpMemberDecorate %u_Transform 1 RowMajor
OpMemberDecorate %u_Transform 1 Offset 64
OpMemberDecorate %u_Transform 1 MatrixStride 16
OpDecorate %u_Transform Block
OpMemberDecorate %u_Cam 0 RowMajor
OpMemberDecorate %u_Cam 0 Offset 0
OpMemberDecorate %u_Cam 0 MatrixStride 16
OpMemberDecorate %u_Cam 1 RowMajor
OpMemberDecorate %u_Cam 1 Offset 64
OpMemberDecorate %u_Cam 1 MatrixStride 16
OpMemberDecorate %u_Cam 2 RowMajor
OpMemberDecorate %u_Cam 2 Offset 128
OpMemberDecorate %u_Cam 2 MatrixStride 16
OpMemberDecorate %u_Cam 3 RowMajor
OpMemberDecorate %u_Cam 3 Offset 192
OpMemberDecorate %u_Cam 3 MatrixStride 16
OpMemberDecorate %u_Cam 4 Offset 256
OpDecorate %u_Cam Block
OpDecorate %u_Cam_0 DescriptorSet 0
OpDecorate %u_Cam_0 Binding 0
OpDecorate %vIn_position Location 0
OpDecorate %vIn_color Location 1
OpDecorate %vIn_normal Location 2
OpDecorate %vIn_uv Location 3
OpDecorate %_entryPointOutput_position BuiltIn Position
OpDecorate %_entryPointOutput_worldNormal Location 0
OpDecorate %_entryPointOutput_uv Location 1
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%v2float = OpTypeVector %float 2
%v4float = OpTypeVector %float 4
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%float_1 = OpConstant %float 1
%mat4v4float = OpTypeMatrix %v4float 4
%u_Transform = OpTypeStruct %mat4v4float %mat4v4float
%_ptr_PushConstant_u_Transform = OpTypePointer PushConstant %u_Transform
%u_Transform_0 = OpVariable %_ptr_PushConstant_u_Transform PushConstant
%_ptr_PushConstant_mat4v4float = OpTypePointer PushConstant %mat4v4float
%u_Cam = OpTypeStruct %mat4v4float %mat4v4float %mat4v4float %mat4v4float %v3float
%_ptr_Uniform_u_Cam = OpTypePointer Uniform %u_Cam
%u_Cam_0 = OpVariable %_ptr_Uniform_u_Cam Uniform
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
%int_1 = OpConstant %int 1
%float_0 = OpConstant %float 0
%_ptr_Input_v3float = OpTypePointer Input %v3float
%vIn_position = OpVariable %_ptr_Input_v3float Input
%vIn_color = OpVariable %_ptr_Input_v3float Input
%vIn_normal = OpVariable %_ptr_Input_v3float Input
%_ptr_Input_v2float = OpTypePointer Input %v2float
%vIn_uv = OpVariable %_ptr_Input_v2float Input
%_ptr_Output_v4float = OpTypePointer Output %v4float
%_entryPointOutput_position = OpVariable %_ptr_Output_v4float Output
%_ptr_Output_v3float = OpTypePointer Output %v3float
%_entryPointOutput_worldNormal = OpVariable %_ptr_Output_v3float Output
%_ptr_Output_v2float = OpTypePointer Output %v2float
%_entryPointOutput_uv = OpVariable %_ptr_Output_v2float Output
%vert = OpFunction %void None %3
%5 = OpLabel
%75 = OpLoad %v3float %vIn_position
%81 = OpLoad %v3float %vIn_normal
%85 = OpLoad %v2float %vIn_uv
%115 = OpCompositeExtract %float %75 0
%116 = OpCompositeExtract %float %75 1
%117 = OpCompositeExtract %float %75 2
%118 = OpCompositeConstruct %v4float %115 %116 %117 %float_1
%119 = OpAccessChain %_ptr_PushConstant_mat4v4float %u_Transform_0 %int_0
%120 = OpLoad %mat4v4float %119
%121 = OpVectorTimesMatrix %v4float %118 %120
%122 = OpAccessChain %_ptr_Uniform_mat4v4float %u_Cam_0 %int_0
%123 = OpLoad %mat4v4float %122
%124 = OpVectorTimesMatrix %v4float %121 %123
%125 = OpAccessChain %_ptr_Uniform_mat4v4float %u_Cam_0 %int_1
%126 = OpLoad %mat4v4float %125
%127 = OpVectorTimesMatrix %v4float %124 %126
%131 = OpCompositeExtract %float %81 0
%132 = OpCompositeExtract %float %81 1
%133 = OpCompositeExtract %float %81 2
%134 = OpCompositeConstruct %v4float %131 %132 %133 %float_0
%135 = OpAccessChain %_ptr_PushConstant_mat4v4float %u_Transform_0 %int_1
%136 = OpLoad %mat4v4float %135
%137 = OpTranspose %mat4v4float %136
%138 = OpVectorTimesMatrix %v4float %134 %137
%139 = OpVectorShuffle %v3float %138 %138 0 1 2
OpStore %_entryPointOutput_position %127
OpStore %_entryPointOutput_worldNormal %139
OpStore %_entryPointOutput_uv %85
OpReturn
OpFunctionEnd