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 ; 
 | |
| }
 |