| ; SPIR-V |
| ; Version: 1.0 |
| ; Generator: Google spiregg; 0 |
| ; Bound: 179 |
| ; Schema: 0 |
| OpCapability Tessellation |
| OpCapability SampledBuffer |
| OpExtension "SPV_GOOGLE_hlsl_functionality1" |
| %1 = OpExtInstImport "GLSL.std.450" |
| OpMemoryModel Logical GLSL450 |
| OpEntryPoint TessellationControl %MainHull "main" %in_var_TEXCOORD10_centroid %in_var_TEXCOORD11_centroid %in_var_VS_To_DS_Position %gl_InvocationID %out_var_TEXCOORD10_centroid %out_var_TEXCOORD11_centroid %out_var_VS_To_DS_Position %out_var_Flat_DisplacementScales %out_var_Flat_TessellationMultiplier %out_var_Flat_WorldDisplacementMultiplier %gl_TessLevelOuter %gl_TessLevelInner |
| OpExecutionMode %MainHull Triangles |
| OpExecutionMode %MainHull SpacingFractionalOdd |
| OpExecutionMode %MainHull VertexOrderCw |
| OpExecutionMode %MainHull OutputVertices 3 |
| OpSource HLSL 600 |
| OpName %FFlatTessellationHSToDS "FFlatTessellationHSToDS" |
| OpMemberName %FFlatTessellationHSToDS 0 "PassSpecificData" |
| OpMemberName %FFlatTessellationHSToDS 1 "DisplacementScale" |
| OpMemberName %FFlatTessellationHSToDS 2 "TessellationMultiplier" |
| OpMemberName %FFlatTessellationHSToDS 3 "WorldDisplacementMultiplier" |
| OpName %FBasePassVSToDS "FBasePassVSToDS" |
| OpMemberName %FBasePassVSToDS 0 "FactoryInterpolants" |
| OpMemberName %FBasePassVSToDS 1 "BasePassInterpolants" |
| OpMemberName %FBasePassVSToDS 2 "Position" |
| OpName %FVertexFactoryInterpolantsVSToDS "FVertexFactoryInterpolantsVSToDS" |
| OpMemberName %FVertexFactoryInterpolantsVSToDS 0 "InterpolantsVSToPS" |
| OpName %FVertexFactoryInterpolantsVSToPS "FVertexFactoryInterpolantsVSToPS" |
| OpMemberName %FVertexFactoryInterpolantsVSToPS 0 "TangentToWorld0" |
| OpMemberName %FVertexFactoryInterpolantsVSToPS 1 "TangentToWorld2" |
| OpName %FBasePassInterpolantsVSToDS "FBasePassInterpolantsVSToDS" |
| OpName %FSharedBasePassInterpolants "FSharedBasePassInterpolants" |
| OpName %type_Primitive "type.Primitive" |
| OpMemberName %type_Primitive 0 "Primitive_LocalToWorld" |
| OpMemberName %type_Primitive 1 "Primitive_InvNonUniformScaleAndDeterminantSign" |
| OpMemberName %type_Primitive 2 "Primitive_ObjectWorldPositionAndRadius" |
| OpMemberName %type_Primitive 3 "Primitive_WorldToLocal" |
| OpMemberName %type_Primitive 4 "Primitive_PreviousLocalToWorld" |
| OpMemberName %type_Primitive 5 "Primitive_PreviousWorldToLocal" |
| OpMemberName %type_Primitive 6 "Primitive_ActorWorldPosition" |
| OpMemberName %type_Primitive 7 "Primitive_UseSingleSampleShadowFromStationaryLights" |
| OpMemberName %type_Primitive 8 "Primitive_ObjectBounds" |
| OpMemberName %type_Primitive 9 "Primitive_LpvBiasMultiplier" |
| OpMemberName %type_Primitive 10 "Primitive_DecalReceiverMask" |
| OpMemberName %type_Primitive 11 "Primitive_PerObjectGBufferData" |
| OpMemberName %type_Primitive 12 "Primitive_UseVolumetricLightmapShadowFromStationaryLights" |
| OpMemberName %type_Primitive 13 "Primitive_DrawsVelocity" |
| OpMemberName %type_Primitive 14 "Primitive_ObjectOrientation" |
| OpMemberName %type_Primitive 15 "Primitive_NonUniformScale" |
| OpMemberName %type_Primitive 16 "Primitive_LocalObjectBoundsMin" |
| OpMemberName %type_Primitive 17 "Primitive_LightingChannelMask" |
| OpMemberName %type_Primitive 18 "Primitive_LocalObjectBoundsMax" |
| OpMemberName %type_Primitive 19 "Primitive_LightmapDataIndex" |
| OpMemberName %type_Primitive 20 "Primitive_PreSkinnedLocalBounds" |
| OpMemberName %type_Primitive 21 "Primitive_SingleCaptureIndex" |
| OpMemberName %type_Primitive 22 "Primitive_OutputVelocity" |
| OpMemberName %type_Primitive 23 "PrePadding_Primitive_420" |
| OpMemberName %type_Primitive 24 "PrePadding_Primitive_424" |
| OpMemberName %type_Primitive 25 "PrePadding_Primitive_428" |
| OpMemberName %type_Primitive 26 "Primitive_CustomPrimitiveData" |
| OpName %Primitive "Primitive" |
| OpName %type_Material "type.Material" |
| OpMemberName %type_Material 0 "Material_VectorExpressions" |
| OpMemberName %type_Material 1 "Material_ScalarExpressions" |
| OpName %Material "Material" |
| OpName %in_var_TEXCOORD10_centroid "in.var.TEXCOORD10_centroid" |
| OpName %in_var_TEXCOORD11_centroid "in.var.TEXCOORD11_centroid" |
| OpName %in_var_VS_To_DS_Position "in.var.VS_To_DS_Position" |
| OpName %out_var_TEXCOORD10_centroid "out.var.TEXCOORD10_centroid" |
| OpName %out_var_TEXCOORD11_centroid "out.var.TEXCOORD11_centroid" |
| OpName %out_var_VS_To_DS_Position "out.var.VS_To_DS_Position" |
| OpName %out_var_Flat_DisplacementScales "out.var.Flat_DisplacementScales" |
| OpName %out_var_Flat_TessellationMultiplier "out.var.Flat_TessellationMultiplier" |
| OpName %out_var_Flat_WorldDisplacementMultiplier "out.var.Flat_WorldDisplacementMultiplier" |
| OpName %MainHull "MainHull" |
| OpName %param_var_I "param.var.I" |
| OpName %temp_var_hullMainRetVal "temp.var.hullMainRetVal" |
| OpName %if_merge "if.merge" |
| OpDecorateString %in_var_TEXCOORD10_centroid UserSemantic "TEXCOORD10_centroid" |
| OpDecorateString %in_var_TEXCOORD11_centroid UserSemantic "TEXCOORD11_centroid" |
| OpDecorateString %in_var_VS_To_DS_Position UserSemantic "VS_To_DS_Position" |
| OpDecorate %gl_InvocationID BuiltIn InvocationId |
| OpDecorateString %gl_InvocationID UserSemantic "SV_OutputControlPointID" |
| OpDecorateString %out_var_TEXCOORD10_centroid UserSemantic "TEXCOORD10_centroid" |
| OpDecorateString %out_var_TEXCOORD11_centroid UserSemantic "TEXCOORD11_centroid" |
| OpDecorateString %out_var_VS_To_DS_Position UserSemantic "VS_To_DS_Position" |
| OpDecorateString %out_var_Flat_DisplacementScales UserSemantic "Flat_DisplacementScales" |
| OpDecorateString %out_var_Flat_TessellationMultiplier UserSemantic "Flat_TessellationMultiplier" |
| OpDecorateString %out_var_Flat_WorldDisplacementMultiplier UserSemantic "Flat_WorldDisplacementMultiplier" |
| OpDecorate %gl_TessLevelOuter BuiltIn TessLevelOuter |
| OpDecorateString %gl_TessLevelOuter UserSemantic "SV_TessFactor" |
| OpDecorate %gl_TessLevelOuter Patch |
| OpDecorate %gl_TessLevelInner BuiltIn TessLevelInner |
| OpDecorateString %gl_TessLevelInner UserSemantic "SV_InsideTessFactor" |
| OpDecorate %gl_TessLevelInner Patch |
| OpDecorate %in_var_TEXCOORD10_centroid Location 0 |
| OpDecorate %in_var_TEXCOORD11_centroid Location 1 |
| OpDecorate %in_var_VS_To_DS_Position Location 2 |
| OpDecorate %out_var_Flat_DisplacementScales Location 0 |
| OpDecorate %out_var_Flat_TessellationMultiplier Location 1 |
| OpDecorate %out_var_Flat_WorldDisplacementMultiplier Location 2 |
| OpDecorate %out_var_TEXCOORD10_centroid Location 3 |
| OpDecorate %out_var_TEXCOORD11_centroid Location 4 |
| OpDecorate %out_var_VS_To_DS_Position Location 5 |
| OpDecorate %Primitive DescriptorSet 0 |
| OpDecorate %Primitive Binding 0 |
| OpDecorate %Material DescriptorSet 0 |
| OpDecorate %Material Binding 1 |
| OpDecorate %_arr_v4float_uint_4 ArrayStride 16 |
| OpMemberDecorate %type_Primitive 0 Offset 0 |
| OpMemberDecorate %type_Primitive 0 MatrixStride 16 |
| OpMemberDecorate %type_Primitive 0 ColMajor |
| OpMemberDecorate %type_Primitive 1 Offset 64 |
| OpMemberDecorate %type_Primitive 2 Offset 80 |
| OpMemberDecorate %type_Primitive 3 Offset 96 |
| OpMemberDecorate %type_Primitive 3 MatrixStride 16 |
| OpMemberDecorate %type_Primitive 3 ColMajor |
| OpMemberDecorate %type_Primitive 4 Offset 160 |
| OpMemberDecorate %type_Primitive 4 MatrixStride 16 |
| OpMemberDecorate %type_Primitive 4 ColMajor |
| OpMemberDecorate %type_Primitive 5 Offset 224 |
| OpMemberDecorate %type_Primitive 5 MatrixStride 16 |
| OpMemberDecorate %type_Primitive 5 ColMajor |
| OpMemberDecorate %type_Primitive 6 Offset 288 |
| OpMemberDecorate %type_Primitive 7 Offset 300 |
| OpMemberDecorate %type_Primitive 8 Offset 304 |
| OpMemberDecorate %type_Primitive 9 Offset 316 |
| OpMemberDecorate %type_Primitive 10 Offset 320 |
| OpMemberDecorate %type_Primitive 11 Offset 324 |
| OpMemberDecorate %type_Primitive 12 Offset 328 |
| OpMemberDecorate %type_Primitive 13 Offset 332 |
| OpMemberDecorate %type_Primitive 14 Offset 336 |
| OpMemberDecorate %type_Primitive 15 Offset 352 |
| OpMemberDecorate %type_Primitive 16 Offset 368 |
| OpMemberDecorate %type_Primitive 17 Offset 380 |
| OpMemberDecorate %type_Primitive 18 Offset 384 |
| OpMemberDecorate %type_Primitive 19 Offset 396 |
| OpMemberDecorate %type_Primitive 20 Offset 400 |
| OpMemberDecorate %type_Primitive 21 Offset 412 |
| OpMemberDecorate %type_Primitive 22 Offset 416 |
| OpMemberDecorate %type_Primitive 23 Offset 420 |
| OpMemberDecorate %type_Primitive 24 Offset 424 |
| OpMemberDecorate %type_Primitive 25 Offset 428 |
| OpMemberDecorate %type_Primitive 26 Offset 432 |
| OpDecorate %type_Primitive Block |
| OpDecorate %_arr_v4float_uint_3 ArrayStride 16 |
| OpDecorate %_arr_v4float_uint_1 ArrayStride 16 |
| OpMemberDecorate %type_Material 0 Offset 0 |
| OpMemberDecorate %type_Material 1 Offset 48 |
| OpDecorate %type_Material Block |
| %float = OpTypeFloat 32 |
| %v4float = OpTypeVector %float 4 |
| %mat4v4float = OpTypeMatrix %v4float 4 |
| %v3float = OpTypeVector %float 3 |
| %int = OpTypeInt 32 1 |
| %uint = OpTypeInt 32 0 |
| %uint_2 = OpConstant %uint 2 |
| %uint_4 = OpConstant %uint 4 |
| %uint_0 = OpConstant %uint 0 |
| %uint_1 = OpConstant %uint 1 |
| %uint_3 = OpConstant %uint 3 |
| %_arr_float_uint_3 = OpTypeArray %float %uint_3 |
| %int_0 = OpConstant %int 0 |
| %int_2 = OpConstant %int 2 |
| %float_0_5 = OpConstant %float 0.5 |
| %int_1 = OpConstant %int 1 |
| %float_0_333000004 = OpConstant %float 0.333000004 |
| %float_1 = OpConstant %float 1 |
| %49 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 |
| %float_15 = OpConstant %float 15 |
| %51 = OpConstantComposite %v4float %float_15 %float_15 %float_15 %float_15 |
| %FVertexFactoryInterpolantsVSToPS = OpTypeStruct %v4float %v4float |
| %FVertexFactoryInterpolantsVSToDS = OpTypeStruct %FVertexFactoryInterpolantsVSToPS |
| %FSharedBasePassInterpolants = OpTypeStruct |
| %FBasePassInterpolantsVSToDS = OpTypeStruct %FSharedBasePassInterpolants |
| %FBasePassVSToDS = OpTypeStruct %FVertexFactoryInterpolantsVSToDS %FBasePassInterpolantsVSToDS %v4float |
| %FFlatTessellationHSToDS = OpTypeStruct %FBasePassVSToDS %v3float %float %float |
| %int_15 = OpConstant %int 15 |
| %_arr_v4float_uint_4 = OpTypeArray %v4float %uint_4 |
| %type_Primitive = OpTypeStruct %mat4v4float %v4float %v4float %mat4v4float %mat4v4float %mat4v4float %v3float %float %v3float %float %float %float %float %float %v4float %v4float %v3float %uint %v3float %uint %v3float %int %uint %uint %uint %uint %_arr_v4float_uint_4 |
| %_ptr_Uniform_type_Primitive = OpTypePointer Uniform %type_Primitive |
| %_arr_v4float_uint_3 = OpTypeArray %v4float %uint_3 |
| %_arr_v4float_uint_1 = OpTypeArray %v4float %uint_1 |
| %type_Material = OpTypeStruct %_arr_v4float_uint_3 %_arr_v4float_uint_1 |
| %_ptr_Uniform_type_Material = OpTypePointer Uniform %type_Material |
| %_arr_v4float_uint_3_0 = OpTypeArray %v4float %uint_3 |
| %_ptr_Input__arr_v4float_uint_3_0 = OpTypePointer Input %_arr_v4float_uint_3_0 |
| %_ptr_Input_uint = OpTypePointer Input %uint |
| %_ptr_Output__arr_v4float_uint_3_0 = OpTypePointer Output %_arr_v4float_uint_3_0 |
| %_arr_v3float_uint_3 = OpTypeArray %v3float %uint_3 |
| %_ptr_Output__arr_v3float_uint_3 = OpTypePointer Output %_arr_v3float_uint_3 |
| %_ptr_Output__arr_float_uint_3 = OpTypePointer Output %_arr_float_uint_3 |
| %_arr_float_uint_4 = OpTypeArray %float %uint_4 |
| %_ptr_Output__arr_float_uint_4 = OpTypePointer Output %_arr_float_uint_4 |
| %_arr_float_uint_2 = OpTypeArray %float %uint_2 |
| %_ptr_Output__arr_float_uint_2 = OpTypePointer Output %_arr_float_uint_2 |
| %void = OpTypeVoid |
| %67 = OpTypeFunction %void |
| %_arr_FBasePassVSToDS_uint_3 = OpTypeArray %FBasePassVSToDS %uint_3 |
| %_ptr_Function__arr_FBasePassVSToDS_uint_3 = OpTypePointer Function %_arr_FBasePassVSToDS_uint_3 |
| %_arr_FFlatTessellationHSToDS_uint_3 = OpTypeArray %FFlatTessellationHSToDS %uint_3 |
| %_ptr_Function__arr_FFlatTessellationHSToDS_uint_3 = OpTypePointer Function %_arr_FFlatTessellationHSToDS_uint_3 |
| %_ptr_Workgroup__arr_FFlatTessellationHSToDS_uint_3 = OpTypePointer Workgroup %_arr_FFlatTessellationHSToDS_uint_3 |
| %_ptr_Output_v4float = OpTypePointer Output %v4float |
| %_ptr_Output_v3float = OpTypePointer Output %v3float |
| %_ptr_Output_float = OpTypePointer Output %float |
| %_ptr_Function_FFlatTessellationHSToDS = OpTypePointer Function %FFlatTessellationHSToDS |
| %_ptr_Workgroup_FFlatTessellationHSToDS = OpTypePointer Workgroup %FFlatTessellationHSToDS |
| %bool = OpTypeBool |
| %_ptr_Function_float = OpTypePointer Function %float |
| %_ptr_Workgroup_float = OpTypePointer Workgroup %float |
| %mat3v3float = OpTypeMatrix %v3float 3 |
| %_ptr_Function_FVertexFactoryInterpolantsVSToDS = OpTypePointer Function %FVertexFactoryInterpolantsVSToDS |
| %_ptr_Function_FBasePassVSToDS = OpTypePointer Function %FBasePassVSToDS |
| %_ptr_Uniform_v4float = OpTypePointer Uniform %v4float |
| %_ptr_Uniform_float = OpTypePointer Uniform %float |
| %Primitive = OpVariable %_ptr_Uniform_type_Primitive Uniform |
| %Material = OpVariable %_ptr_Uniform_type_Material Uniform |
| %in_var_TEXCOORD10_centroid = OpVariable %_ptr_Input__arr_v4float_uint_3_0 Input |
| %in_var_TEXCOORD11_centroid = OpVariable %_ptr_Input__arr_v4float_uint_3_0 Input |
| %in_var_VS_To_DS_Position = OpVariable %_ptr_Input__arr_v4float_uint_3_0 Input |
| %gl_InvocationID = OpVariable %_ptr_Input_uint Input |
| %out_var_TEXCOORD10_centroid = OpVariable %_ptr_Output__arr_v4float_uint_3_0 Output |
| %out_var_TEXCOORD11_centroid = OpVariable %_ptr_Output__arr_v4float_uint_3_0 Output |
| %out_var_VS_To_DS_Position = OpVariable %_ptr_Output__arr_v4float_uint_3_0 Output |
| %out_var_Flat_DisplacementScales = OpVariable %_ptr_Output__arr_v3float_uint_3 Output |
| %out_var_Flat_TessellationMultiplier = OpVariable %_ptr_Output__arr_float_uint_3 Output |
| %out_var_Flat_WorldDisplacementMultiplier = OpVariable %_ptr_Output__arr_float_uint_3 Output |
| %gl_TessLevelOuter = OpVariable %_ptr_Output__arr_float_uint_4 Output |
| %gl_TessLevelInner = OpVariable %_ptr_Output__arr_float_uint_2 Output |
| %83 = OpConstantNull %FSharedBasePassInterpolants |
| %84 = OpConstantComposite %FBasePassInterpolantsVSToDS %83 |
| %85 = OpUndef %v4float |
| |
| ; XXX: Original asm used Function here, which is wrong. |
| ; This patches the SPIR-V to be correct. |
| %temp_var_hullMainRetVal = OpVariable %_ptr_Workgroup__arr_FFlatTessellationHSToDS_uint_3 Workgroup |
| |
| %MainHull = OpFunction %void None %67 |
| %86 = OpLabel |
| %param_var_I = OpVariable %_ptr_Function__arr_FBasePassVSToDS_uint_3 Function |
| %87 = OpLoad %_arr_v4float_uint_3_0 %in_var_TEXCOORD10_centroid |
| %88 = OpLoad %_arr_v4float_uint_3_0 %in_var_TEXCOORD11_centroid |
| %89 = OpCompositeExtract %v4float %87 0 |
| %90 = OpCompositeExtract %v4float %88 0 |
| %91 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToPS %89 %90 |
| %92 = OpCompositeExtract %v4float %87 1 |
| %93 = OpCompositeExtract %v4float %88 1 |
| %94 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToPS %92 %93 |
| %95 = OpCompositeExtract %v4float %87 2 |
| %96 = OpCompositeExtract %v4float %88 2 |
| %97 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToPS %95 %96 |
| %98 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToDS %91 |
| %99 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToDS %94 |
| %100 = OpCompositeConstruct %FVertexFactoryInterpolantsVSToDS %97 |
| %101 = OpLoad %_arr_v4float_uint_3_0 %in_var_VS_To_DS_Position |
| %102 = OpCompositeExtract %v4float %101 0 |
| %103 = OpCompositeConstruct %FBasePassVSToDS %98 %84 %102 |
| %104 = OpCompositeExtract %v4float %101 1 |
| %105 = OpCompositeConstruct %FBasePassVSToDS %99 %84 %104 |
| %106 = OpCompositeExtract %v4float %101 2 |
| %107 = OpCompositeConstruct %FBasePassVSToDS %100 %84 %106 |
| %108 = OpCompositeConstruct %_arr_FBasePassVSToDS_uint_3 %103 %105 %107 |
| OpStore %param_var_I %108 |
| %109 = OpLoad %uint %gl_InvocationID |
| %110 = OpAccessChain %_ptr_Function_FVertexFactoryInterpolantsVSToDS %param_var_I %109 %int_0 |
| %111 = OpLoad %FVertexFactoryInterpolantsVSToDS %110 |
| %112 = OpCompositeExtract %FVertexFactoryInterpolantsVSToPS %111 0 |
| %113 = OpCompositeExtract %v4float %112 0 |
| %114 = OpCompositeExtract %v4float %112 1 |
| %115 = OpVectorShuffle %v3float %113 %113 0 1 2 |
| %116 = OpVectorShuffle %v3float %114 %114 0 1 2 |
| %117 = OpExtInst %v3float %1 Cross %116 %115 |
| %118 = OpCompositeExtract %float %114 3 |
| %119 = OpCompositeConstruct %v3float %118 %118 %118 |
| %120 = OpFMul %v3float %117 %119 |
| %121 = OpCompositeConstruct %mat3v3float %115 %120 %116 |
| %122 = OpAccessChain %_ptr_Uniform_v4float %Primitive %int_15 |
| %123 = OpLoad %v4float %122 |
| %124 = OpVectorShuffle %v3float %123 %123 0 1 2 |
| %125 = OpVectorTimesMatrix %v3float %124 %121 |
| %126 = OpAccessChain %_ptr_Function_FBasePassVSToDS %param_var_I %109 |
| %127 = OpLoad %FBasePassVSToDS %126 |
| %128 = OpAccessChain %_ptr_Uniform_float %Material %int_1 %int_0 %int_0 |
| %129 = OpLoad %float %128 |
| %130 = OpCompositeConstruct %FFlatTessellationHSToDS %127 %125 %129 %float_1 |
| %131 = OpCompositeExtract %FVertexFactoryInterpolantsVSToDS %127 0 |
| %132 = OpCompositeExtract %FVertexFactoryInterpolantsVSToPS %131 0 |
| %133 = OpCompositeExtract %v4float %132 0 |
| %134 = OpAccessChain %_ptr_Output_v4float %out_var_TEXCOORD10_centroid %109 |
| OpStore %134 %133 |
| %135 = OpCompositeExtract %v4float %132 1 |
| %136 = OpAccessChain %_ptr_Output_v4float %out_var_TEXCOORD11_centroid %109 |
| OpStore %136 %135 |
| %137 = OpCompositeExtract %v4float %127 2 |
| %138 = OpAccessChain %_ptr_Output_v4float %out_var_VS_To_DS_Position %109 |
| OpStore %138 %137 |
| %139 = OpAccessChain %_ptr_Output_v3float %out_var_Flat_DisplacementScales %109 |
| OpStore %139 %125 |
| %140 = OpAccessChain %_ptr_Output_float %out_var_Flat_TessellationMultiplier %109 |
| OpStore %140 %129 |
| %141 = OpAccessChain %_ptr_Output_float %out_var_Flat_WorldDisplacementMultiplier %109 |
| OpStore %141 %float_1 |
| %142 = OpAccessChain %_ptr_Workgroup_FFlatTessellationHSToDS %temp_var_hullMainRetVal %109 |
| OpStore %142 %130 |
| OpControlBarrier %uint_2 %uint_4 %uint_0 |
| %143 = OpIEqual %bool %109 %uint_0 |
| OpSelectionMerge %if_merge None |
| OpBranchConditional %143 %144 %if_merge |
| %144 = OpLabel |
| %145 = OpAccessChain %_ptr_Workgroup_float %temp_var_hullMainRetVal %uint_1 %int_2 |
| %146 = OpLoad %float %145 |
| %147 = OpAccessChain %_ptr_Workgroup_float %temp_var_hullMainRetVal %uint_2 %int_2 |
| %148 = OpLoad %float %147 |
| %149 = OpFAdd %float %146 %148 |
| %150 = OpFMul %float %float_0_5 %149 |
| %151 = OpCompositeInsert %v4float %150 %85 0 |
| %152 = OpLoad %float %147 |
| %153 = OpAccessChain %_ptr_Workgroup_float %temp_var_hullMainRetVal %uint_0 %int_2 |
| %154 = OpLoad %float %153 |
| %155 = OpFAdd %float %152 %154 |
| %156 = OpFMul %float %float_0_5 %155 |
| %157 = OpCompositeInsert %v4float %156 %151 1 |
| %158 = OpLoad %float %153 |
| %159 = OpLoad %float %145 |
| %160 = OpFAdd %float %158 %159 |
| %161 = OpFMul %float %float_0_5 %160 |
| %162 = OpCompositeInsert %v4float %161 %157 2 |
| %163 = OpLoad %float %153 |
| %164 = OpLoad %float %145 |
| %165 = OpFAdd %float %163 %164 |
| %166 = OpLoad %float %147 |
| %167 = OpFAdd %float %165 %166 |
| %168 = OpFMul %float %float_0_333000004 %167 |
| %169 = OpCompositeInsert %v4float %168 %162 3 |
| %170 = OpExtInst %v4float %1 FClamp %169 %49 %51 |
| %171 = OpCompositeExtract %float %170 0 |
| %172 = OpCompositeExtract %float %170 1 |
| %173 = OpCompositeExtract %float %170 2 |
| %174 = OpCompositeExtract %float %170 3 |
| %175 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %uint_0 |
| OpStore %175 %171 |
| %176 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %uint_1 |
| OpStore %176 %172 |
| %177 = OpAccessChain %_ptr_Output_float %gl_TessLevelOuter %uint_2 |
| OpStore %177 %173 |
| %178 = OpAccessChain %_ptr_Output_float %gl_TessLevelInner %uint_0 |
| OpStore %178 %174 |
| OpBranch %if_merge |
| %if_merge = OpLabel |
| OpReturn |
| OpFunctionEnd |