일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 논문리뷰
- 파워셀
- pyqt5
- 프로그래머
- NPY
- 언어모델
- 언리얼엔진
- ChatGPT
- 헬스케어
- 개발자
- 파이썬
- yolo
- 논문
- Detectron2
- 딜러닝
- TensorFlow
- 게임개발
- V3
- connx
- python
- ctypes
- CycleGAN
- 텐서플로우
- 욜로
- 이터널리턴
- 리뷰
- 호흡분석
- C언어
- 설치
- 딥러닝
- Today
- Total
사냥꾼의 IT 노트
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 프래그먼트 연산 본문
■OpenGL 파이프라인, 버퍼
●파이프라인에서는 최종적으로 프래그먼트 연산을 실행하며, 프레임 버퍼 메모리를 통해 출력됨
●프래그먼트: 프레임 버퍼에 기록되기 직전 단계의 화소로서 추상적인 개념
-> 화소의 색, 깊이, 텍스처, 위치 등 하나의 화소로 매핑될 데이터를 지닌 단위
●정점 연산 프로세서: 정점의 3차원 처리를 위한 프로세서
●래스터 변환: 기하 기본 요소와 화소 기본 요소(위치, 색, 깊이 등)를 프래그먼트로 변환시키는 프로세스
●프런트 버퍼/백 버퍼/깊이 버퍼/컬러 인덱스/보조 버퍼/메이 버퍼/스텐실 버퍼
1. 버퍼 활성화
2. 버퍼 초기화
3. 버퍼 초기값 설정
4. 버퍼 쓰기와 읽기
5. 버퍼 쓰기 금지
■프래그먼트 연산 (병렬 처리)
●컬러 섬 (color sum): 래스터 변환 단계에서 정점의 경면 광을 별도로 보간한 뒤 이를 텍스처가 가해진 이후에 텍스처 색 위에 덧씌움으로써 경면 광 효과를 극대화 (별도의 보간 작업 필요)
●PixelOwnershup Test: 래스터 변환 과정에서 선택된 화소의 색을 테스트하는 과정
●시저 테스트 (scissor test): 절단에 의해 화면의 변화를 뷰 포트 내부의 일정 사각형 영역으로 제한하는 것 (마스크)
●알파 테스트: 불투명도(알파 값)를 기준으로 프래그먼트를 제외하는 것
1. 불투명한 물체들을 먼저 그림 (깊이 테스트 활성화): 알파 = 1.0
2. 투명한 물체들을 후에 그림 (깊이 테스트 비활성화): 알파 < 1.0
●스텐실 테스트: 스텐실 버퍼에 기록된 임의 모습을 기준으로 프래그먼트를 제외하는 것 (모양 제한 x)
○마스크 값이 1로 설정되어 있는 비트에 대해서만 기준값과 스텐실 버퍼 값을 비교함
1. 스텐실 버퍼를 0으로 초기화
2. 기준값을 1로 설정
3. 바닥면 그리기
4. 바닥에 해당하는 스텐실 버퍼만 1로 변환
5. 그림자 그리기
●깊이 버퍼 테스트: 지-버퍼 알고리즘이 가해지는 부분
●블랜딩: 이전 프로그래밍 버퍼(소스 프래그먼트)의 색상 + 새로운 입력(프레임 버퍼)의 색상 = 다시 대상 화소로 저장
○혼합 인수: 혼합을 위한 가중히에 해당하는 것
○투명 부분 선택 작업 (블루 스크리닝)
○일정한 색을 선택 (크로마키잉)
○밝기의 임계치를 선택
○일정한모양을 선택
●안개 효과: 블랜딩의 일종으로, 멀리 있는 물체일수록(깊이 큐에 따라서) 더욱 뿌옇게 보이는 방법
●디더링: 프레임 버퍼의 용량, 즉 비트 평면수가 적다면 디더링을 사용하여 다양한 색 표현 가능 (하프 토우닝을 포함하는 개념)
●논리 연산: 프래그먼트에 가해지는 최종 작업으로, 소스 프래그먼트와 프레임 버퍼의 대상 화소 사이의 연산
○러버밴드: XOR 모드
■화소 연산
●메인 메모리의 화소 저장: 공간 절약을 위해 압축, 타입 변환이 필요함
○부호화, 비부호화, 부동 소수
●화소 저장 모드
○row skip: 몇 행을 건너뛰고 읽을 것인지
○addressing mod: 주소를 어떻게 지정할 것인지
●화소 변환 연산: 지엘의 컬러는 (0.0, 1.0)이므로 다른 시스템의 컬러 값을 사상할 필요가 있음
●비트맵: 영상이라기보다 일종의 마스크로, 영상 내부의 값에 따라 화소별로 프레임 버퍼의 색 또는 정의된 색이 선택됨
●화소맵: 실제 영상의 컬러를 저장한 것
■A-버퍼
●A-버퍼: 일반적으로 여러 개의 물체를 연결 리스트로 저장하는 버퍼
○내부에 컬러, 투명도, 깊이, 화소 점유율 등의 정보를 가지고 있음
○화소 점유율: 물체 크기가 화소의 몇 %를 차지하는지 판별하는 기준
○프레임 버퍼, 깊이 버퍼, 알파 채널, 안티 에일리어싱 등의 기능 통합 버퍼
○깊이 버퍼는 제거한 물체의 깊이 값 회복이 불가능함
●OpenGL에서: A-버퍼는 여러 개의 영상을 중첩하여 저장하는 데 사용되는 단일 버퍼
○초점에서 먼 곳의 물체를 흐리게 하거나(필드 깊이 조절) 모션 블러 효과를 내는 데도 사용
○소프트 섀도: 한번에 하나의 광원만 활성화하여 그림을 그려낸 후 이들 각각을 누적하여 렌더링하는 기법
'OpenGL로 배우는 3차원 컴퓨터 그래픽스' 카테고리의 다른 글
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 텍스처 (0) | 2020.12.07 |
---|---|
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 조명과 음영 (0) | 2020.12.07 |
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 래스터 변환 (0) | 2020.12.07 |
OpenGL로 배우는 3차원 컴퓨터 그래픽스 개념 정리 - 가시성 판단 (0) | 2020.12.07 |