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