1OpCapability Shader 2%1 = OpExtInstImport "GLSL.std.450" 3OpMemoryModel Logical GLSL450 4OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_Clockwise %sk_FragColor 5OpExecutionMode %_entrypoint_v OriginUpperLeft 6OpName %sk_Clockwise "sk_Clockwise" 7OpName %sk_FragColor "sk_FragColor" 8OpName %_UniformBuffer "_UniformBuffer" 9OpMemberName %_UniformBuffer 0 "colorGreen" 10OpMemberName %_UniformBuffer 1 "colorRed" 11OpMemberName %_UniformBuffer 2 "testMatrix2x2" 12OpMemberName %_UniformBuffer 3 "testMatrix3x3" 13OpMemberName %_UniformBuffer 4 "testInputs" 14OpName %_entrypoint_v "_entrypoint_v" 15OpName %main "main" 16OpDecorate %sk_Clockwise BuiltIn FrontFacing 17OpDecorate %sk_FragColor RelaxedPrecision 18OpDecorate %sk_FragColor Location 0 19OpDecorate %sk_FragColor Index 0 20OpMemberDecorate %_UniformBuffer 0 Offset 0 21OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision 22OpMemberDecorate %_UniformBuffer 1 Offset 16 23OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision 24OpMemberDecorate %_UniformBuffer 2 Offset 32 25OpMemberDecorate %_UniformBuffer 2 ColMajor 26OpMemberDecorate %_UniformBuffer 2 MatrixStride 16 27OpMemberDecorate %_UniformBuffer 3 Offset 64 28OpMemberDecorate %_UniformBuffer 3 ColMajor 29OpMemberDecorate %_UniformBuffer 3 MatrixStride 16 30OpMemberDecorate %_UniformBuffer 4 Offset 112 31OpMemberDecorate %_UniformBuffer 4 RelaxedPrecision 32OpDecorate %_UniformBuffer Block 33OpDecorate %10 Binding 0 34OpDecorate %10 DescriptorSet 0 35OpDecorate %119 RelaxedPrecision 36OpDecorate %123 RelaxedPrecision 37OpDecorate %159 RelaxedPrecision 38OpDecorate %175 RelaxedPrecision 39OpDecorate %203 RelaxedPrecision 40OpDecorate %205 RelaxedPrecision 41OpDecorate %206 RelaxedPrecision 42%bool = OpTypeBool 43%_ptr_Input_bool = OpTypePointer Input %bool 44%sk_Clockwise = OpVariable %_ptr_Input_bool Input 45%float = OpTypeFloat 32 46%v4float = OpTypeVector %float 4 47%_ptr_Output_v4float = OpTypePointer Output %v4float 48%sk_FragColor = OpVariable %_ptr_Output_v4float Output 49%v2float = OpTypeVector %float 2 50%mat2v2float = OpTypeMatrix %v2float 2 51%v3float = OpTypeVector %float 3 52%mat3v3float = OpTypeMatrix %v3float 3 53%_UniformBuffer = OpTypeStruct %v4float %v4float %mat2v2float %mat3v3float %v4float 54%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer 55%10 = OpVariable %_ptr_Uniform__UniformBuffer Uniform 56%void = OpTypeVoid 57%19 = OpTypeFunction %void 58%float_0 = OpConstant %float 0 59%22 = OpConstantComposite %v2float %float_0 %float_0 60%_ptr_Function_v2float = OpTypePointer Function %v2float 61%26 = OpTypeFunction %v4float %_ptr_Function_v2float 62%false = OpConstantFalse %bool 63%_ptr_Uniform_mat2v2float = OpTypePointer Uniform %mat2v2float 64%int = OpTypeInt 32 1 65%int_2 = OpConstant %int 2 66%int_0 = OpConstant %int 0 67%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float 68%int_1 = OpConstant %int 1 69%float_3 = OpConstant %float 3 70%float_6 = OpConstant %float 6 71%float_4 = OpConstant %float 4 72%float_8 = OpConstant %float 8 73%47 = OpConstantComposite %v2float %float_3 %float_6 74%48 = OpConstantComposite %v2float %float_4 %float_8 75%49 = OpConstantComposite %mat2v2float %47 %48 76%v2bool = OpTypeVector %bool 2 77%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float 78%int_3 = OpConstant %int 3 79%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float 80%float_12 = OpConstant %float 12 81%float_5 = OpConstant %float 5 82%float_10 = OpConstant %float 10 83%float_15 = OpConstant %float 15 84%float_18 = OpConstant %float 18 85%75 = OpConstantComposite %v3float %float_4 %float_8 %float_12 86%76 = OpConstantComposite %v3float %float_5 %float_10 %float_15 87%77 = OpConstantComposite %v3float %float_6 %float_12 %float_18 88%78 = OpConstantComposite %mat3v3float %75 %76 %77 89%v3bool = OpTypeVector %bool 3 90%mat3v2float = OpTypeMatrix %v2float 3 91%102 = OpConstantComposite %v2float %float_5 %float_10 92%103 = OpConstantComposite %v2float %float_6 %float_12 93%104 = OpConstantComposite %mat3v2float %48 %102 %103 94%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float 95%int_4 = OpConstant %int 4 96%float_1 = OpConstant %float 1 97%float_2 = OpConstant %float 2 98%126 = OpConstantComposite %v4float %float_1 %float_0 %float_0 %float_2 99%mat4v4float = OpTypeMatrix %v4float 4 100%float_n1_25 = OpConstant %float -1.25 101%float_0_75 = OpConstant %float 0.75 102%float_2_25 = OpConstant %float 2.25 103%float_n2_5 = OpConstant %float -2.5 104%float_1_5 = OpConstant %float 1.5 105%float_4_5 = OpConstant %float 4.5 106%134 = OpConstantComposite %v4float %float_n1_25 %float_0 %float_0_75 %float_2_25 107%135 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 108%136 = OpConstantComposite %v4float %float_n2_5 %float_0 %float_1_5 %float_4_5 109%137 = OpConstantComposite %mat4v4float %134 %135 %135 %136 110%v4bool = OpTypeVector %bool 4 111%160 = OpConstantComposite %v2float %float_1 %float_2 112%mat2v4float = OpTypeMatrix %v4float 2 113%162 = OpConstantComposite %mat2v4float %134 %136 114%mat4v2float = OpTypeMatrix %v2float 4 115%177 = OpConstantComposite %v2float %float_n1_25 %float_n2_5 116%178 = OpConstantComposite %v2float %float_0_75 %float_1_5 117%179 = OpConstantComposite %v2float %float_2_25 %float_4_5 118%180 = OpConstantComposite %mat4v2float %177 %22 %178 %179 119%_ptr_Function_v4float = OpTypePointer Function %v4float 120%_entrypoint_v = OpFunction %void None %19 121%20 = OpLabel 122%23 = OpVariable %_ptr_Function_v2float Function 123OpStore %23 %22 124%25 = OpFunctionCall %v4float %main %23 125OpStore %sk_FragColor %25 126OpReturn 127OpFunctionEnd 128%main = OpFunction %v4float None %26 129%27 = OpFunctionParameter %_ptr_Function_v2float 130%28 = OpLabel 131%197 = OpVariable %_ptr_Function_v4float Function 132%31 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2 133%36 = OpAccessChain %_ptr_Uniform_v2float %31 %int_0 134%38 = OpLoad %v2float %36 135%39 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2 136%41 = OpAccessChain %_ptr_Uniform_v2float %39 %int_1 137%42 = OpLoad %v2float %41 138%30 = OpOuterProduct %mat2v2float %38 %42 139%51 = OpCompositeExtract %v2float %30 0 140%52 = OpFOrdEqual %v2bool %51 %47 141%53 = OpAll %bool %52 142%54 = OpCompositeExtract %v2float %30 1 143%55 = OpFOrdEqual %v2bool %54 %48 144%56 = OpAll %bool %55 145%57 = OpLogicalAnd %bool %53 %56 146OpSelectionMerge %59 None 147OpBranchConditional %57 %58 %59 148%58 = OpLabel 149%61 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3 150%64 = OpAccessChain %_ptr_Uniform_v3float %61 %int_0 151%66 = OpLoad %v3float %64 152%67 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3 153%68 = OpAccessChain %_ptr_Uniform_v3float %67 %int_1 154%69 = OpLoad %v3float %68 155%60 = OpOuterProduct %mat3v3float %66 %69 156%80 = OpCompositeExtract %v3float %60 0 157%81 = OpFOrdEqual %v3bool %80 %75 158%82 = OpAll %bool %81 159%83 = OpCompositeExtract %v3float %60 1 160%84 = OpFOrdEqual %v3bool %83 %76 161%85 = OpAll %bool %84 162%86 = OpLogicalAnd %bool %82 %85 163%87 = OpCompositeExtract %v3float %60 2 164%88 = OpFOrdEqual %v3bool %87 %77 165%89 = OpAll %bool %88 166%90 = OpLogicalAnd %bool %86 %89 167OpBranch %59 168%59 = OpLabel 169%91 = OpPhi %bool %false %28 %90 %58 170OpSelectionMerge %93 None 171OpBranchConditional %91 %92 %93 172%92 = OpLabel 173%95 = OpAccessChain %_ptr_Uniform_mat2v2float %10 %int_2 174%96 = OpAccessChain %_ptr_Uniform_v2float %95 %int_0 175%97 = OpLoad %v2float %96 176%98 = OpAccessChain %_ptr_Uniform_mat3v3float %10 %int_3 177%99 = OpAccessChain %_ptr_Uniform_v3float %98 %int_1 178%100 = OpLoad %v3float %99 179%94 = OpOuterProduct %mat3v2float %97 %100 180%105 = OpCompositeExtract %v2float %94 0 181%106 = OpFOrdEqual %v2bool %105 %48 182%107 = OpAll %bool %106 183%108 = OpCompositeExtract %v2float %94 1 184%109 = OpFOrdEqual %v2bool %108 %102 185%110 = OpAll %bool %109 186%111 = OpLogicalAnd %bool %107 %110 187%112 = OpCompositeExtract %v2float %94 2 188%113 = OpFOrdEqual %v2bool %112 %103 189%114 = OpAll %bool %113 190%115 = OpLogicalAnd %bool %111 %114 191OpBranch %93 192%93 = OpLabel 193%116 = OpPhi %bool %false %59 %115 %92 194OpSelectionMerge %118 None 195OpBranchConditional %116 %117 %118 196%117 = OpLabel 197%120 = OpAccessChain %_ptr_Uniform_v4float %10 %int_4 198%123 = OpLoad %v4float %120 199%119 = OpOuterProduct %mat4v4float %123 %126 200%139 = OpCompositeExtract %v4float %119 0 201%140 = OpFOrdEqual %v4bool %139 %134 202%141 = OpAll %bool %140 203%142 = OpCompositeExtract %v4float %119 1 204%143 = OpFOrdEqual %v4bool %142 %135 205%144 = OpAll %bool %143 206%145 = OpLogicalAnd %bool %141 %144 207%146 = OpCompositeExtract %v4float %119 2 208%147 = OpFOrdEqual %v4bool %146 %135 209%148 = OpAll %bool %147 210%149 = OpLogicalAnd %bool %145 %148 211%150 = OpCompositeExtract %v4float %119 3 212%151 = OpFOrdEqual %v4bool %150 %136 213%152 = OpAll %bool %151 214%153 = OpLogicalAnd %bool %149 %152 215OpBranch %118 216%118 = OpLabel 217%154 = OpPhi %bool %false %93 %153 %117 218OpSelectionMerge %156 None 219OpBranchConditional %154 %155 %156 220%155 = OpLabel 221%158 = OpAccessChain %_ptr_Uniform_v4float %10 %int_4 222%159 = OpLoad %v4float %158 223%157 = OpOuterProduct %mat2v4float %159 %160 224%163 = OpCompositeExtract %v4float %157 0 225%164 = OpFOrdEqual %v4bool %163 %134 226%165 = OpAll %bool %164 227%166 = OpCompositeExtract %v4float %157 1 228%167 = OpFOrdEqual %v4bool %166 %136 229%168 = OpAll %bool %167 230%169 = OpLogicalAnd %bool %165 %168 231OpBranch %156 232%156 = OpLabel 233%170 = OpPhi %bool %false %118 %169 %155 234OpSelectionMerge %172 None 235OpBranchConditional %170 %171 %172 236%171 = OpLabel 237%174 = OpAccessChain %_ptr_Uniform_v4float %10 %int_4 238%175 = OpLoad %v4float %174 239%173 = OpOuterProduct %mat4v2float %160 %175 240%181 = OpCompositeExtract %v2float %173 0 241%182 = OpFOrdEqual %v2bool %181 %177 242%183 = OpAll %bool %182 243%184 = OpCompositeExtract %v2float %173 1 244%185 = OpFOrdEqual %v2bool %184 %22 245%186 = OpAll %bool %185 246%187 = OpLogicalAnd %bool %183 %186 247%188 = OpCompositeExtract %v2float %173 2 248%189 = OpFOrdEqual %v2bool %188 %178 249%190 = OpAll %bool %189 250%191 = OpLogicalAnd %bool %187 %190 251%192 = OpCompositeExtract %v2float %173 3 252%193 = OpFOrdEqual %v2bool %192 %179 253%194 = OpAll %bool %193 254%195 = OpLogicalAnd %bool %191 %194 255OpBranch %172 256%172 = OpLabel 257%196 = OpPhi %bool %false %156 %195 %171 258OpSelectionMerge %201 None 259OpBranchConditional %196 %199 %200 260%199 = OpLabel 261%202 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0 262%203 = OpLoad %v4float %202 263OpStore %197 %203 264OpBranch %201 265%200 = OpLabel 266%204 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1 267%205 = OpLoad %v4float %204 268OpStore %197 %205 269OpBranch %201 270%201 = OpLabel 271%206 = OpLoad %v4float %197 272OpReturnValue %206 273OpFunctionEnd 274