struct VS_CONTROL_POINT_OUTPUT { float3 vPosition : WORLDPOS; }; struct HS_CONTROL_POINT_OUTPUT { float3 vPosition : WORLDPOS; }; struct HS_CONSTANT_DATA_OUTPUT { float EdgeTessFactor[3] : SV_TessFactor; float InsideTessFactor : SV_InsideTessFactor; }; #define NUM_CONTROL_POINTS 3 HS_CONSTANT_DATA_OUTPUT CalcHSPatchConstants( InputPatch ip, uint PatchID : SV_PrimitiveID) { HS_CONSTANT_DATA_OUTPUT Output; Output.EdgeTessFactor[0] = Output.EdgeTessFactor[1] = Output.EdgeTessFactor[2] = Output.InsideTessFactor = 15; return Output; } [domain("tri")] [partitioning("fractional_odd")] [outputtopology("triangle_cw")] [outputcontrolpoints(3)] [patchconstantfunc("CalcHSPatchConstants")] HS_CONTROL_POINT_OUTPUT main( InputPatch ip, uint i : SV_OutputControlPointID, uint PatchID : SV_PrimitiveID ) { HS_CONTROL_POINT_OUTPUT Output; Output.vPosition = ip[i].vPosition; return Output; }