blob: cd2b094436e5f9a2f724b31854286a24b3372ccd [file] [log] [blame]
LoopDawga5d86162017-09-10 09:46:55 -06001
LoopDawg4a145db2017-09-13 08:44:39 -06002// Test mixed InputPatch structure: user and builtin members. Hull shaders involve extra
3// logic in this case due to patch constant function call synthesis.
LoopDawga5d86162017-09-10 09:46:55 -06004
LoopDawg4a145db2017-09-13 08:44:39 -06005// This example tests the main EP and the PCF EP both having an input patch.
6
7struct HS_Main_Output
LoopDawga5d86162017-09-10 09:46:55 -06008{
LoopDawg4a145db2017-09-13 08:44:39 -06009 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 ;
LoopDawga5d86162017-09-10 09:46:55 -060043}