; SPIR-V
; Version: 1.0
; Generator: Google Shaderc over Glslang; 11
; Bound: 74
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Vertex %main "main" %v_Uv %Vertex_Uv %Vertex_Position %__0 %Vertex_Normal
               OpSource GLSL 450
               OpSourceExtension "GL_GOOGLE_cpp_style_line_directive"
               OpSourceExtension "GL_GOOGLE_include_directive"
               OpName %main "main"
               OpName %test_constant "test_constant"
               OpName %TEST_CONSTANT "TEST_CONSTANT"
               OpName %TEST_CONSTANT_TRUE "TEST_CONSTANT_TRUE"
               OpName %TEST_CONSTANT_FALSE "TEST_CONSTANT_FALSE"
               OpName %v_Uv "v_Uv"
               OpName %Vertex_Uv "Vertex_Uv"
               OpName %position "position"
               OpName %Vertex_Position "Vertex_Position"
               OpName %Sprite_size "Sprite_size"
               OpMemberName %Sprite_size 0 "size"
               OpName %_ ""
               OpName %gl_PerVertex "gl_PerVertex"
               OpMemberName %gl_PerVertex 0 "gl_Position"
               OpMemberName %gl_PerVertex 1 "gl_PointSize"
               OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
               OpMemberName %gl_PerVertex 3 "gl_CullDistance"
               OpName %__0 ""
               OpName %Camera "Camera"
               OpMemberName %Camera 0 "ViewProj"
               OpName %__1 ""
               OpName %Transform "Transform"
               OpMemberName %Transform 0 "Model"
               OpName %__2 ""
               OpName %Vertex_Normal "Vertex_Normal"
               OpDecorate %TEST_CONSTANT SpecId 0
               OpDecorate %TEST_CONSTANT_TRUE SpecId 1
               OpDecorate %TEST_CONSTANT_FALSE SpecId 2
               OpDecorate %v_Uv Location 0
               OpDecorate %Vertex_Uv Location 2
               OpDecorate %Vertex_Position Location 0
               OpMemberDecorate %Sprite_size 0 Offset 0
               OpDecorate %Sprite_size Block
               OpDecorate %_ DescriptorSet 2
               OpDecorate %_ Binding 1
               OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
               OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
               OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
               OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
               OpDecorate %gl_PerVertex Block
               OpMemberDecorate %Camera 0 ColMajor
               OpMemberDecorate %Camera 0 Offset 0
               OpMemberDecorate %Camera 0 MatrixStride 16
               OpDecorate %Camera Block
               OpDecorate %__1 DescriptorSet 0
               OpDecorate %__1 Binding 0
               OpMemberDecorate %Transform 0 ColMajor
               OpMemberDecorate %Transform 0 Offset 0
               OpMemberDecorate %Transform 0 MatrixStride 16
               OpDecorate %Transform Block
               OpDecorate %__2 DescriptorSet 2
               OpDecorate %__2 Binding 0
               OpDecorate %Vertex_Normal Location 1
       %void = OpTypeVoid
          %3 = OpTypeFunction %void
      %float = OpTypeFloat 32
%_ptr_Function_float = OpTypePointer Function %float
%TEST_CONSTANT = OpSpecConstant %float 64
       %bool = OpTypeBool
%TEST_CONSTANT_TRUE = OpSpecConstantTrue %bool
    %float_0 = OpConstant %float 0
    %float_1 = OpConstant %float 1
%TEST_CONSTANT_FALSE = OpSpecConstantFalse %bool
    %v2float = OpTypeVector %float 2
%_ptr_Output_v2float = OpTypePointer Output %v2float
       %v_Uv = OpVariable %_ptr_Output_v2float Output
%_ptr_Input_v2float = OpTypePointer Input %v2float
  %Vertex_Uv = OpVariable %_ptr_Input_v2float Input
    %v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%_ptr_Input_v3float = OpTypePointer Input %v3float
%Vertex_Position = OpVariable %_ptr_Input_v3float Input
%Sprite_size = OpTypeStruct %v2float
%_ptr_Uniform_Sprite_size = OpTypePointer Uniform %Sprite_size
          %_ = OpVariable %_ptr_Uniform_Sprite_size Uniform
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
    %v4float = OpTypeVector %float 4
       %uint = OpTypeInt 32 0
     %uint_1 = OpConstant %uint 1
%_arr_float_uint_1 = OpTypeArray %float %uint_1
%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
        %__0 = OpVariable %_ptr_Output_gl_PerVertex Output
%mat4v4float = OpTypeMatrix %v4float 4
     %Camera = OpTypeStruct %mat4v4float
%_ptr_Uniform_Camera = OpTypePointer Uniform %Camera
        %__1 = OpVariable %_ptr_Uniform_Camera Uniform
%_ptr_Uniform_mat4v4float = OpTypePointer Uniform %mat4v4float
  %Transform = OpTypeStruct %mat4v4float
%_ptr_Uniform_Transform = OpTypePointer Uniform %Transform
        %__2 = OpVariable %_ptr_Uniform_Transform Uniform
%_ptr_Output_v4float = OpTypePointer Output %v4float
%Vertex_Normal = OpVariable %_ptr_Input_v3float Input
       %main = OpFunction %void None %3
          %5 = OpLabel
%test_constant = OpVariable %_ptr_Function_float Function
   %position = OpVariable %_ptr_Function_v3float Function
         %14 = OpSelect %float %TEST_CONSTANT_TRUE %float_1 %float_0
         %15 = OpFMul %float %TEST_CONSTANT %14
         %17 = OpSelect %float %TEST_CONSTANT_FALSE %float_1 %float_0
         %18 = OpFMul %float %15 %17
               OpStore %test_constant %18
         %24 = OpLoad %v2float %Vertex_Uv
               OpStore %v_Uv %24
         %30 = OpLoad %v3float %Vertex_Position
         %37 = OpAccessChain %_ptr_Uniform_v2float %_ %int_0
         %38 = OpLoad %v2float %37
         %39 = OpCompositeExtract %float %38 0
         %40 = OpCompositeExtract %float %38 1
         %41 = OpCompositeConstruct %v3float %39 %40 %float_1
         %42 = OpFMul %v3float %30 %41
               OpStore %position %42
         %55 = OpAccessChain %_ptr_Uniform_mat4v4float %__1 %int_0
         %56 = OpLoad %mat4v4float %55
         %60 = OpAccessChain %_ptr_Uniform_mat4v4float %__2 %int_0
         %61 = OpLoad %mat4v4float %60
         %62 = OpMatrixTimesMatrix %mat4v4float %56 %61
         %63 = OpLoad %v3float %position
         %64 = OpCompositeExtract %float %63 0
         %65 = OpCompositeExtract %float %63 1
         %66 = OpCompositeExtract %float %63 2
         %67 = OpCompositeConstruct %v4float %64 %65 %66 %float_1
         %68 = OpMatrixTimesVector %v4float %62 %67
         %69 = OpLoad %float %test_constant
         %70 = OpVectorTimesScalar %v4float %68 %69
         %72 = OpAccessChain %_ptr_Output_v4float %__0 %int_0
               OpStore %72 %70
               OpReturn
               OpFunctionEnd
