블랜더3D 2.8과 Ai Denoiser의 만남

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

노이즈 제거

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

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

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

이제 블렌더를 위한 디노이저가 3개 있는데, 빌트인 2개, 애드온 1개. 오늘 나는 가장 최근의 인텔 오픈 이미지 디노이저에 초점을 맞출 것이다.

씬 테스트

CPU로 렌더링한 블렌더 장면 1을 위한 에버모션 아치네어즈 vol. 64개의 스쿼드 샘플과 내장된 데노이저를 사용했다. 샘플이 제곱되었다는 것은 무엇을 의미하는가?

블랜더의 사이클을 사용하면 최종 샘플 수를 지정하기 위해 “사각 샘플” 확인란을 선택할 수 있다. “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의 추가 혜택이 있다.)

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

그리고는 내장된 데노이저 (기존 디노이저) 를 켰다. 불행히도, 디노이저에 세워진 수백 마리의 광점과 곰팡이 모양 반점, 특히 오른쪽 벽에 있는 광점을 제거할 수 없었기 때문에 결과 이미지는 여전히 노이지하다. 이제 Intel Open Image Denoiser를 확인해 보자. Blender 2.81의 Compositing 편집기에 “Denoise” 노드를 삽입하면 가능해진다.

노이즈는 사라지고 결과는 오히려… 예술적이야! 모든 것이 얼룩지고 흐릿하다. 좋아, 64개의 샘플만 사용했고 렌더링은 문자 그대로 몇 초밖에 안걸렸는데 더 개선을 해볼 수 있다.

Intel Open Image Denoiser는 렌더링된 이미지를 AI 디노이징의 소스로 사용할 수 있다. 블렌더 컴포지팅 편집기에 “Denoise” 노드를 추가하고 그것을 영상과 출력으로 연결하면 된다. 그러나 인텔의 데노이저는 더 많은 데이터를 사용할 수 있다. 우리는 또한 “Albedo”와 “Normal” 데이터를 가지고 있다. 그렇다면 디노이저에 이 데이터를 추가하면 어떻게 될까?

입력값을 추가

그리고 결과는… 가장 적은 패스 (샘플양) 를 통한 랜더링 중 가장 좋다. 우리는 여전히 이러한 “꿈에 빠진” 모습을 가지고 있지만, 이 이미지는 현재 꽤 유용하다! 그리고 우리는 64개의 샘플만 사용했다!

디노이즈 없이 64샘플, 1400 x 933해상도로 GPU 가속 랜더링 (약2분)
+ Intel Denoise 노드에 Image 만 연결 (위와 동일 해상도, 약 2분)
+ 디노이즈 노드에 Image, Albedo 와 Normal입력 모두 사용 (약 2분)
Denoise없이, 샘플을 800개로 늘려 동일 환경에서 GPU랜더링 (11분 57초)
+ 인텔 디노이저에 Image만 연결 (약간의 곰팡이 번짐이 보인다, 약 11분)
+ 인텔 디노이저 노드에 Image, Albedo와 Normal 모두 연결 (완벽하다. 약 11분)

마지막 이미지는 프로덕션 퀄리티라고 생각한다. 기존 프로덕션 퀄리티의 렌더링 시간을 한 시간 정도 절약할 수 있었습니다.

원문 : 에버모션블로그

Say Something