본문 바로가기

개발

[그래픽스] 렌더링 파이프라인

그래픽스 렌더링 파이프라인

= 3D혹은 2D 모델을 화면에 투영하는 렌더링 과정의 프로세스

(노랑색은 생략 가능한 과정)

① InputAssembler

=렌더링 수행할 도형의 정점 정보를 버퍼에 담아 GPU로 운반.

데이터를 기본 형식으로 조립

 

② Vertex Shader

=정점 데이터를 입력받아 공간 좌표계 변환

Local Space → World Space → View Space →Clip Space

 

1) Local Space=아직 변환되지 않은 폴리곤 메쉬들의 공간. 메쉬가 각자 개별적으로 존재하는 공간

2) World Space=여러 메쉬들이 하나의 공간, 하나의 좌표계에 모이는 곳

3) View Space=카메라 공간. 카메라가 보는 시점에서의 상대적 좌표

4) Clip Space=카메라 시야에 보이는 메쉬들만 위치한 공간

 

- World Transform

=확대 축소, 회전, 이동으로 정점 변환

행렬을 통해 계산되어 최종적으로 월드 공간 정보로 변환

View Transform = 카메라 위치를 원점, 바라보는 방향을 +z축으로 변환. 정점에 카메라의 역행렬 곱한다.

Projection Transform = 화면에 보여야 할 물체들만 존재하는 클립 공간으로 변환. 카메라 기준의 정점위치를 화면에 보이는 정점 위치로 변환. 

- View transform(Camera transform)

월드 공간으로 변환된 정점들을 특정 시점에서 보기 위해 -카메라 공간으로 이동시키는 것. 카메라 공간은 EYE(카메라 위치), UP(카메라의 위 방향), AT(카메라가 바라보는 방향) 정보를 토대로 카메라 공간으로 변환 한다.

- Projection Transform

최종적으로 화면에 보여야할 물체만 존재하는 클립 공간으로 변환하는 작업

뷰 볼륨(카메라가 볼 수 있는 시야)은 절두체(view frustum)영역으로 정의된다.

1) Culling=렌더링 할 필요 없는 시야 밖( 절두체 영역 밖 )의 메쉬 자체를 제외시키는 것
카메라에서 보이는 면인지 기준으로 판단. 
보이지 않는 면이나 물체를 렌더링에서 제거.

정적인 오브젝트에 사용
    -back-face culling=카메라 시야 기준 뒷면 제거. 법선 벡터와 시선 벡터의 내적 결과로 면이 카메라를 향하는지 확인

2) Clipping=화면에 맞게 자르는 것. 절두체 영역에 의해 메쉬가 잘리는 것.
동적인 오브젝트에 사용

절두체 기준으로 잘린 것이 clipping, 통째로 처리되는 것이 culling

 

③ Tessellation

- Hull Shader

Tessellation준비 단계. 모델의 표면을 여러개 삼각형으로 분할하고 

각 입력 패치에 해당하는 도형 패치를 생성하고 계산한다.

 

- Tessellation

주어진 모델을 더 잘게 쪼개서 디테일한 표현 하는 것. (새로운 삼각형 추가)

카메라에 가까운 삼각형은 세부도 높이고, 먼것은 놔두는 방식으로 메모리 계산량을 줄일 수 있다

 

+) Adaptive Tessellation

물체의 위치와 카메라 거리에 따라 tessellation세분화 수준을 동적으로 조정.

 

- Domain Shader

(테셀레이션의 세번째 단계) 세분화된 꼭지점 위치를 계산

 

③ Geometry Shader

정점 데이터를 추가하거나 삭제하여

기본 도형을 다른 도형들로 확장하거나 출력하지 않을 수 있다 . 

ex) 하나의 점이나 선분을 하나의 사각형으로 확장하는 것

 

④ Rasterization

 3차원의 삼각형으로 픽셀의 색상 계산

 

- Perspective Division

투영 변환을 통해 원근법 적용된 3차원 물체들을 2차원 공간으로 변환.

Z좌표로 모든 성분을 나누어 버린다. 이 좌표 공간을 NDC공간이라 부른다.

 

- View-port Transform

NDC공간의 물체들을 스크린 공간으로 이전시키는 변환

 

- Scan Transform

삼각형 하나가 내부에 차지하는 프래그먼트를 생성하는 과정

 

⑤ Pixel Shader

각 픽셀별 데이터 생성, 조명 계산 혹은 텍스쳐 입히는 단계

- Pong Shading

= 픽셀 단위에서 빛과 물체 간의 상호작용을 계산하여 사실적인 조명 효과 구현

 

⑥ Output Merger

최종단계.  픽셀 색 생성해 렌더 타겟에 출력

후면 버퍼에 기록
+) z-buffer - 각 픽셀의  z값을 기준으로 보이는 픽셀만 렌더링. 



'개발' 카테고리의 다른 글

[Vue] 개발자 도구(F12)에서 Vue탭이 안뜰 때  (0) 2025.03.05
Docker  (0) 2024.12.16
[Javascript] 기초1  (2) 2024.12.09
[HTML, CSS] HTML CSS 기타  (1) 2024.12.09
항해 99 클럽 후기  (1) 2024.12.01