1 2 // Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra 3 // logic in this case due to patch constant function call synthesis. 4 5 // This example tests the main EP and the PCF EP both having an input patch. 6 7 struct HS_Main_Output 8 { 9 float4 m_Position : SV_POSITION ; 10 }; 11 12 struct HS_Output 13 { 14 float fTessFactor [ 3 ] : SV_TessFactor ; 15 float fInsideTessFactor : SV_InsideTessFactor ; 16 }; 17 18 struct HS_Input 19 { 20 float4 m_Position : SV_POSITION; 21 float4 m_Normal : TEXCOORD2; 22 }; 23 24 HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) 25 { 26 HS_Output O = (HS_Output)0; 27 28 O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w; 29 30 return O; 31 } 32 33 [ domain ( "tri" ) ] 34 [ partitioning ( "fractional_odd" ) ] 35 [ outputtopology ( "triangle_cw" ) ] 36 [ patchconstantfunc ( "HS_ConstFunc" ) ] 37 [ outputcontrolpoints ( 3 ) ] 38 HS_Main_Output main( InputPatch < HS_Input , 3 > I , uint cpid : SV_OutputControlPointID ) 39 { 40 HS_Main_Output output = ( HS_Main_Output ) 0 ; 41 output.m_Position = 0; 42 return output ; 43 } 44