088- OpenGL Shaders 7, OGSB7 6 - Tessellation gl_TessLevelInner, gl_TessLevelOuter

preview_player
Показать описание
Hello OpenGL Tessellation!!

Download Current Video's Source Code:
Will be available to Membership holders.

093 -(SETUP) OpenGL Tessellation Shaders For the First Time, Visual Studio Project Template

Previous Videos:

087- OpenGL Shaders 6, OGSB7 5 - Passing Data from Stage to Stage, Interface Blocks

086- OpenGL Shaders 6, OGSB7 5 - OpenGL Pipeline, Vertex Attributes, glVertexAttrib4fv, gl_VertexID

085- OpenGL Shaders 5, OGSB7 4 - , OpenGL Buffer Object, Vertex Array Object Songs

084- OpenGL Shaders 4, OGSB7 3 - Chapter 2, OpenGL Super Eazy

083- OpenGL Shaders 3, OGSB7 2 - Chapter 2, OpenGL Super Basics

082- (SETUP) OpenGL Shaders 2, OGSB7 1 - Project Template
Рекомендации по теме
Комментарии
Автор

Tessellation
Tessellation은 고차 primitive(OpenGL의 patch)를 렌더링(화면에 출력)을 위한 삼각형과 같은 더 작고 단순한 프리미티브로 만드는 과정
OpenGL에는 fixed function 이고 구성 가능한(configurable) Tessellation 엔진이 포함되어 있으며 그 엔진은 사변형, 삼각형 및 선을 잠재적(potentially ) 으로 많은 수의 더 작은 점, 선 또는 삼각형으로 분할하여
일반(normal) rasterization 하드웨어에서 직접 사용(consume) 할 수 있는 작은 형태로 분할하면 파이프라인의 효과가 높아짐(?)
논리적으로 Tessellation stage는 OpenGL pipeline 에서 vertex shading stage 바로 뒤에 위치함
Tessellation 는 세 부분(tessellation control shader, fixed-function tessellation engin, tessellation evaluation shader)로 구성됨

Tessellation Control Shaders
세 가지 tessellation 단계 중 첫 번째 단계는 tessellation 제어 셰이더(TCS)입니다.
때로 그냥 컨트롤 셰이더라고도 함). 이 셰이더는
vertex 셰이더로부터 입력을 취하고 기본적으로 두 가지를 담당함
tessellation 엔진으로 보낼 tessellation 의 level 결정하고
tessellation 이 완료된 후 실행(run) 되는 tessellation evaluation shader로 전송

OpenGL의 tessellation 은 patch인 고차 표면(surface)을 점, 선 또는 삼각형으로 분할하여 작동.
각 패치는 여러 제어점(control points) 으로 구성됨
패치 당 (control points) glPatchParameteri() 를 호출하여
pname을 전달하고 GL_PATCH_VERTICES를 설덩하고,
value 인자는 각 patch를 구성하는 데 사용되는 control point 의 수.
glPatchParameteri() 의 원형은
void glPatchParameteri(GLenum pname,
GLint value); 이고

기본적으로 각 patch 마다 control points 수는 3개.
(예제 애플리케이션에서와 같이) 3개만 필요하면 기본값이 3개 이미로 호출할 필요가 전혀없음
하나의 patch를 형성하는 데 사용할 수 있는 최대 control points 은 구현에 정의되어 있지만 적어도 32개 이상을 보장함
tessellation 이 활성화되면 vertex 셰이더는 control points 마다 한 번 실행되고,

tessellation 제어 셰이더는 control points 를 그룹으로 묶어서 배치단위로 실행함
각 배치(묶음) 크기는 patch당 vertex의 수와 같음
즉, vertex는 control points 과 vertex shader의 출력 결과를 배치 단위로 테셀레이션 control shader 에 입력으로 전달됨 .
패치당 control points 수는 변경할 수 있으며,
tessellation 제어 셰이더가 출력할 수 있는 제어점의 수는 사용되는 제어점의 수와 다를
수 있음
control shader 가 생성한 제어점의 수는 제어 shader를 작성하는 source 코드에서 output layout 키워드를 사용하여 설정가능
layout (vertices = N) out;
tesslevelInner는 꼭지점까지를 몇개로 갈지이고 홀수가 되면 중앙에 삼각형이 생기고 짝수이면 점이 생김, outer는 삼각형의 변을 몇개로 나눌지 정함
이상으로 정리했습니다 지금 수업시작해야 해서 이정도로 마무리 합니다. 영상 감사합니다.

jaeohlee