티스토리 뷰

고려대학교 정보대학 컴퓨터학과 2019년 1학기 <컴퓨터그래픽스> 10강 출력병합 (output merger)

강의영상 플레이리스트 [Link]

강의자료 [Link]

 

 

Books · media lab

Introduction to Computer Graphics with OpenGL ES Review and Recommendations 이 책의 영문 제목 “Introduction to Computer Graphics”를 “A Painless Introduction to Computer Graphics”라는 닉네임으로 바꿔서 부르고 싶다. 수학을

media.korea.ac.kr


컴퓨터그래픽스 출력병합

Keywords

  • color buffer
  • depth buffer
  • z-buffering
  • alpha blending

 

Where are we?

 

 

Color and Depth Buffers

* viewport = 실제로 보여지는 영역, 공간

* Frame buffer

  * Color buffer : \((w,h)\) 해상도만큼의 픽셀 색상값 정보를 저장하는 메모리 공간

  * Depth buffer : color buffer에 저장된 픽셀들의 z-axis 좌표값을 저장하는 메모리 공간 (마찬가지로 \((w,h)\) 해상도)

Z-buffering

* rasterizer가 각 fragment에 대해 x,y축 값을 이용하여 normal과 texCoord를 보간 처리 후 할당하는 과정에서, z축 좌표도 함께 보간 연산하여 fragment shader로 반환한다.

* fragment shader는 normal, texCoord를 이용하여 픽셀에 대한 RGB(A) 컬러를 반환함과 동시에, 보간된 Z좌표 또한 반환하게 된다.

* 컬러 버퍼에 있는 값을 그리기 전, Z버퍼링을 수행함으로써 z축까지 고려해 앞/뒤를 구분, 픽셀이 어떤 색으로 나타나야 할지를 결정

-> z 범위 [0, 1] 이내에 존재하는가?

-> z값이 더 작은(=더 앞에 있어서 가리는) 오브젝트가 존재하는가?

이전 살펴본 fragment shader 코드

* 최종 반환하는 컬러의 경우 Alpha 값을 완전불투명 1.0으로 입력하였음

 

Alpha Blending

blending equation

$$c=\alpha c_f + (1-\alpha)c_p$$

* \(c\) = 최종 결정되는 픽셀의 색상

* \(c_f\) = fragment color in RGB

* \(\alpha\) = fragment shader 반환하는 alpha값

* \(c_p\) = 컬러버퍼에 있는 pixel color in RGB (fragment와 z축 앞뒤관계를 경쟁하는 상대)

 

[연산 순서는 중요하다!]

* z-buffering을 통해 z축 상에서의 앞뒤관계가 정의된 이후, "뒤"에 해당하는 z값은 사용하지 않으므로 버려지게 된다.

* 따라서, viewport 안에 속한 삼각형들은 우선적으로 완전 불투명한 삼각형들과 반투명 삼각형들로 먼저 분류한다.

-> 완전 불투명할 경우, 순서와 상관없이 색상 결정하고 그린다.

-> 반투명할 경우, 뒤에서 앞 순서(back-to-front order)로 그려주어야 정상적으로 정상 결과가 출력

-> 반투명할 경우, 사전적으로 반투명 오브젝트들에 대한 sorting이 수행되어야 한다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함