상세 컨텐츠

본문 제목

Pixel Processing - Merging

Computer Graphics/Graphics Pipeline

by Banjosh 2024. 11. 30. 15:16

본문

Pixel Processing의 마지막 단계: Merging

이번에는 Pixel Processing의 마지막 단계이자 Graphics Pipeline의 최종 단계인 Merging에 대해 알아보자.
Merging 단계는 픽셀별 프래그먼트 값을 테스트와 블렌딩 과정을 거쳐 최종적으로 프레임 버퍼(Frame Buffer)에 기록하는 작업을 수행한다.
이 단계는 Test 단계Blend 단계로 나뉘며, 테스트가 먼저 수행된 뒤 블렌딩이 진행된다.


Merging 단계의 구성

Test 단계

Test 단계는 Fragment Shading 단계에서 생성된 프래그먼트들 중 특정 조건을 통과하지 못하는 프래그먼트를 삭제하는 역할을 한다.
보통 아래의 순서대로 테스트가 진행된다

 

1. 스크리닝 테스트 (Scissor Test)

  • Scissor Box로 지정된 화면 영역 안에 있는 프래그먼트만 통과한다.
  • 화면 외부를 잘라내는 Clipping 단계와 달리, 스크리닝 테스트는 화면 내부의 특정 영역만 렌더링할 때 사용된다.
  • 예: UI 요소를 특정 영역에만 렌더링하거나, 다중 뷰포트를 설정할 때 사용.

2. 스텐실 테스트 (Stencil Test)

  • 스텐실 버퍼의 값을 기반으로 조건을 통과하지 못하는 프래그먼트를 삭제한다.
  • 사용 예:
    • 특정 영역에만 렌더링.
    • 물체의 윤곽선을 강조하거나 복잡한 패턴을 구현.

3. 깊이 테스트 (Depth Test)

  • 현재 프래그먼트의 z 값이 깊이 버퍼(Depth Buffer)에 기록된 값보다 크면 해당 프래그먼트를 삭제한다.
  • 깊이 테스트는 Z-Buffering을 기반으로 하며, 가까운 물체가 먼 물체를 가리도록 보장한다.

Blend 단계

Blend 단계는 Test 단계를 통과한 프래그먼트들을 대상으로 프레임 버퍼의 기존 값과 혼합하여 최종 색상을 결정한다.
Blend는 픽셀의 색상 값과 알파 값을 기반으로 진행된다.

Blend의 주요 방식:

 

1. 알파 블렌딩 (Alpha Blending)

  • 프레임 버퍼의 기존 색상과 새로 들어온 프래그먼트의 색상을 알파 값(투명도)을 기준으로 혼합한다.
  • 예: 유리처럼 반투명한 물체를 표현할 때 사용.

2. 가산 블렌딩 (Additive Blending)

  • 기존 프레임 버퍼의 색상 값에 새로운 프래그먼트의 색상 값을 계속 더하는 방식.
  • 예: 빛의 효과를 표현할 때, 예를 들어 불빛이나 폭발.

Merging 단계의 중요성

  1. Test 단계를 통해 필요 없는 프래그먼트를 제거해 성능을 최적화하고, 올바른 프래그먼트만 다음 단계로 넘긴다.
  2. Blend 단계는 투명도와 빛의 효과를 자연스럽게 표현하며, 렌더링 결과의 최종 품질을 결정한다.

결론

Merging 단계는 픽셀별로 여러 프래그먼트를 처리하여 최종 렌더링 결과를 만드는 과정이다.
Test 단계에서 조건에 맞는 프래그먼트를 선별하고, Blend 단계에서 색상을 혼합하여 프레임 버퍼에 기록한다.
이 과정이 끝나면 렌더링 결과는 화면에 출력될 준비를 마치게 된다.

관련글 더보기