블렌더의 발전은 최근 매우 빠르다. 블렌더 2.80을 발매한 지 불과 2주 만에 벌써 다운로드 가능한 블렌더 2.81알파가 있다. 그리고 그것은 새로운 특징들로 가득 차 있다. 일부는 UX와 작업 흐름을 개선하고 있고 (예: Outliner 개선), 일부는 모델링(VDB 리메셔)등 을 향상시키고 있지만, 렌더링 성능에 관해서는 정말 흥미롭다. 블렌더는 현재 Intel Open Image Denoise 기반의 “Denoise” 노드를 탑재하고 있다. (2021.1 수정 : 최근 버전은 NVIDIA의 OptiX를 이용한 AI Denoising이 성능 면이나 효율 면에서 훌륭한 옵션으로 추가되었다.)

노이즈 제거

인텔 오픈 이미지 디노이즈(Intel Open Image Denoise)는 실시간 레이트레이싱을 목표로 AI의 장점과 샘플사이클을 줄이는 것을 통해 렌더링을 위한 오픈 소스 라이브러리다. Open Image Denoise 라이브러리의 중심에는 효율적인 딥러닝 기반의 Denoise 필터가 있다. 따라서 그것은 실시간 미리보기 및 최종 프레임 렌더링 모두에 적합하다.

이것은 블렌더에서 첫번째 디노이저가 아니다. 블렌더는 이미 이전 부터 디노이저를 내장하고 있다. 하지만 그동안은 AI기술을 사용하지 않고, CPU만을 이용하는 알고리듬이라 약간 느리고, 퀄리티는 곰팡이 핀것 같은 불완전한 모습을 보였었다.

2.8에 들어서, Remingoton Pro는 D-NOISE라고 불리는 블렌더를 위한 추가 에드온을 발표했다. 블렌더에서 노이즈가 없는 이미지를 렌더링하는 과정을 빠르게 가속화하는 차세대 AI 디노이징 플랫폼이다.

이제 블렌더를 위한 디노이저가 3개 있는데, 빌트인 2개, 애드온 1개. 여기서는 인텔 오픈 이미지 디노이저에 초점을 맞춰 테스트를 해 보았다.

씬 테스트

에버모션 아치네어즈 씬을 64개의 스쿼드 샘플과 내장된 디노이저를 사용해서 기존 방식 대로 CPU로 렌더링한 결과, 그리고 샘플이 제곱되었다는 것은 무엇을 의미하는가?


블랜더의 사이클을 사용하면 최종 샘플 수를 지정하기 위해 “사각 샘플” 확인란을 선택할 수 있다. “64”를 베이스로 사용하면 총 64 x 64 = 4096개의 샘플을 얻을 수 있다. CPU 렌더링으로 만든 이 렌더링은 중간 CPU에서 말 그대로 몇 시간이 걸린다. 우리는 더 빨리 렌더링해야 한다. 혹시 GPU를 쓸까?

GPU와 메모리

현대의 GPU는 경로 추적에 관한 한 렌더링 속도를 크게 향상시킨다. 처음에 나는 RTX 2080Ti가 그러한 장면을 렌더링하기에 충분한 메모리를 가지고 있지 않을 것이라고 생각했지만, 다행히도 사이클은 코어외 메모리를 통해 렌더링할 수 있다. 즉 시스템과 VRAM을 합쳐서 렌더링에 사용할 수 있다. 일반적인 2080Ti는 11GB의 RAM을 장착하고 있고, 권장되는 시스템은 16GB의 RAM을 가지고 있다. 테스트 장면을 렌더링하려면 13,9GB의 램이 필요하다. (AMD의 최신 Radeon시리즈를 통하면 OpenCL로 CPU+GPU의 추가 혜택이 있다. 그러나 OptiX의 효율화를 따라가는 것은 힘든 것 같다)


1번 테스트. 64개의 샘플로 이 장면을 연출했는데, CUDA를 디노이징 없이 사용한 이미지 이다. 비록 미리보기에도 출력이 나쁘지만, 모든 자산과 텍스처를 메모리에 로드하는 데 약 2분 20초, 렌더링하는 데 22초를 사용했다. 총 2분 42초. 최종 해상도를 50%로 줄였고 출력 이미지는 700 x 465px


그리고는 내장된 기존의 디노이즈를 통한 결과물. 불행히도, 디노이저를 통한 수백개의 광점과 곰팡이 모양의 반점, 특히 오른쪽 벽에 있는 광점을 제거할 수 없었기 때문에 결과 이미지는 여전히 지저분하다. 이제 Intel Open Image Denoiser를 확인해 보자. Blender 2.81의 Compositing 편집기에 “Denoise” 노드를 삽입하면 가능해진다. (2.9 부터는 노드 에디팅 없이 랜더 옵션으로 설정이 가능해졌다.)


AI에 의해 면의 방향과 위치에 맞춰 노이즈가 사라지고 결과는 고급 랜더링 옵션을 통해 작업한 이미지와 비슷해졌다. 총 64개의 샘플만 사용하고 렌더링은 몇 초밖에 안걸렸는데 퀄리티는 더욱 개선된 모습이다.

Intel Open Image Denoiser는 렌더링된 이미지를 콤포지션(포스트프로세싱)을 통해 AI 디노이징 처리가 된다. 블렌더 컴포지터 (포스트 프로세싱) 편집기에 “Denoise” 노드를 추가하고 최종 출력으로 연결하면 된다.


디퓨즈 값과 Normal (3D 백터 및 깊이) 데이터를 통해 AI 연산을 하는결과는.알 수 있다.

(좌) 디노이즈 없이 64샘플, 1400 x 933해상도로 GPU랜더링 (약2분)
(우) 같은 옵션에 콤포지션으로 인텔 디노이즈 추가 (약2분)

Intel Denoise 노드에 Image 정보만 연결 (상단 실험과 같은 조건, 약 2분)

Image 정보와 Normal 정보 두개를 입력한 AI 디노이즈 결과 (약 2분, 이미지가 자연스러워짐)

Denoise없이, 샘플 800개로 늘려 기존 Cycle 환경에서 GPU랜더링 (11분 57초)

인텔 디노이저에 Image정보만 AI처리 (개선효과가 있지만 약간의 번짐이 남아있음, 약11분)

인텔 디노이저 노드에 Image와 Normal데이터로 AI처리 결과 (완벽하다, 약11분 소요)

마지막 이미지는 프로덕션 퀄리티 정도로 생각 하면 좋을 것 같다. 기존 프로덕션 퀄리티의 렌더링 시간 대비 본 샘플 씬으로는 1시간 정도를 절약할 수 있다.

원문 : 에버모션블로그

Joonsoo Kim

Author Joonsoo Kim

Experience-driven, Integrated Designer

More posts by Joonsoo Kim

Join the discussion One Comment

  • Joonsoo Kim 말해보세요:

    Render Layers Output Setting -> Scene View Layer (Passes)
    Passes – Data – Normal -> Normal (Pass Add)
    Passes – Light – Diffuse – Color (DiffCol) -> Albedo (Light Pass Add)

댓글 남기기