1d5eba67f8
There was a hack to workaround a bug in DXC where control point -> patch constant phase was passed in Function storage, but we have to use Workgroup here. We will not support these kinds of hacks for invalid SPIR-V, so hack the reference files to use the "proper" fix and remove the hack for time being.
353 lines
22 KiB
GLSL
353 lines
22 KiB
GLSL
; 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
|