[그래픽스] Output Merger

YEOM JINSEOP·2023년 11월 21일
0

Computer Graphics

목록 보기
11/14

GPU rendering

  • GPU는 polygon mesh를 입력으로 받아서,
    각각의 3차원 polygon을 스크린에 그려질 2차원 형태로 바꾸고,
    이 2차원 polygon 내부를 차지하는 pixel들의 색상을 결정한다.
    이 pixel은 color buffer에 기록되는데, 이는 스크린에 나타날 pixel 전체를 저장하는 메모리 공간을 말한다.
    color buffer는 주기적으로 스크린에 복사된다.

  • vertex는 program과 동의어다.
    GPU rendering을 위해서 vertex shader와 fragment shader 두 가지 프로그램을 작성해야한다.

  • rasterizer와 output merger는 하드웨어로 고정된 단계로, 정해진 연산을 수행한다.

  • output merger는 z-buffering과 alpha blending을 수행한다.


Z-buffering

  • GL은
    color buffer,
    depth buffer,
    stencil buffer를 제공하는데,
    이들을 합해서 frame buffer라고 한다.

  • color buffer는 screen의 2차원 viewport에 나타날 pixel 전체를 저장하는 메모리 공간이다.

  • depth buffer는 z-buffer라고도 불리는데,
    color buffer와 동일한 resolution을 가지며,
    현재 color buffer에 저장되어 있는 pixel의 zz 값을 저장한다.
    zz 값은 스크린 공간에서 정의된 3차원 viewport의 zz 범위에 속한다.

  • z-buffer를 이용해, pixel과 fragment의 앞뒤 순서를 가리는 알고리즘을
    z-buffering 혹은 depth buffering이라고 부른다.

  • z-buffering은 삼각형 처리 순서에 독립적이다. (파란색 삼각형을 먼저 처리하나, 빨간색 삼각형을 먼저 처리하나 그 결과가 같다.)


Alpha blending

  • fragment shader의 output은 RGBAZ fragment이다.
    여기서 RGB는 color,
    A는 fragment의 투명도(opacity)를 나타내는 alpha 값,
    Z는 depth 값을 의미한다.

  • fragment와 pixel이 혼합(blending) 되어야 하는 경우 사용된다.
    반투명 물체를 rendering할 때는, 반투명 fragment의 zz 좌표가
    color buffer에 있는 pixel의 zz 값 보다 작을 경우,
    pixel의 색상은 fragment를 통해 비쳐 보아야 한다. 이때 pixel과 fragment 색상의 blending이 필요한 것이다.

  • fragment shader가 출력하는 fragment의 RGBARGBA 색상 중,
    AA를 alpha channel 이라고도 한다.
    pixel과의 blending 과정은 fragment의 alpha channel을 이용하므로, alpha blending이라고 부른다.

  • 정규화된 A는 [0, 1] 범위의 값을 갖고,
    최솟값 0은 '완전 투명',
    최댓값 1은 '완전 불투명'을 나타낸다.

  • alpha blending 수식은 다음과 같다.
    c=αcf+(1α)cpc = \alpha c_f + (1 - \alpha)c_p
    \\
    cc: blending된 color,
    α\alpha: fragment의 불투명도(alpha channel),
    cfc_f: fragment color
    cpc_p: pixel color

  • z-buffering 알고리즘은 삼각형 처리 순서에 독립적이였으나, 이는 불투명한 삼각형들에만 적용된다.
    모든 불투명한 삼각형이 처리된 뒤, 반투명한 삼각형들은 뒤에서부터 앞으로 차례차례 처리되어야 한다.
    이를 위해 반투명한 삼각형들은 정렬되어야 한다.

0개의 댓글

관련 채용 정보