Graphics Reference
In-Depth Information
{
float Edges[3]
: SV_TessFactor;
float Inside
: SV_InsideTessFactor;
}',
HS__CONSTANT_DATA_OUTPUT hsConstantFunc( InputPatch<VS_OUTPUT, 3> ip, uint
PatchID : SV_PrimitiveID )
{
HS_CONSTANT_DATA_OUTPUT output;
output. Edges[0] = EdgeFactors.x;
output.Edges[l] = EdgeFactors.y;
output.Edges[2] = EdgeFactors .z;
output.Inside = EdgeFactors. w;
return output;
}
[domain ("tri")]
[partitioning("f ractional_even")]
[outputtopology ("triangle_cw") ]
[outputcontrolpoints(13) ]
[patchconstantfunc("hsConstantFunc")]
HS_OUTPUT hsDefault( InputPatch<VS_OUTPUT., 3> ip, uint i : SV_
OutputControlPointID, uint PatchID : SV_PrimitiveID )
{
HS_OUTPUT output;
// Must provide a default definition just in
// case we don J t match any branch below
output.position = float3(0.0f, 0.0f, 0.0f);
output.normal = float3(0.0f, 0.0f, 0.0f);
switch(i)
{
// Three actual vertices:
// b(306)
case 0:
// b(030)
case 1:
// b(003)
case 2:
output.position = ip[i] .position;
output.normal = ip[i] .normal;
break;
// Edge between v0 and vl
// b(210)
case 3:
output.position = ComputeEdgePosition(ip, 0, 1);
break;
Search WWH ::




Custom Search