상세 컨텐츠

본문 제목

Rasterization - Triangle Traversal

Computer Graphics/Graphics Pipeline

by Banjosh 2024. 11. 29. 17:04

본문

Rasterization의 두 번째이자 마지막 단계: Triangle Traversal

이번에는 Rasterization의 두 번째이자 마지막 단계인 Triangle Traversal에 대해 알아보자.
이 단계는 Triangle Setup 단계에서 준비한 정보를 바탕으로 픽셀에 프래그먼트를 생성하는 역할을 한다.


Triangle Traversal이 하는 일

Triangle Traversal 단계에서는 프리미티브(삼각형)를 순회하며 다음 작업을 반복한다:


1. 프리미티브에 속하는 픽셀 찾기

  • 픽셀 범위 순회
    • Triangle Setup 단계에서 정한 픽셀 범위 내에서 픽셀을 순회하며, 해당 픽셀이 삼각형에 포함되는지 판단한다.
    • 삼각형 포함 여부는 보통 바리센트릭 좌표를 사용하여 확인한다.
  • 바리센트릭 좌표를 이용한 포함 여부 판단
    • 삼각형의 정점에 대한 바리센트릭 좌표 λ1, λ2, λ3가 모두 [0.0 ~ 1.0] 범위 내에 있으면 해당 픽셀은 삼각형에 포함된다.
  • 안티앨리어싱 적용 시 처리
    • 일반적으로는 픽셀의 중심점(샘플 1개)만 검사하지만, 안티앨리어싱이 적용된 경우 픽셀 내에 여러 샘플을 검사한다.
    • 샘플 단위로 삼각형 포함 여부를 판단한 뒤, 생성된 샘플 데이터를 멀티 샘플 버퍼(Multi-Sample Buffer)에 저장한다.

안티앨리어싱이란?

안티앨리어싱은 삼각형 경계의 계단 현상(Aliasing)을 줄이기 위해 픽셀 내부를 여러 샘플로 나눠 처리하는 방법이다.

  • 방법
    • 픽셀 내부에 여러 샘플을 배치하고, 각 샘플에 대해 삼각형 포함 여부를 판단한다.
    • 샘플의 결과를 평균 내어 부드러운 렌더링을 만든다.
  • 특징
    • 안티앨리어싱 방법에는 MSAA(Multi-Sampling Anti-Aliasing), SSAA(Super-Sampling Anti-Aliasing) 등이 있다.
    • MSAA는 삼각형 경계에서만 추가 샘플링을 진행하는 방식으로 효율적이다.
  • 샘플 처리
    • 샘플별 계산은 Pixel Processing의 Fragment Shader 단계부터 진행될 수도 있고, Merging 단계에서 계산될 수도 있다.

2. 프레그먼트 생성

  • 프레그먼트란?
    • 프레그먼트는 픽셀 단위의 데이터 묶음으로, 다음과 같은 정보를 포함한다:
      • 텍스처 좌표(Texcoords)
      • 법선 벡터(Normal)
      • 깊이 값(z 값)
    • 이 정보들은 다음 단계인 Pixel Processing 단계에서 최종 색상 계산에 사용된다.
  • 프레그먼트 생성 과정
    • 삼각형 포함 여부를 통과한 샘플은 프레그먼트로 변환된다.
    • 생성된 프레그먼트의 속성 값은 Triangle Setup 단계에서 준비한 데이터를 기반으로 보간(Interpolation)된다.
  • Face Culling 적용
    • Face Culling이 활성화된 경우, Cull 조건(Front-Facing/Back-Facing)을 만족하지 않는 프리미티브에서는 프레그먼트를 생성하지 않는다.

Triangle Traversal의 역할

  • Triangle Traversal 단계는 Geometry Processing 단계에서 넘겨받은 정점 정보를 토대로, 각 프리미티브를 순회하며 픽셀별 프레그먼트 데이터를 생성하는 역할을 한다.
  • 이 과정에서 포함 여부 판단, 보간, 안티앨리어싱 처리가 이루어진다.

프로그래머의 제어 범위

  • 이 단계는 보통 프로그래머가 직접 제어하기보다는 Face Culling, 안티앨리어싱 옵션 등 간접적인 설정으로 제어한다.
  • GPU가 최적화된 하드웨어를 통해 이 과정을 효율적으로 처리하므로, 프로그래머는 고수준의 옵션만 제공하면 된다.

다음 단계: Pixel Processing

Triangle Traversal 단계가 끝나면, 생성된 프레그먼트 데이터는 다음 단계인 Pixel Processing으로 넘어간다.
Pixel Processing 단계에서는 각 프레그먼트의 정보를 기반으로 최종 색상을 계산하며, 화면에 렌더링될 데이터를 결정한다.


결론

Triangle Traversal은 Rasterization의 마지막 단계로, 삼각형을 순회하며 픽셀별 데이터를 처리하는 핵심 역할을 한다.
이 단계는 프리미티브 포함 여부 판단, 프레그먼트 생성, 안티앨리어싱 적용 등의 작업을 수행하며, 최종적으로 픽셀 단위 데이터를 생성하여 렌더링의 기반을 만든다.
이제 Pixel Processing 단계에서 이 데이터를 활용해 최종 색상을 결정하게 된다.

'Computer Graphics > Graphics Pipeline' 카테고리의 다른 글

Pixel Processing - Merging  (0) 2024.11.30
Pixel Processing - Fragment Shading  (0) 2024.11.30
Rasterization - Triangle Setup  (1) 2024.11.29
Geometry Processing - Screen Mapping  (0) 2024.11.29
Geometry Processing - Clipping  (0) 2024.11.29

관련글 더보기