상세 컨텐츠

본문 제목

Rasterization - Triangle Setup

Computer Graphics/Graphics Pipeline

by Banjosh 2024. 11. 29. 16:35

본문

Rasterization의 첫 번째 단계: Triangle Setup

이번에는 Rasterization의 첫 번째 단계인 Triangle Setup에 대해 알아보자.
Triangle Setup은 다음 단계인 Triangle Traversal을 준비하는 과정으로, 프리미티브를 순회하며 필요한 정보를 계산하고 준비하는 역할을 한다.


Triangle Setup이 하는 일

1. 정점을 NDC 좌표에서 Viewport 좌표로 변환

  • NDC 좌표를 실제 Viewport의 픽셀 좌표로 변환한다.
  • 이 과정에서 삼각형 정점의 위치가 화면 좌표(Screen Coordinates)로 매핑된다.

2. 삼각형의 면 방향 결정

  • 삼각형이 앞면(Front-facing)인지 뒷면(Back-facing)인지 결정한다.
    • 프리미티브 정점의 순서가 시계 방향(Clockwise)이면 앞면으로 간주.
    • 반시계 방향(Counter-Clockwise)이면 뒷면으로 간주.
  • 이 정보는 이후 Face Culling에 사용된다.

3. 삼각형의 픽셀 범위 계산

  • 삼각형의 픽셀 범위(Bounding Box)를 계산한다.
    • Triangle Traversal 단계에서 어떤 픽셀을 검사할지 정하기 위해 사용된다.
  • 이 범위는 Viewport 좌표로 변환된 삼각형의 정점 위치를 기반으로 계산한다.
  • 최소한의 범위로 픽셀을 포함해 불필요한 연산을 줄이는 데 도움을 준다.

4. 보간 준비

  • 삼각형 정점의 속성을 기반으로, 각 픽셀에 적용할 값을 보간(Interpolation)하기 위한 정보를 준비한다.
  • 보간 과정은 Barycentric Coordinates를 사용하여 정점 속성을 픽셀 속성으로 변환한다.

바리센트릭 좌표를 통한 보간

바리센트릭 좌표는 삼각형 내부의 한 점이 세 정점에 대해 얼마나 가까운지를 나타내는 좌표계다.
보간 과정에서 바리센트릭 좌표는 다음과 같이 활용된다:

  • 프리미티브 정점: P1, P2, P3
  • 정점의 속성값: C1, C2, C3
    (예: 텍스처 좌표, 법선 벡터 등)
  • 삼각형 내부의 임의의 점: Pn
  • 바리센트릭 좌표: λ1, λ2, λ3
  • 속성 보간:
    삼각형 내부의 점 Pn에서 속성 Cn은 다음과 같이 계산된다:

 

바리센트릭 좌표 계산

  • 넓이 기반 계산 
    • Area(Pa, Pb, Pc) : 정점Pa, Pb, Pc 로 이루어진 삼각형의 넓이

 


Triangle Setup에서 준비하는 정보

보간을 효율적으로 수행하기 위해 Triangle Setup 단계에서 다음 정보를 미리 계산한다:

  • 삼각형의 넓이 Area(P1,P2,P3)
  • 삼각형의 세 정점 좌표 P1, P2, P3
  • 보간 과정에서 반복적으로 사용될 계산값들

Triangle Setup의 끝과 다음 단계

Triangle Setup이 끝나면 이제 Triangle Traversal 단계에서 삼각형을 포함하는 픽셀들을 순회하며, 정점 속성을 보간하여 프래그먼트(Fragment)를 생성하게 된다.
Triangle Setup은 이러한 보간과 픽셀 순회를 효율적으로 수행할 수 있도록 사전 준비를 하는 중요한 단계다.


결론

Triangle Setup은 Rasterization 단계에서 삼각형을 화면에 매핑하고, 각 픽셀의 속성을 보간할 준비를 하는 과정이다.
정점을 Viewport 좌표로 변환하고, 삼각형의 면 방향과 픽셀 범위를 계산하며, 보간에 필요한 정보를 준비한다.
이 과정을 통해 다음 단계인 Triangle Traversal이 더 효율적으로 수행될 수 있도록 돕는다.

 

관련글 더보기