[Unity] 52. 렌더링 과정

Connected Brain·2025년 5월 9일

면접 질문 대비

목록 보기
52/60

3D 공간에 있는 오브젝트들이 화면에 표현되는 픽셀로 표시되기까지의 과정을 설명해보세요.

버텍스 페치(Vertex Fetch)

  • GPU가 메모리에서 정점(Vertex) 데이터를 가져오는 과정
  • 정점 배열 또는 버퍼(Buffer)의 형태로 저장
  • 버텍스 쉐이더를 호출해 입력데이터(속성)를 자동적으로 제공하여 변환 및 조작 작업을 실행할 수 있게함

버텍스 쉐이더

  • 버텍스 페치에서 가져온 정점 데이터를 처리, 속성을 계산해 출력

Primitive Assembly

  • 정점들을 삼각형, 선, 점 등 기본형태로 조합

테셀레이션

  • 더 작고 단순한 여러 개의 렌더링 가능한 Primitive로 분할하는 작업
  • 복잡한 표면을 부드럽게 만들거나, 높은 해상도의 모델을 생성
  • 테셀레이션 Control Shader가 호출되어 얼마나 많은 Sub-Primitive를 생성할지 결정

지오메트리 쉐이더

  • 테셀레이션이 완료된 프리미티브당 한 번 수행
  • 새로운 프리미티브를 생성하거나 수정하는 역할
  • 단일 프리미티브를 입력 받아 새로운 프리미티브를 생성(보다 복잡한 형태를 구현)
  • 복잡한 기하학적 변형을 GPU에서 수행해 CPU의 부담을 줄임
  • 입체효과, LOD, 파티클 시스템에 사용

클리핑

  • 삼각형이 화면의 경계와 교차하는지 확인하고 시야에서 벗어나는 부분을 제거
  • 클립 공간에서의 좌표를 기준으로 함
  • 동차좌표계로 표현(x, y, z, w); 이동연산을 행렬 곱으로 표현할 수 있어 계산이 단순해짐
  • 이를 w 요소로 나누어 카테시안 좌표로 변환 가능(x/w, y/w, z/w, 1), 그리고 카테시안 좌표가 정규화된 디바이스 공간좌표
  • 정규화된 공간 좌표를 그릴지 말지를 결정

컬링

  • 삼각형이 렌더링할 방향을 향하고 있는지를 통해 그릴지 여부 판단
    (정면-카메라를 향함/후면- 카메라를 등짐)
  • 삼각형의 방향을 구하기 위해서는 두 변을 벡터로 생각하고 만들어지는 평면의 외적을 구하는 것
  • 카메라에 보이지 않는 면을 제거해 작업량을 줄임

뷰포트 변환

  • 실제 그릴 윈도우 좌표계는 픽셀을 단위로 해상도에 따라 결정
  • 정규화된 디바이스 좌표(NDC)를 윈도우 좌표로 변환
  • 최종적으로 화면에 보일 위치를 결정

래스터라이제이션

  • 프리미티브를 픽셀로 변환해 화면의 어떤 픽셀을 채울지 결정
  • 각 픽셀에 대해 프래그먼트 라는 데이터 생성; 픽셀의 색상, 깊이, 텍스처 좌표를 포함

프래그먼트 쉐이더

  • 래스터라이제이션 과정에서 생성된 프래그먼트를 처리
  • 조명 계산, 텍스처 맵핑, 색상 보정을 수행
  • 삼각형 하나가 수많은 프래그먼트를 만들기 때문에 작업량이 증가

Output Merge

  • 최종적으로 합성하여 깊이 테스트를 통해 어떤 프래그먼트가 표시될지 결정
  • 블렌딩을 통해 색상 조합, 투명효과나 반투명 효과를 구현할 수 있음

0개의 댓글