Mitsuba2와 3에서 달라진 점은 기존에는 cmake를 통해 설치해야 했던 렌더러를 아래와 같이 간편하게 설치가 가능해졌다는 것이다.
pip install mistuba
Shell
복사
이를 통해서 자동으로 NVIDIA 드라이버 버전과 CUDA, OptiX를 찾아 이에 맞게 설치가 진행된다. 참으로 간편해졌다.
설치가 끝나면 아래와 같이 python script에서 Mitsuba3와 Dr.Jit 기능들을 간편하게 사용할 수 있다.
import mistuba as mi
import drjit as dr
Shell
복사
이를 활용한 다양한 예제들은 아래의 공개된 링크들에서 확인해볼 수 있다.
나는 현재 연구실의 linux(Ubuntu 20.04) 서버에 설치를 하였다. 그런데 설치를 하고 CUDA로 렌더링을 하려고 하니, OptiX를 찾지 못하는 문제가 발생하였다.
RuntimeError: ?[xml.cpp:1136] Error while loading "scenes/cbox.xml" (near line 1, col 1): could not instantiate scene plugin of type "scene": Could not initialize OptiX!
해당 문제는 서버의 문제였다. 이에 대해 설명하려면 먼저 연구실에서 서버를 어떻게 구축하였는지를 간단히 살펴보고자 한다.
현재 연구실은 한정된 GPU를 20명이 넘는 학생들에게 분배하기 위해 docker를 사용하고 있다. 한 server에는 4개의 GPU를 가지고 있고, 여러 학생들이 필요한 수나 종류의 GPU에만 접근할 수 있는 container를 할당받아 사용하고 있다. Docker를 사용하면서 이러한 서버 관리가 편하다는 장점이 있다.
그러나 NVIDIA-CUDA 도커 이미지를 통해 설치를 하면서 설정할 수 있는 옵션 들 중 driver compatibility의 graphics라는 옵션이 있다. 해당 옵션을 켜야지만 OpenGL, OptiX 등 렌더링에 필요한 요소들이 설치가 되는데, 딥러닝 중심인 우리 연구실은 디폴트로 해당 옵션을 사용하지 않고 있었다.
그래서 서버팀에게 새 container를 부탁하여 OptiX가 있는 서버를 할당받아 Mitsuba3를 다시 설치하여 CUDA를 통해서 빠르게 렌더링을 하고 있다. CUDA를 통해 렌더링을 하면 1024*1024 해상도와 256spp로 cornell-box 렌더링을 몇초 내로 끝낼 수 있다. 기존 CPU로는 몇분이 걸리는 작업이다.
이제 설치를 마쳤으니, 다음으로는 현재 c++로 짜여진 Path tracer (PathIntegrator)를 python으로 짜보면서 Mitsuba3와 Dr.Jit 기능을 익히고자 한다.