3장 그래픽 처리 장치

3.2. GPU 파이프라인 개요

2장에서 설명한 개념적인 기하 처리, 래스터화, 픽셀 처리 파이프라인 단계를 구현한다. 이 물리적 단계는 2장에서 설명한 기능적 단계(functional stages)와 좀 다르게 구분된다는 점을 기억하자.

Untitled

3.3 프로그래밍 가능한 셰이더 단계

Draw call은 프리미티브 집합을 그리는 그래픽 API를 호출해 파이프라인이 실행되고 셰이더를 실행하게 한다.

Uniform inputs는 draw call 동안 상수로 유지되는 값이다(하지만 draw call 사이에서는 변경될 수 있다.).

Varying inputs는 삼각형의 정점이나 래스터화에서 오는 데이터다.

Static flow control는 코드 흐름이 draw call 안에서 고정적이라는 것을 의미한다.

Dynamic flow control는 varying input 값에 기반을 두며 각 프래그먼트가 코드를 다르게 실행할 수 있다는 것을 의미한다.

3.4 프로그래밍 가능한 음영과 API의 진화

3.5 버텍스 셰이더

버텍스 셰이더는 각 삼각형의 정점에 연관된 컬러, 노멀, 텍스처 좌표, 위치 같은 값을 변경, 생성 혹은 무시하는 방법을 제공한다. 일반적으로 버텍스 셰이더 프로그램은 정점을 모델 공간에서 Homogeneous clip space(동차 자르기 공간)으로 변환한다.

3.6. 테셀레이션 단계

테셀레이션 단계는 곡면을 렌더링할 수 있게 한다.

테셀레이션 단계는 항상 세 가지 요소로 이뤄진다. 헐(hull) 셰이더, 테셀레이터(tessellator), 도메인(domain) 셰이더로 나뉜다.

3.7 지오메트리 셰이더

지오메트리 셰이더는 프리미티브를 다른 프리미티브로 변경시키는 것으로, 테셀레이션 단계에서 할 수 없는 기능이다.