spirv-layout 0.4.0

SPIRV reflection utility for deriving Vulkan DescriptorSetLayouts
Documentation
; 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