728x90
반응형

📕오늘의 공부 주제



3D 공간의 오브젝트가 화면에 픽셀로 표현되기까지의 과정

🤔Why?



게임, 시뮬레이션, 3D 애플리케이션을 개발할 때 **모델이 어떻게 최종 화면에 그려지는지**를 이해하는 것은 성능 최적화와 그래픽 품질 개선의 핵심입니다. 이 과정을 알면, 셰이더 작성, 최적화, 버그 디버깅에 큰 도움이 됩니다.

📖오늘의 공부 내용



1. 전체 파이프라인 개요

3D 장면이 픽셀로 표현되기까지의 과정을 그래픽 렌더링 파이프라인(Graphics Rendering Pipeline)이라 합니다.
크게 세 단계로 나눌 수 있습니다.

  1. 애플리케이션 단계

    • CPU에서 처리
    • 게임 로직, 물리 연산, 카메라 위치 계산, 모델 좌표 준비
  2. 기하학 단계(Geometry Processing)

    • GPU에서 처리
    • 모델 변환, 뷰 변환, 투영 변환, 클리핑, 래스터화 준비
  3. 래스터화 및 픽셀 처리 단계

    • 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