struct DSOutput { float4 f4Position : SV_Position; float3 f3Color : COLOR; }; struct HS_CONSTANT_DATA_OUTPUT { float Edges[3] : SV_TessFactor; float Inside : SV_InsideTessFactor; }; struct HSOutput { float4 Position : POS; float3 Color : COL; }; [domain("tri")] /* partitioning = fractional_odd , outputtopology = triangle_cw */ void main( HS_CONSTANT_DATA_OUTPUT Input, float3 QuadUV : SV_DomainLocation, OutputPatch QuadPatch, out DSOutput Out) { Out.f4Position.xy = QuadPatch[0].Position.xy + QuadUV.x * float2(-0.15, 0.0) + QuadUV.y * float2(0.0, 0.15) + QuadUV.z * float2(+0.15, 0.0); Out.f4Position.zw = QuadPatch[0].Position.zw; Out.f3Color = frac( (QuadPatch[0].Color + QuadUV.xyz * float3(4121.35f, 8232.25f, 9124.42f) ) ); }