본문 바로가기
Directx12 3D 프로그래밍 입문/5. 렌더링 파이프 라인

5.7 테셀레이션, 기하 셰이더, 절단

by ftftgop3 2024. 2. 8.

테셀레이션 

메시의 삼각형들을 세분 하게 새로운 삼각형들을 만드는 과정

새 삼각형들은 새로운 위치에 이동 하고 세부적인 특징(Detail)을 만들어 낼 수있다.

 

장점

카메라에 가까운 삼각형들에게는 테셀레이션 적용 세부도 높이고, 멀리 있는 삼각형은 비 적용

메모리에 저 다각형 (low- poly) 를 즉석에서 추가함으로써 메모리 절약

 

애니메이션 및 물리 처리는 같은 연산은 단순한 저다각형 메시로 수행

렌더링 시에 테셀레이션 적용 해서 고 다가가형 메시를 렌더링

 

단점

위 단계 처럼 새 기하구조를 CPU 메모리에서 GPU 메모리로 올리는 것은 느린 연산

CPU 에서 테셀레이션 계산은 CPU 부담

 

Directx 11버전에서 도입

테셀레이션 구현 순서

  1. CPU에서 삼각형 분할 새 기하구조 생성
  2. 새 기하구조를 GPU 올려 렌더링

기하 셰이더 단계

기하 셰이더 : 하나의 온전한 기본도형 을 입력 시 정점 대해 수정,추가 및 삭제

삼각형 목록을 그리는 경우 기하 셰이더 에는 삼각형을 정의하는 정점 세 개 입력

 

사용 이유

기하 구조 를 GPU에서 생성 및 파괴, 확장

조건에 따라 입력 기하 구조 폐기

용도 예시 : 점이나 선분을 사각형으로 확장

 

입력 정점 : 정점 셰이더 처리 후 입력

출력 정점 : 정점 위치 들은 반드시 동차 절단 공간으로 변환 된 것

기하 셰이더의 출력을 스트림 출력 단계를 총해 메모리 버퍼에 저장 및 활용

 

절단

시야 절두체 바깥에 있는 기하구조는 폐기

절두체의 경계면과 교차는 기하구조는 잘라내는 과정을 절단(clipping) 연산

 

상하좌우 평면 과 가까운 평면, 먼 평면 기준으로 다각형을 절단

삼각형을 평면으로 자르면 사각형이 나온다 그걸 다시 삼각화

이런 연산은 하드웨어에서 지원

 

원근 나누기의 이후 점을 NDC 좌표로 표현

NDC 좌표 : $(\frac{x}{w}, \frac{y}{w}, \frac{z}{w}, 1)$

NDC 좌표를 부등식 으로 표현

$$ -1\leq\frac{x}{w}\leq1
\\-1\leq\frac{y}{w}\leq1 \\0\leq\frac{z}{w}\leq1 $$

동차 절단 공간에서 4차원 점은 시야 절두체 안에 존재 할려면 다음 조건에 만족

 

$$ \\ -w\leq x\leq w\\ -w \leq y\leq w\\ 0\leq z \leq w  $$

시야 절두체 안의 점 들은 4차원 평면들로 이루어진 영역 안에 존재 

왼쪽 평면 w = -x, 오른쪽 평면 : w = x, 아래 평면 w = -y

위쪽 평면 w = y, 가까운 평면 w = 0, 먼 평면 w = z

 

참고 및 내용 인용
프랭크 D 루나 지음, 류광 옮김 
한빛 미디어
Directx 12를 이용한 3D 게임 프로그래밍 입문(2017)