그래픽스 - 렌더링 파이프라인
렌더링 파이프라인 개요 렌더링 파이프라인은 현재 가상 카메라에 비친 3차원 장면의 모습에 근거해서 2차원 이미지를 생성하는데 필요한 단계들 전체를 뜻한다. 입력 조립기 단계 메모리에서 기하 자료(정점과 인덱스)를 읽어서 기하학적 기본도형(삼각형, 직선 등)을 조립한다. 정점(Vertex)은 두 변이 만나는 점이다. 그러나 Direct3D에서 정점은 이보다 훨씬 일반적이다. 점의 공간 위치 뿐만 아니라 노말 벡터, 텍스쳐 좌표, 법선 벡터 등의 정보를 담을 수 있다. 정점을 나타내는 구조체 정점 정점들은 정점 버퍼라고 하는 특별한 Direct3D 자료구조안에 담겨서 렌더링 파이프라인에 묶인다. 이 정점들은 3개씩 묶여 삼각형이 될 수 있고, 2개씩 묶여 선분이 될 수 있다. 이런 기본도형을 형성하는 방식을 기본도형 위상구조(primitive topology)이다. 그림1 그림2 그림 3 그림2에서 CreateInputLayout함수를 호출하여 버텍스 레이아웃 생성 그림3에서 IASetPrimitiveTopology함수를 호출하여 삼각형 구조를 적용 색인 하나의 3차원 물체를 형성하는 삼각형들은 다수의 정점을 공유한다. 왼쪽 그림에서 V0와 V2가 공유된다. 정점이 중복되면 메모리 요구량과 그래픽 연산이 증가 되게 될 것이다. 따라서 색인(index)를 사용하는 것이다. 정점 목록을 만들어 두고, 정점들을 어떤 순서로 사용해서 삼각형을 형성하는지를 색인들로 나열함으로써 지정하면된다. 정육면체 색인 예시 정점 셰이더 입력 조립기 단계에서 기본도형들을 조립한 후에는 정점들이 정점 셰이더 단계로 입력된다. 정점 셰이더는, 정점 하나당 한번 호출되는 함수로 보면된다. 정점셰이더의 함수는 각 정점에 대해 GPU에서 실행되기 때문에 아주 빠르다. 모델 공간과 월드 공간 3D 물체를 만들 때 기하구조를 월드 공간 좌표계를 기준으로 구축하는 것이 아니라 물체 자신의 모델 공간 기준으로 구축한다. 전자를 world space, 후자를 local s...