
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<HSOutput, 1> 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) ) );
}
