[vertex shader spirv] OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %main "main" %_ %pos %norm_coord OpSource GLSL 430 OpName %main "main" OpName %gl_PerVertex "gl_PerVertex" OpMemberName %gl_PerVertex 0 "gl_Position" OpName %_ "" OpName %pos "pos" OpName %norm_coord "norm_coord" OpMemberDecorate %gl_PerVertex 0 BuiltIn Position OpDecorate %gl_PerVertex Block OpDecorate %pos Location 0 OpDecorate %norm_coord Location 0 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %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 %_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex %_ = OpVariable %_ptr_Output_gl_PerVertex Output %int = OpTypeInt 32 1 %int_0 = OpConstant %int 0 %_ptr_Input_v4float = OpTypePointer Input %v4float %pos = OpVariable %_ptr_Input_v4float Input %_ptr_Output_v4float = OpTypePointer Output %v4float %norm_coord = OpVariable %_ptr_Output_v4float Output %main = OpFunction %void None %3 %5 = OpLabel %18 = OpLoad %v4float %pos %20 = OpAccessChain %_ptr_Output_v4float %_ %int_0 OpStore %20 %18 OpStore %norm_coord %18 OpReturn OpFunctionEnd [fragment shader spirv] OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %color %norm_coord OpExecutionMode %main OriginUpperLeft OpSource GLSL 430 OpName %main "main" OpName %color "color" OpName %norm_coord "norm_coord" OpDecorate %color Location 0 OpDecorate %norm_coord Location 0 %void = OpTypeVoid %3 = OpTypeFunction %void %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float %color = OpVariable %_ptr_Output_v4float Output %v2float = OpTypeVector %float 2 %float_1 = OpConstant %float 1 %12 = OpConstantComposite %v2float %float_1 %float_1 %bool = OpTypeBool %_ptr_Input_v4float = OpTypePointer Input %v4float %norm_coord = OpVariable %_ptr_Input_v4float Input %uint = OpTypeInt 32 0 %uint_0 = OpConstant %uint 0 %_ptr_Input_float = OpTypePointer Input %float %float_0_1 = OpConstant %float 0.1 %uint_1 = OpConstant %uint 1 %float_0 = OpConstant %float 0 %38 = OpConstantComposite %v2float %float_0 %float_0 %main = OpFunction %void None %3 %5 = OpLabel %13 = OpLoad %v4float %color %14 = OpVectorShuffle %v4float %13 %12 4 1 2 5 OpStore %color %14 %21 = OpAccessChain %_ptr_Input_float %norm_coord %uint_0 %22 = OpLoad %float %21 %23 = OpExtInst %float %1 FAbs %22 %25 = OpFOrdLessThan %bool %23 %float_0_1 %26 = OpLogicalNot %bool %25 OpSelectionMerge %28 None OpBranchConditional %26 %27 %28 %27 = OpLabel %30 = OpAccessChain %_ptr_Input_float %norm_coord %uint_1 %31 = OpLoad %float %30 %32 = OpExtInst %float %1 FAbs %31 %33 = OpFOrdLessThan %bool %32 %float_0_1 OpBranch %28 %28 = OpLabel %34 = OpPhi %bool %25 %5 %33 %27 OpSelectionMerge %36 None OpBranchConditional %34 %35 %41 %35 = OpLabel %39 = OpLoad %v4float %color %40 = OpVectorShuffle %v4float %39 %38 0 4 5 3 OpStore %color %40 OpBranch %36 %41 = OpLabel %42 = OpLoad %v4float %color %43 = OpVectorShuffle %v4float %42 %12 0 4 5 3 OpStore %color %43 OpBranch %36 %36 = OpLabel OpReturn OpFunctionEnd [test] draw rect -1 -1 2 2 probe rect rgba (0, 0, 11, 11) (1, 1, 1, 1) probe rect rgba (138, 0, 112, 11) (1, 1, 1, 1) probe rect rgba (0, 138, 11, 112) (1, 1, 1, 1) probe rect rgba (138, 138, 112, 112) (1, 1, 1, 1) probe rect rgba (114, 0, 23, 250) (1, 0, 0, 1) probe rect rgba (0, 114, 250, 23) (1, 0, 0, 1)