랜더링 파이프라인

1. 서론

컴퓨터를 이용하여 영상을 생성하는 작업을 컴퓨터 그래픽스라 하는데, 이 작업의 입력이 3차원 데이터로 주어지는 경우 3차원 그래픽스라 부른다.

컴퓨터가 생성하는 영상을 프레임이라고도 하는데, 움직이는 장면을 묘사하기 위해서는 조금씩 변화하는 연속적인 프레임을 스크린 상에 빠르게 보여주면 된다. 이러한 연속적인 프레임들은 실시간에 만들어질 수 있는데, 실시간 그래픽스의 대표적인 예는 게임이다. 실시간 그래픽스 시스템의 성능은 1초당 몇 프레임을 만들어낼 수 있느냐, 즉 FPS로 측정된다.



1.1 컴퓨터 그래픽스 제작 단계


컴퓨터 그래픽스 제작 과정은 통상 5단계로 구성된다. 첫 세 단계인 모델링, 리깅, 애니메이션은 그래픽 디자이너가 오프라인으로 수행한다. 런타임에는 프레임 별로 애니메이션이 재생되고 렌더링과 후처리가 수행된다.

모델링 -> 리깅 -> 애니메이션 -> 렌더링 -> 후처리

가상의 그래픽스 환경을 구성하는 각각의 물체를 컴퓨터가 처리할 수 있는 방식으로 표현한 것을 모델이라고 한다. 모델링 단계에서는 바로 이러한 모델을 만들어 내는 것이다. 그래픽에서 모든 물체는 폴리곤 메시로 표현된다.

모델링의 범위는 3차원 물체에 국한되지 않는다. 3차원 물체에 입혀져서 시각적 사실성을 높여주는 텍스쳐의 제작 또한 매우 중요한 모델링 작업이다.

애니메이션을 위해서는 골격을 구성한 후, 각각의 뼈의 움직임이 물체의 폴리곤 메시에 어떻게 반영될 것인가를 정의해야 한다. 예를 들어 팔의 뼈가 움직일 때 그 주변의 폴리곤이 따라서 움직이도록 설정되어야 한다. 이러한 과정을 리깅이라고 부른다.

하나의 3차원 장면이 주어졌을 때 이를 2차원 영상, 즉 프레임으로 만드는 작업을 렌더링이라고 한다. 렌더링은 매우 복잡한 연산을 요하는 단계로, 텍스처를 물체 표면에 입히는 텍스처링, 그리고 빛과 물체의 상호 작용을 처리하는 라이팅이 그 핵심을 이룬다.

빠른 속도로 진행되는 애니메이션의 경우, 한 프레임에 그 이전 프레임의 잔영을 남기면 시각적 사실성을 높일 수 있는데, 이를 모션 블러라 한다. 또한, 일반 사진과 같이 초점이 맞춰지는 영역 바깥 부분을 흐릿하게 처리하면 사실감을 높일 수 있는데, 이를 초점 심도라 한다. 이와 같은 작업은 모두 컴퓨터 그래픽스 제작 마지막 단계인 후처리를 통해 이루어진다. 이는 생략이 가능하다.

1.2 그래픽스 API


그래픽 디자이너는 오프라인 상태에서 모델링, 리깅, 애니메이션 작업을 수행하느데, 이를 위해 Autodesk, 3ds Max 또는 Maya와 같은 소프트웨어가 널리 쓰인다. 반면, 런타임 애니메이션, 렌더링, 후처리는 응용 프로그램에 의해 실행된다. 게임 프로그램은 대체로 게임 엔진을 이용하여 제작된다.

|게임 프로그램| |-| 게임엔진 그래픽스 API(OpenGL) GPU

일반적으로 게임 엔진은 그래픽스 API를 기반으로 개발된다. 많이 쓰이는 두 가지 API는 Direct3D와 OpenGL이다. 이들 API는 그ㅐ픽스 응용에 필수적인 함수들을 제공한다. 오늘날 이러한 함수들은 대부분 그래픽스 전용 프로세서인 GPU 내에서 하드웨어로 구현되어 있다. 따라서 그래픽스 API는 GPU에 대한 소프트웨어 인터페이스라고 할 수 있다. 즉, 그래픽스 API는 그래픽스 응용 프로그램 혹은 게임 엔진에서 호출하는 함수를 GPU에서 실행 가능한 명령들로 바꿔주는 역할을 한다.

































이 포스팅은 OpenGL ES를 입문한 3차원 컴퓨터 그래픽스 입문 책을 기반으로 작성되었습니다.

한정현(고려대학교) 지음, 홍릉과학출판사