- 테셀레이션
- 고차 프리미티브(OpenGL에서는 "패치")를 더 작고 단순한
여러 개의 렌더링 가능한 프리미티브(ex. 삼각형) 으로 분할하는 작업. - 테셀레이션 엔진은 사각형, 삼각형, 선들을 더 많고 작은 점, 선, 삼각형
등으로 분할한다. - Vertex shading stage 바로 다음에 위치.
- 순서는 [ tessellation control shader - 고정 함수 테셀레이션 엔진 - tessellation evaluation shader ]
- 테셀레이션 컨트롤 쉐이더 (tessellation control shader)
- 고차 서피스(패치)를 점, 선, 삼각형으로 분할
- glPatchParameter
void glPatchParameteri(
GLenum pname, GLint value )
;- pname : GL_PATCH_VERTICES
value : 패치당 생성할 제어점 개수(default 3) - 쉐이더
- layout (vertices=N) out;
- N : 패치당 제어점 개수
- 테셀레이션 엔진
- 패치로 표현되는 고차 서피스를 점, 선, 삼각형 같은 작은 프리미티브로 분할하는 역할 수행
- 테셀레이션 이벨류에이션 쉐이더(tessellation evaluation shader)
- 테셀레이터에 의해 생성된 각 버텍스에 대해 한 번씩 호출
- #version 430 core
layout (triangles, equal_spacing, cw) in;
void main(void)
{
gl_position = (gl_TessCoord.x * gl_in[0].gl_position ~
... - triangles: 삼각형
- equal_spacing: 동일 간격으로 버텍스 생성
- cw : 시계 방향
- gl_TessCoord: 테셀레이터가 생성한 버텍스의 무게중심 좌표
- glPolygonMode
void glPolygonMode(
GLenum face, GLenum mode )
;- 패치의 가장자리만 그리도록 하는 함수
- face: 어떤 타입의 폴리곤에 적용 할 것인지.
- GL_FRONT_AND_BACK(모두 적용) - mode: 폴리곤이 어떻게 그려질 것인지
- GL_LINE(선, 와이어 프레임 모드)
2018년 3월 15일 목요일
3.3 테셀레이션
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기