struct VSOutput { float4 f4Position : SV_Position; float3 f3Color : COLOR; }; // Output patch constant data. struct HS_CONSTANT_DATA_OUTPUT { float Edges[3] : SV_TessFactor; }; HS_CONSTANT_DATA_OUTPUT ConstantHS( InputPatch p, uint BlockID : SV_PrimitiveID, out float Inside : SV_InsideTessFactor) { HS_CONSTANT_DATA_OUTPUT Factors; Factors.Edges[0] = 2.5 + float(BlockID); Factors.Edges[1] = 4.5 + p[0].f4Position.x * 1.53; Factors.Edges[2] = 5.5 - p[0].f4Position.y * 2.53; Inside = 6.2 + p[0].f4Position.x * 1.53; return Factors; } struct HSOutput { float4 Position : POS; float3 Color : COL; }; [domain("tri")] [partitioning("fractional_odd")] [outputtopology("triangle_cw")] [outputcontrolpoints(1)] [patchconstantfunc("ConstantHS")] [maxtessfactor( (float)(32.f+2.f) )] HSOutput main(InputPatch inputPatch, uint uCPID : SV_OutputControlPointID) { HSOutput Out; Out.Position = inputPatch[uCPID].f4Position; Out.Color = inputPatch[uCPID].f3Color; return Out; }