|
|
@@ -0,0 +1,248 @@
|
|
|
+; SPIR-V
|
|
|
+; Version: 1.0
|
|
|
+; Generator: Khronos Glslang Reference Front End; 2
|
|
|
+; Bound: 162
|
|
|
+; Schema: 0
|
|
|
+ OpCapability Tessellation
|
|
|
+ %1 = OpExtInstImport "GLSL.std.450"
|
|
|
+ OpMemoryModel Logical GLSL450
|
|
|
+ OpEntryPoint TessellationControl %hs_main "main" %p_pos %p_1 %i_1 %_entryPointOutput_pos %_entryPointOutput %_patchConstantOutput_EdgeTess %_patchConstantOutput_InsideTess
|
|
|
+ OpExecutionMode %hs_main OutputVertices 3
|
|
|
+ OpExecutionMode %hs_main Triangles
|
|
|
+ OpExecutionMode %hs_main SpacingFractionalOdd
|
|
|
+ OpExecutionMode %hs_main VertexOrderCw
|
|
|
+ OpSource HLSL 500
|
|
|
+ OpName %hs_main "hs_main"
|
|
|
+ OpName %VertexOutput "VertexOutput"
|
|
|
+ OpMemberName %VertexOutput 0 "pos"
|
|
|
+ OpMemberName %VertexOutput 1 "uv"
|
|
|
+ OpName %HSOut "HSOut"
|
|
|
+ OpMemberName %HSOut 0 "pos"
|
|
|
+ OpMemberName %HSOut 1 "uv"
|
|
|
+ OpName %_hs_main_struct_VertexOutput_vf4_vf21_3__u1_ "@hs_main(struct-VertexOutput-vf4-vf21[3];u1;"
|
|
|
+ OpName %p "p"
|
|
|
+ OpName %i "i"
|
|
|
+ OpName %HSConstantOut "HSConstantOut"
|
|
|
+ OpMemberName %HSConstantOut 0 "EdgeTess"
|
|
|
+ OpMemberName %HSConstantOut 1 "InsideTess"
|
|
|
+ OpName %PatchHS_struct_VertexOutput_vf4_vf21_3__ "PatchHS(struct-VertexOutput-vf4-vf21[3];"
|
|
|
+ OpName %patch "patch"
|
|
|
+ OpName %output "output"
|
|
|
+ OpName %p_0 "p"
|
|
|
+ OpName %p_pos "p.pos"
|
|
|
+ OpName %VertexOutput_0 "VertexOutput"
|
|
|
+ OpMemberName %VertexOutput_0 0 "uv"
|
|
|
+ OpName %p_1 "p"
|
|
|
+ OpName %i_0 "i"
|
|
|
+ OpName %i_1 "i"
|
|
|
+ OpName %flattenTemp "flattenTemp"
|
|
|
+ OpName %param "param"
|
|
|
+ OpName %param_0 "param"
|
|
|
+ OpName %_entryPointOutput_pos "@entryPointOutput.pos"
|
|
|
+ OpName %HSOut_0 "HSOut"
|
|
|
+ OpMemberName %HSOut_0 0 "uv"
|
|
|
+ OpName %_entryPointOutput "@entryPointOutput"
|
|
|
+ OpName %_patchConstantResult "@patchConstantResult"
|
|
|
+ OpName %param_1 "param"
|
|
|
+ OpName %_patchConstantOutput_EdgeTess "@patchConstantOutput.EdgeTess"
|
|
|
+ OpName %_patchConstantOutput_InsideTess "@patchConstantOutput.InsideTess"
|
|
|
+ OpName %output_0 "output"
|
|
|
+ OpDecorate %p_pos BuiltIn Position
|
|
|
+ OpDecorate %p_1 Location 0
|
|
|
+ OpDecorate %i_1 BuiltIn InvocationId
|
|
|
+ OpDecorate %_entryPointOutput_pos BuiltIn Position
|
|
|
+ OpDecorate %_entryPointOutput Location 0
|
|
|
+ OpDecorate %_patchConstantOutput_EdgeTess Patch
|
|
|
+ OpDecorate %_patchConstantOutput_EdgeTess BuiltIn TessLevelOuter
|
|
|
+ OpDecorate %_patchConstantOutput_InsideTess Patch
|
|
|
+ OpDecorate %_patchConstantOutput_InsideTess BuiltIn TessLevelInner
|
|
|
+ %void = OpTypeVoid
|
|
|
+ %3 = OpTypeFunction %void
|
|
|
+ %float = OpTypeFloat 32
|
|
|
+ %v4float = OpTypeVector %float 4
|
|
|
+ %v2float = OpTypeVector %float 2
|
|
|
+%VertexOutput = OpTypeStruct %v4float %v2float
|
|
|
+ %uint = OpTypeInt 32 0
|
|
|
+ %uint_3 = OpConstant %uint 3
|
|
|
+%_arr_VertexOutput_uint_3 = OpTypeArray %VertexOutput %uint_3
|
|
|
+%_ptr_Function__arr_VertexOutput_uint_3 = OpTypePointer Function %_arr_VertexOutput_uint_3
|
|
|
+%_ptr_Function_uint = OpTypePointer Function %uint
|
|
|
+ %HSOut = OpTypeStruct %v4float %v2float
|
|
|
+ %16 = OpTypeFunction %HSOut %_ptr_Function__arr_VertexOutput_uint_3 %_ptr_Function_uint
|
|
|
+%_arr_float_uint_3 = OpTypeArray %float %uint_3
|
|
|
+%HSConstantOut = OpTypeStruct %_arr_float_uint_3 %float
|
|
|
+ %23 = OpTypeFunction %HSConstantOut %_ptr_Function__arr_VertexOutput_uint_3
|
|
|
+%_ptr_Function_HSOut = OpTypePointer Function %HSOut
|
|
|
+ %int = OpTypeInt 32 1
|
|
|
+ %int_0 = OpConstant %int 0
|
|
|
+%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
|
+ %int_1 = OpConstant %int 1
|
|
|
+%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
|
+%_arr_v4float_uint_3 = OpTypeArray %v4float %uint_3
|
|
|
+%_ptr_Input__arr_v4float_uint_3 = OpTypePointer Input %_arr_v4float_uint_3
|
|
|
+ %p_pos = OpVariable %_ptr_Input__arr_v4float_uint_3 Input
|
|
|
+%_ptr_Input_v4float = OpTypePointer Input %v4float
|
|
|
+%VertexOutput_0 = OpTypeStruct %v2float
|
|
|
+%_arr_VertexOutput_0_uint_3 = OpTypeArray %VertexOutput_0 %uint_3
|
|
|
+%_ptr_Input__arr_VertexOutput_0_uint_3 = OpTypePointer Input %_arr_VertexOutput_0_uint_3
|
|
|
+ %p_1 = OpVariable %_ptr_Input__arr_VertexOutput_0_uint_3 Input
|
|
|
+%_ptr_Input_v2float = OpTypePointer Input %v2float
|
|
|
+ %int_2 = OpConstant %int 2
|
|
|
+%_ptr_Input_uint = OpTypePointer Input %uint
|
|
|
+ %i_1 = OpVariable %_ptr_Input_uint Input
|
|
|
+%_ptr_Output__arr_v4float_uint_3 = OpTypePointer Output %_arr_v4float_uint_3
|
|
|
+%_entryPointOutput_pos = OpVariable %_ptr_Output__arr_v4float_uint_3 Output
|
|
|
+%_ptr_Output_v4float = OpTypePointer Output %v4float
|
|
|
+ %HSOut_0 = OpTypeStruct %v2float
|
|
|
+%_arr_HSOut_0_uint_3 = OpTypeArray %HSOut_0 %uint_3
|
|
|
+%_ptr_Output__arr_HSOut_0_uint_3 = OpTypePointer Output %_arr_HSOut_0_uint_3
|
|
|
+%_entryPointOutput = OpVariable %_ptr_Output__arr_HSOut_0_uint_3 Output
|
|
|
+%_ptr_Output_v2float = OpTypePointer Output %v2float
|
|
|
+ %uint_2 = OpConstant %uint 2
|
|
|
+ %uint_1 = OpConstant %uint 1
|
|
|
+ %uint_0 = OpConstant %uint 0
|
|
|
+ %bool = OpTypeBool
|
|
|
+%_ptr_Function_HSConstantOut = OpTypePointer Function %HSConstantOut
|
|
|
+ %uint_4 = OpConstant %uint 4
|
|
|
+%_arr_float_uint_4 = OpTypeArray %float %uint_4
|
|
|
+%_ptr_Output__arr_float_uint_4 = OpTypePointer Output %_arr_float_uint_4
|
|
|
+%_patchConstantOutput_EdgeTess = OpVariable %_ptr_Output__arr_float_uint_4 Output
|
|
|
+%_ptr_Function_float = OpTypePointer Function %float
|
|
|
+%_ptr_Output_float = OpTypePointer Output %float
|
|
|
+%_arr_float_uint_2 = OpTypeArray %float %uint_2
|
|
|
+%_ptr_Output__arr_float_uint_2 = OpTypePointer Output %_arr_float_uint_2
|
|
|
+%_patchConstantOutput_InsideTess = OpVariable %_ptr_Output__arr_float_uint_2 Output
|
|
|
+ %float_1 = OpConstant %float 1
|
|
|
+ %hs_main = OpFunction %void None %3
|
|
|
+ %5 = OpLabel
|
|
|
+ %p_0 = OpVariable %_ptr_Function__arr_VertexOutput_uint_3 Function
|
|
|
+ %i_0 = OpVariable %_ptr_Function_uint Function
|
|
|
+%flattenTemp = OpVariable %_ptr_Function_HSOut Function
|
|
|
+ %param = OpVariable %_ptr_Function__arr_VertexOutput_uint_3 Function
|
|
|
+ %param_0 = OpVariable %_ptr_Function_uint Function
|
|
|
+%_patchConstantResult = OpVariable %_ptr_Function_HSConstantOut Function
|
|
|
+ %param_1 = OpVariable %_ptr_Function__arr_VertexOutput_uint_3 Function
|
|
|
+ %50 = OpAccessChain %_ptr_Input_v4float %p_pos %int_0
|
|
|
+ %51 = OpLoad %v4float %50
|
|
|
+ %52 = OpAccessChain %_ptr_Function_v4float %p_0 %int_0 %int_0
|
|
|
+ OpStore %52 %51
|
|
|
+ %58 = OpAccessChain %_ptr_Input_v2float %p_1 %int_0 %int_0
|
|
|
+ %59 = OpLoad %v2float %58
|
|
|
+ %60 = OpAccessChain %_ptr_Function_v2float %p_0 %int_0 %int_1
|
|
|
+ OpStore %60 %59
|
|
|
+ %61 = OpAccessChain %_ptr_Input_v4float %p_pos %int_1
|
|
|
+ %62 = OpLoad %v4float %61
|
|
|
+ %63 = OpAccessChain %_ptr_Function_v4float %p_0 %int_1 %int_0
|
|
|
+ OpStore %63 %62
|
|
|
+ %64 = OpAccessChain %_ptr_Input_v2float %p_1 %int_1 %int_0
|
|
|
+ %65 = OpLoad %v2float %64
|
|
|
+ %66 = OpAccessChain %_ptr_Function_v2float %p_0 %int_1 %int_1
|
|
|
+ OpStore %66 %65
|
|
|
+ %68 = OpAccessChain %_ptr_Input_v4float %p_pos %int_2
|
|
|
+ %69 = OpLoad %v4float %68
|
|
|
+ %70 = OpAccessChain %_ptr_Function_v4float %p_0 %int_2 %int_0
|
|
|
+ OpStore %70 %69
|
|
|
+ %71 = OpAccessChain %_ptr_Input_v2float %p_1 %int_2 %int_0
|
|
|
+ %72 = OpLoad %v2float %71
|
|
|
+ %73 = OpAccessChain %_ptr_Function_v2float %p_0 %int_2 %int_1
|
|
|
+ OpStore %73 %72
|
|
|
+ %77 = OpLoad %uint %i_1
|
|
|
+ OpStore %i_0 %77
|
|
|
+ %80 = OpLoad %_arr_VertexOutput_uint_3 %p_0
|
|
|
+ OpStore %param %80
|
|
|
+ %82 = OpLoad %uint %i_0
|
|
|
+ OpStore %param_0 %82
|
|
|
+ %83 = OpFunctionCall %HSOut %_hs_main_struct_VertexOutput_vf4_vf21_3__u1_ %param %param_0
|
|
|
+ OpStore %flattenTemp %83
|
|
|
+ %86 = OpAccessChain %_ptr_Function_v4float %flattenTemp %int_0
|
|
|
+ %87 = OpLoad %v4float %86
|
|
|
+ %94 = OpLoad %uint %i_1
|
|
|
+ %89 = OpAccessChain %_ptr_Output_v4float %_entryPointOutput_pos %94
|
|
|
+ OpStore %89 %87
|
|
|
+ %95 = OpAccessChain %_ptr_Function_v2float %flattenTemp %int_1
|
|
|
+ %96 = OpLoad %v2float %95
|
|
|
+ %98 = OpAccessChain %_ptr_Output_v2float %_entryPointOutput %94 %int_0
|
|
|
+ OpStore %98 %96
|
|
|
+ OpControlBarrier %uint_2 %uint_1 %uint_0
|
|
|
+ %102 = OpLoad %uint %i_1
|
|
|
+ %104 = OpIEqual %bool %102 %int_0
|
|
|
+ OpSelectionMerge %106 None
|
|
|
+ OpBranchConditional %104 %105 %106
|
|
|
+ %105 = OpLabel
|
|
|
+ %110 = OpLoad %_arr_VertexOutput_uint_3 %p_0
|
|
|
+ OpStore %param_1 %110
|
|
|
+ %111 = OpFunctionCall %HSConstantOut %PatchHS_struct_VertexOutput_vf4_vf21_3__ %param_1
|
|
|
+ OpStore %_patchConstantResult %111
|
|
|
+ %117 = OpAccessChain %_ptr_Function_float %_patchConstantResult %int_0 %int_0
|
|
|
+ %118 = OpLoad %float %117
|
|
|
+ %120 = OpAccessChain %_ptr_Output_float %_patchConstantOutput_EdgeTess %int_0
|
|
|
+ OpStore %120 %118
|
|
|
+ %121 = OpAccessChain %_ptr_Function_float %_patchConstantResult %int_0 %int_1
|
|
|
+ %122 = OpLoad %float %121
|
|
|
+ %123 = OpAccessChain %_ptr_Output_float %_patchConstantOutput_EdgeTess %int_1
|
|
|
+ OpStore %123 %122
|
|
|
+ %124 = OpAccessChain %_ptr_Function_float %_patchConstantResult %int_0 %int_2
|
|
|
+ %125 = OpLoad %float %124
|
|
|
+ %126 = OpAccessChain %_ptr_Output_float %_patchConstantOutput_EdgeTess %int_2
|
|
|
+ OpStore %126 %125
|
|
|
+ %130 = OpAccessChain %_ptr_Function_float %_patchConstantResult %int_1
|
|
|
+ %131 = OpLoad %float %130
|
|
|
+ %132 = OpAccessChain %_ptr_Output_float %_patchConstantOutput_InsideTess %int_0
|
|
|
+ OpStore %132 %131
|
|
|
+ OpBranch %106
|
|
|
+ %106 = OpLabel
|
|
|
+ OpReturn
|
|
|
+ OpFunctionEnd
|
|
|
+%_hs_main_struct_VertexOutput_vf4_vf21_3__u1_ = OpFunction %HSOut None %16
|
|
|
+ %p = OpFunctionParameter %_ptr_Function__arr_VertexOutput_uint_3
|
|
|
+ %i = OpFunctionParameter %_ptr_Function_uint
|
|
|
+ %20 = OpLabel
|
|
|
+ %output = OpVariable %_ptr_Function_HSOut Function
|
|
|
+ %31 = OpLoad %uint %i
|
|
|
+ %33 = OpAccessChain %_ptr_Function_v4float %p %31 %int_0
|
|
|
+ %34 = OpLoad %v4float %33
|
|
|
+ %35 = OpAccessChain %_ptr_Function_v4float %output %int_0
|
|
|
+ OpStore %35 %34
|
|
|
+ %37 = OpLoad %uint %i
|
|
|
+ %39 = OpAccessChain %_ptr_Function_v2float %p %37 %int_1
|
|
|
+ %40 = OpLoad %v2float %39
|
|
|
+ %41 = OpAccessChain %_ptr_Function_v2float %output %int_1
|
|
|
+ OpStore %41 %40
|
|
|
+ %42 = OpLoad %HSOut %output
|
|
|
+ OpReturnValue %42
|
|
|
+ OpFunctionEnd
|
|
|
+%PatchHS_struct_VertexOutput_vf4_vf21_3__ = OpFunction %HSConstantOut None %23
|
|
|
+ %patch = OpFunctionParameter %_ptr_Function__arr_VertexOutput_uint_3
|
|
|
+ %26 = OpLabel
|
|
|
+ %output_0 = OpVariable %_ptr_Function_HSConstantOut Function
|
|
|
+ %135 = OpAccessChain %_ptr_Function_v2float %patch %int_0 %int_1
|
|
|
+ %136 = OpLoad %v2float %135
|
|
|
+ %137 = OpCompositeConstruct %v2float %float_1 %float_1
|
|
|
+ %138 = OpFAdd %v2float %137 %136
|
|
|
+ %139 = OpCompositeExtract %float %138 0
|
|
|
+ %140 = OpAccessChain %_ptr_Function_float %output_0 %int_0 %int_0
|
|
|
+ OpStore %140 %139
|
|
|
+ %141 = OpAccessChain %_ptr_Function_v2float %patch %int_0 %int_1
|
|
|
+ %142 = OpLoad %v2float %141
|
|
|
+ %143 = OpCompositeConstruct %v2float %float_1 %float_1
|
|
|
+ %144 = OpFAdd %v2float %143 %142
|
|
|
+ %145 = OpCompositeExtract %float %144 0
|
|
|
+ %146 = OpAccessChain %_ptr_Function_float %output_0 %int_0 %int_1
|
|
|
+ OpStore %146 %145
|
|
|
+ %147 = OpAccessChain %_ptr_Function_v2float %patch %int_0 %int_1
|
|
|
+ %148 = OpLoad %v2float %147
|
|
|
+ %149 = OpCompositeConstruct %v2float %float_1 %float_1
|
|
|
+ %150 = OpFAdd %v2float %149 %148
|
|
|
+ %151 = OpCompositeExtract %float %150 0
|
|
|
+ %152 = OpAccessChain %_ptr_Function_float %output_0 %int_0 %int_2
|
|
|
+ OpStore %152 %151
|
|
|
+ %153 = OpAccessChain %_ptr_Function_v2float %patch %int_0 %int_1
|
|
|
+ %154 = OpLoad %v2float %153
|
|
|
+ %155 = OpCompositeConstruct %v2float %float_1 %float_1
|
|
|
+ %156 = OpFAdd %v2float %155 %154
|
|
|
+ %157 = OpCompositeExtract %float %156 0
|
|
|
+ %158 = OpAccessChain %_ptr_Function_float %output_0 %int_1
|
|
|
+ OpStore %158 %157
|
|
|
+ %159 = OpLoad %HSConstantOut %output_0
|
|
|
+ OpReturnValue %159
|
|
|
+ OpFunctionEnd
|