Vertex Input
정점에 대한 버퍼 정보를 GPU로 넘김
Vertex Shader
정점들의 위치를 변환함
정점들은 로컬좌표 기준으로 저장되어 있기 때문에 공간좌표계로 변환해야함
로컬좌표 -> Model Matrix -> 월드 좌표 -> View Matrix -> 카메라 좌표 -> Projection Matrix -> 클립 좌표
순서로 변환됨
Tessellation Shader
더 많은 정점 및 폴리곤을 만들어 GPU에서 곡면이나 디테일을 추가하는 쉐이더
Tessellation Control Shader
정정과 정점 사이를 얼마나 쪼갤지 정함
Tessellation Evaluation Shader
쪼개진 점들의 위치를 계산함
Geometry Shader
정점들을 새로 생성하거나 제거함
Primitive Assembly
정점들을 도형으로 묶는 과정
ex. 삼각형으로 그리기 glDrawArrays(GL_TRIANGLES, 0, 6);
묶는 방식에 따라서 보여지는 면의 구조가 달라짐
이 과정은 Vertex Shader 이후에 한번 실행 후 Geometry Shader에서 묶인 데이터를 받아 필요시 새로 만듬
Clipping
카메라에 보이지 않는 부분들은 계산하지 않게 하기 위해 잘라냄
잘리는 삼각형들은 GPU가 자동으로 재분활함
Rasterization
만들어진 삼각형들을 화면에 출력할 수 있도록 각 픽셀 단위로 분해함
각 픽셀에 정점 속성들을 보간해서 전달함
보간하는 이유는 색들이 부드럽게 보이게하기 위함
Fragment Shader
각 픽셀의 색을 계산함
ex. 색상, 밝기, 질감 등
Per-Fragment Operations
각 픽셀을 테스트하고 처리함
픽셀의 사용여부나 어떤 방식으로 쓸지 결정함
테스트 ex. 깊이, 블렌딩, 투명처리, 스텐실 등
Framebuffer Output
최종 이미지를 저장하는 단계
백 버퍼에 버퍼 데이터를 저장함

'OpenGL' 카테고리의 다른 글
| OpenGL 공부하기 #4 - 행렬과 변환 (3) | 2025.07.14 |
|---|---|
| OpenGL 개발하기 - Sierpinski Triangle (0) | 2025.07.14 |
| OpenGL 공부하기 #3 - VAO, VBO, EBO (0) | 2025.07.05 |
| OpenGL 공부하기 #1 - 윈도우 생성 (0) | 2025.06.24 |