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 7struct HS_Main_Output 8{ 9 float4 m_Position : SV_POSITION ; 10}; 11 12struct HS_Output 13{ 14 float fTessFactor [ 3 ] : SV_TessFactor ; 15 float fInsideTessFactor : SV_InsideTessFactor ; 16}; 17 18struct HS_Input 19{ 20 float4 m_Position : SV_POSITION; 21 float4 m_Normal : TEXCOORD2; 22}; 23 24HS_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 ) ] 38HS_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