728x90
반응형
📕오늘의 공부 주제
3D 공간의 오브젝트가 화면에 픽셀로 표현되기까지의 과정
🤔Why?
게임, 시뮬레이션, 3D 애플리케이션을 개발할 때 **모델이 어떻게 최종 화면에 그려지는지**를 이해하는 것은 성능 최적화와 그래픽 품질 개선의 핵심입니다. 이 과정을 알면, 셰이더 작성, 최적화, 버그 디버깅에 큰 도움이 됩니다.
📖오늘의 공부 내용
1. 전체 파이프라인 개요
3D 장면이 픽셀로 표현되기까지의 과정을 그래픽 렌더링 파이프라인(Graphics Rendering Pipeline)이라 합니다.
크게 세 단계로 나눌 수 있습니다.
애플리케이션 단계
- CPU에서 처리
- 게임 로직, 물리 연산, 카메라 위치 계산, 모델 좌표 준비
기하학 단계(Geometry Processing)
- GPU에서 처리
- 모델 변환, 뷰 변환, 투영 변환, 클리핑, 래스터화 준비
래스터화 및 픽셀 처리 단계
- GPU에서 처리
- 3D 정보를 2D 픽셀로 변환, 색상 계산, 출력 버퍼에 저장
2. 세부 과정
① 모델 좌표(Model Space)
- 모델링 툴에서 만든 오브젝트의 원래 좌표계.
- 예: 캐릭터 메쉬의 로컬 좌표.
② 월드 좌표(World Space)
- 모델 좌표에 월드 변환(World Transform)을 적용.
- 오브젝트를 게임 세계 속 위치, 크기, 회전으로 배치.
③ 뷰 좌표(View/Camera Space)
- 카메라 변환(View Transform)을 적용.
- 월드 좌표를 카메라 기준 좌표계로 변환.
④ 클립 좌표(Clip Space)
- 투영 변환(Projection Transform) 적용.
- 원근 투영(Perspective Projection) → 멀리 있는 객체는 작게
- 직교 투영(Orthographic Projection) → 거리와 상관없이 크기 동일
- 화면에 보이는 범위(View Frustum)로 제한.
⑤ NDC (Normalized Device Coordinates)
- 좌표를 -1 ~ 1 범위로 정규화.
- 클리핑(Clipping) → 화면 밖 좌표는 버림.
⑥ 뷰포트 좌표(Viewport Transform)
- NDC를 실제 화면 해상도 픽셀 좌표로 변환.
⑦ 래스터화(Rasterization)
- 삼각형을 픽셀(Fragment)로 분해.
- 각 픽셀에 대해 색상, 깊이, 텍스처 좌표 계산.
⑧ 프래그먼트 셰이더(Fragment Shader)
- 각 픽셀의 최종 색상 계산.
- 조명, 그림자, 텍스처, 반사, 투명도 처리.
⑨ 출력 병합(Output Merger)
- 여러 렌더 타겟과 깊이 버퍼, 스텐실 버퍼 처리.
- 최종 프레임 버퍼에 픽셀 색상 저장.
⑩ 화면 출력
- 프레임 버퍼의 내용을 모니터에 표시.
3. 정리
모델 좌표 → 월드 좌표 → 뷰 좌표 → 클립 좌표 → NDC → 뷰포트 → 래스터화 → 픽셀 색상 계산 → 출력
이 전체 과정이 매 프레임마다 매우 빠른 속도로 반복되며, 우리가 보는 3D 화면을 만들어냅니다.
728x90
반응형
'프로그래밍 공부 > TIL' 카테고리의 다른 글
| 2025-08-06 TIL (0) | 2025.08.06 |
|---|---|
| 20250805 - TIL (0) | 2025.08.05 |
| 2025-08-01 TIL (0) | 2025.08.01 |
| 2025-07-31 TIL (0) | 2025.07.31 |
| 2025-07-30 TIL (1) | 2025.07.30 |
