티스토리 뷰
고려대학교 정보대학 컴퓨터학과 2019년 1학기 <컴퓨터그래픽스> 10강 출력병합 (output merger)
강의영상 플레이리스트 [Link]
강의자료 [Link]
컴퓨터그래픽스 출력병합
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이 수행되어야 한다.
'3D Computer Graphics > Learnings' 카테고리의 다른 글
컴퓨터그래픽스_오일러 변환 및 쿼터니언 (0) | 2022.05.08 |
---|---|
컴퓨터그래픽스_라이팅(2) (0) | 2022.05.06 |
컴퓨터그래픽스_라이팅(1) (0) | 2022.05.04 |
컴퓨터그래픽스_이미지텍스처링 (0) | 2022.05.02 |
컴퓨터그래픽스_래스터라이저(2) (0) | 2022.04.30 |
- Total
- Today
- Yesterday
- 메타버스
- 컴퓨터그래픽스 강의
- tensorflow.js
- 원유로필터
- 3d affine transform
- 컴퓨터그래픽스
- 컴퓨터그래픽스 좌표계와 변환
- PoseNet
- 고려대학교 한정현
- vertex shader
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |