본문 바로가기

Library/Computer Graphics

PIXAR's open source RenderMan, PIXIE



3D 그래픽스 렌더러를 바닥부터 직접 작성하는 것은 매우 힘든 일이다. 이것은 '명함 뒷장이면 충분한' 광선 추적(ray tracing) 알고리즘을 사용하더라도 만만치 않은 작업이다. 렌더러를 정말 간단하게 만드는 것은 쉽지만, 그렇게 만든 렌더러는 복잡한 씬을 그리는데 어마어마한 시간을 소모한다. 렌더몽키(RenderMonkey, AMD)를 사용하면 직접 렌더링 코드를 작성하지 않더라도 쉐이딩 효과를 살펴보는데 유용하지만, 쉐이더 프로그래밍 이상의 효과를 원한다면 렌더몽키는 부족하며, 이 경우 직접 렌더러를 만들거나 포기해야 한다.

픽시(Pixie)는 이런 경우 유용한 해결 방법이다. 픽시는 유명한 픽사(PIXAR)의 렌더맨(RenderMan)의 오픈소스 버전이며, LGPL이기 때문에 수정, 배포에 아무런 문제가 없다. 픽시의 렌더러는 광선 추적, 포톤 매핑 등 다양한 렌더링 방법을 지원하며, 원한다면 소스 코드까지 수정할 수 있다. 그러나, 픽시를 사용하는 것은 그렇게 만만한 작업이 아니다. 무엇보다 이미 빌드되어 있는 렌더러만 사용한다면 별 문제가 없겠지만, 렌더러를 수정하고자 한다면 직접 컴파일을 해야 하며, 픽시 컴파일은 절대 만만한 작업이 아니다.

픽시를 컴파일하기 위해서는 flex, bison, m4가 필수이며, 유닉스 환경에서는 이런 툴체인이 기본으로 제공되지만 윈도우 환경에서 이런 툴체인을 사용하는 것은 쉽지 않다. 윈도우 환경에서 유닉스 프로그램을 빌드할 수 있도록 도와주는 Cygwin, Msys 모두 혼자서 픽시를 완벽하게 빌드할 수는 없다. 픽시는 Visual Studio에서 컴파일해야 하며(솔루션 파일을 제공한다), flex, bison, m4 윈도우 포트를 Visual Studio에서 커스텀 빌드 과정에서 호출할 수 있어야 한다. 특히, Visual Studio 2010에서는 커스텀 빌드가 MSBuild 기반으로 바뀌었기 때문에 이래저래 제약이 많다.

또, 풀틱(FLTK, Full Tick이라고 읽는다) 및 libjpeg, libpng, libtiff 및 IlmBase(Industrial Light & Magic, 당신이 알고 있는 그 ILM 맞다), OpenExr과 같은 다른 패키지를 모두 윈도우 플랫폼에 맞게 컴파일해서 라이브러리를 준비해야 한다. 이들 라이브러리도 그렇게 간단하게 컴파일되지 않는다. 정말로, 픽시를 컴파일하는 것은 SuperHirn 윈도우 포팅 만큼이나 매우 귀찮고 인내력을 필요로 한다.

자신의 빌드 실력(프로그램 디자인 실력이 아니라)을 한번 알아보고 싶다면 픽시 빌드에 도전해보기를 권한다. 픽시를 깨끗하게 빌드했다면 당신은 프로페셔널 빌더라고 자부해도 좋다. 다음은 픽시를 사용하여 픽시 홈페이지에 있는 예제를 Intel Core 2 Duo P8700을 사용하여 렌더링해 본 것이다.










이미지 상태가 좋지 못한 것도 있는데, 이것은 픽시 홈페이지에 있는 예제들이 폐기 예고된(deprecated) 쉐이더 코드들을 포함하고 있기 때문이다. 픽시는 자체 쉐이더와 쉐이더 문법을 가지고 있다. 결과가 나오도록 간단히 수정했지만, 완전하게 수정한 것이 아니라서 정확한 렌더링 결과를 얻은 것 같지는 않다.

다시 말하지만, 픽시를 윈도우 플랫폼에서 빌드하는 것은 매우 매우 귀찮고, 인내력을 필요로 한다. 만약 픽시 빌드에 성공했다면, 원하는 렌더링 코드를 마음껏 테스트해보도록. 한동안 매우 흥미롭게 놀 수 있을 것이다. ;)