kwan's note

z 버퍼링, 알파 블랜딩 (z buffering , alpha blending) 본문

graphics VR AR/Computer Graphics -Korea Univ

z 버퍼링, 알파 블랜딩 (z buffering , alpha blending)

kwan's note 2021. 6. 26. 15:05
반응형

본 학습노트는 2021년 1학기 고려대학교 한정현 교수님의 컴퓨터 그래픽스 강의를 수강하고 이 내용을 기반으로작성하였습니다.

 

이전시간:https://reminder-by-kwan.tistory.com/137

 

퐁 라이팅 - phong lighting

본 학습노트는 2021년 1학기 고려대학교 한정현 교수님의 컴퓨터 그래픽스 강의를 수강하고 이 내용을 기반으로작성하였습니다. 이전시간: https://reminder-by-kwan.tistory.com/136 이미지 텍스처링 (ima

reminder-by-kwan.tistory.com

 

이전시간까지는 fragment shader에서 진행되는 대표적인 작업 (texturing 과 lighting)에 대해서 다루었습니다.

이제는 마지막 작업인 output merger 에서 진행되는 작업에 대해 배우도록 하겠습니다.

output merger에서는 마지막 내용들을 병합하여 출력합니다.

즉, viewport에 있는 object를 screen에 어떻게 표현할지에 대해 알아봅시다.

 

먼저 z 버퍼링은 물체들이 겹쳐있을때 (같은 x,y 값을 가진 물체가 여러개일 때) 어떤 object를 표현할까에 대한 것 입니다.  GL은 깊이버퍼(z 버퍼)를 제공하기 때문에 당연히 z값이 작은 즉, 카메라(눈)과 가까이 있는 물체만 출력하게 됩니다.

어찌보면 당연한 결과입니다.

하지만 물체가 완전히 불투명한경우가 아니라면 어떨까요? 물체의 투명도를 a값(알파값)을 통해 표현합니다.

이렇게 a값이 주어진 경우 앞에있는 물체 뿐 아니라 뒤 물체도 표현을 해야 합니다. 극단적으로 이상적으로 투명한 유리의 경우 a값이 1이 됩니다. 반대로 위에서 다룬 완전히 불투명한 물체의 경우 알파값이 0이 됩니다.

 

a값이 0보다크고 1보다 작은 투명/반투명한 물체들에 대해서는 어떻게 screen에 표현해야할까요?

C= aCf+(1-a)Cp 가 됩니다.

위 예제처럼 앞에있는(z=0.5) 파란 삼각형의 a =0.5이고 뒤에있는 빨간 삼각형의 a=1일때

표현되는 색상의 rgb값은 (0.5,0,0.5)가 됩니다.

z 버퍼링의 경우 처리 순서에 독립적이다. 어떤 object에 대해서도 순서는 중요하지 않고 단순히 z값이 가장 작은 물체를 찾으면 된다. 즉 일반적인 searching 문제가 된다. 하지만 transparent/ translucents 한 물체에 대해서는 순서가 중요하다. 물체가 여러개인 경우 순서에 따라 처리가 달라지기 때문이다.

C= aCf+(1-a)Cp 식을 쓸 수 있는것은 뒤에서부터 물체 처리를 하기 때문이다.

즉 이를 위해선 정렬(sorting이 필요하다) 모든 pixel에 대해서 정렬을 진행하는것은 매우매우 부하가 크다.

 

지금까지 물체가 어떻게 object space에서 생성되고 이동하고 결합되고 screen에 표현되는지에 대해 배웠다.

이제부터는 몇가지 심화 주제에 대해 추가적으로 다뤄보도록 하겠다.

반응형