Patch 하나 당 한번의 Patch Constant Function이 호출된다.
// =======================
// Patch Constant Function
// 패치의 분할 횟수를 지정하는 함수
// ========================
struct PatchOutput
{
float Edges[3] :SV_TessFactor;
float Inside : SV_InsideTessFactor;
}
PatchOutput PatchConstFunc(InputPatch<VS_INOUT, 3> _input
, uint PatchID : SV_PrimitiveID)
{
PatchOutput output = (PatchOutput) 0.f;
// 예시
output.Edges[0] = 2.f;
output.Edges[1] = 2.f;
output.Edges[2] = 2.f;
output.Inside = 2.f;
return output;
}
float EdgeLevel[3] : SV_TessFactor; => 삼각형이기 때문에 Edge(모서리) 를 3개로 지정하였다.
float InsideLevel : SV_InsideTessFactor; => 원래는 2개였는데, 삼각형이라서 1개로 줄였다. 안쪽 분할을 몇 분할 할건지..
// 예시
output.Edges[0] = 2.f;
output.Edges[1] = 2.f;
output.Edges[2] = 2.f;
output.Inside = 2.f; => 내부도 2 분할
아래의 그림같이 나온다.
'DirectX 11 3d' 카테고리의 다른 글
230531 Frustum Culling, 평면의 방정식 (1) | 2023.06.04 |
---|---|
230530 tess.fx 이어서 작업 (0) | 2023.05.30 |
230525 LandScape, Tesselation (0) | 2023.05.26 |
230524 Decal에 Light 입히기 (0) | 2023.05.25 |
230522 MRT 개선(EmissiveTargetTex) 및 Decal 생성 (0) | 2023.05.22 |