44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GLSL
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			GLSL
		
	
	
	
 | 
						|
// Test mixed InputPatch structure: user and builtin members.  Hull shaders involve extra
 | 
						|
// logic in this case due to patch constant function call synthesis.
 | 
						|
 | 
						|
// This example tests the PCF EP having an InputPatch, but the main EP does not.
 | 
						|
 | 
						|
struct HS_Main_Output
 | 
						|
{ 
 | 
						|
    float4 m_Position : SV_POSITION ; 
 | 
						|
}; 
 | 
						|
 | 
						|
struct HS_Output 
 | 
						|
{ 
 | 
						|
    float fTessFactor [ 3 ] : SV_TessFactor ; 
 | 
						|
    float fInsideTessFactor : SV_InsideTessFactor ; 
 | 
						|
}; 
 | 
						|
 | 
						|
struct HS_Input 
 | 
						|
{ 
 | 
						|
    float4 m_Position : SV_POSITION; 
 | 
						|
    float4 m_Normal   : TEXCOORD2; 
 | 
						|
}; 
 | 
						|
 | 
						|
HS_Output HS_ConstFunc ( InputPatch < HS_Input , 3 > I ) 
 | 
						|
{ 
 | 
						|
    HS_Output O = (HS_Output)0;
 | 
						|
 | 
						|
    O.fInsideTessFactor = I [ 0 ].m_Position.w + I [ 0 ].m_Normal.w;
 | 
						|
 | 
						|
    return O;
 | 
						|
} 
 | 
						|
 | 
						|
[ domain ( "tri" ) ] 
 | 
						|
[ partitioning ( "fractional_odd" ) ] 
 | 
						|
[ outputtopology ( "triangle_cw" ) ] 
 | 
						|
[ patchconstantfunc ( "HS_ConstFunc" ) ] 
 | 
						|
[ outputcontrolpoints ( 3 ) ] 
 | 
						|
HS_Main_Output main( uint cpid : SV_OutputControlPointID ) 
 | 
						|
{ 
 | 
						|
    HS_Main_Output output = ( HS_Main_Output ) 0 ; 
 | 
						|
    output.m_Position = 0;
 | 
						|
    return output ; 
 | 
						|
}
 |