수십 년간 매트 페인팅된 스카이박스와 HDRI를 사용하여 하늘과 구름을 렌더링했습니다. 이제는 HDRP의 새로운 Volumetric Clouds를 사용하여 월드에 동적인 구름을 채워 넣을 수 있습니다. 이번에 소개하는 새로운 시스템은 성능과 사용 편의성 확보에 주력하여 아름다운 비주얼을 낮은 GPU 비용에 손쉽게 구현할 수 있게 되었습니다.
콘솔 마지막 세대까지 비디오 게임에서는 볼류메트릭 구름을 거의 찾아볼 수 없었습니다. 월드의 물리적 공간을 차지하는 입체적인 구름은 대개 비행 시뮬레이터와 소수의 오픈 월드 게임에 국한하여 사용되었습니다.
입체적인 구름이 부재하는 주된 이유는 렌더링 비용 때문입니다. 예컨대 구름을 통해 산란되는 빛을 레이트레이싱이나 레이마칭을 사용하여 계산하려면 많은 리소스가 소모됩니다. 두 번째 이유는 대다수 3D 게임이 터레인 또는 바다와 같은 표면에서 진행되므로, 카메라가 구름 위를 비행하는 광범위한 동적 하늘 시스템이 필요하지 않기 때문입니다.
그 결과, 많은 3D 애플리케이션이 큐브 맵이나 임포스터, 단순한 투명 머티리얼 등 정적 텍스처를 사용하는 데 만족했습니다. 보통 이러한 정적 텍스처는 카메라와 무한히 떨어져서 렌더링되므로 아래에 위치한 월드와 완전히 연결된 느낌은 아니지만, 정적 시나리오에 매우 낮은 비용으로 충분한 품질을 제공합니다.
하지만 이제 실시간 3D 렌더링 기술과 향상된 하드웨어 성능 덕분에 볼류메트릭 구름이 있는 동적 하늘의 시대가 열렸습니다. 비주얼 경험이 크게 개선되었으며 광범위한 게임플레이 시나리오를 HDRP(고화질 렌더 파이프라인)를 통해 즉시 이용할 수 있게 되었습니다.
유니티의 볼류메트릭 구름은 볼륨 프레임워크의 전역 바람에 영향을 받으며, 지형에 실감 나는 그림자를 드리울 수 있습니다. 그리고 볼류메트릭 포그, 물리 기반 하늘과 원활하게 상호 작용하여 아름다운 볼류메트릭 햇살과 일몰을 연출합니다.
마지막으로, 하늘 반사 및 앰비언트 프로브와 더불어 평면 반사 및 로컬 반사 프로브도 이러한 구름을 렌더링할 수 있습니다. 이 과정을 통해 Pro가 아닌 PlayStation 4에서는 2ms, 고사양 최신 GPU에서는 0.5ms 미만의 매우 낮은 비용으로 다른 HDRP 시스템 대부분과 원활하게 상호 작용하는 통합 구름 시스템을 구현할 수 있습니다.
몇 번의 클릭으로 볼류메트릭 구름을 만들 수 있습니다. 우선, 활성화된 HDRP Asset 및 HDRP Global Settings에서 'Volumetric Clouds'를 사용하도록 설정했는지 확인합니다.
이제 볼륨 프레임워크를 사용하여 볼류메트릭 구름을 제어할 수 있습니다. 대부분 HDRP 효과를 사용할 때와 마찬가지로 기존의 (전역) 볼륨을 선택하거나 새 볼륨을 만든 후에 볼륨 프로필에 Volumetric Clouds 컴포넌트를 할당합니다. 다양한 파라미터로 구름 유형, 바람, 조명, 그림자, 구름의 전반적인 품질과 비용을 제어할 수 있습니다.
Simple 모드에 있는 네 가지 빌트인 프리셋(Sparse, Cloudy, Overcast, Stormy)을 사용하여 다양한 운경을 빠르게 연출할 수 있습니다. 이 네 가지 기상 유형은 고도 1만 미터(3만 3천 피트) 이내 구름의 아래쪽과 안쪽, 약간 위쪽에서 디테일 수준(LOD)을 최대화하도록 조정되었습니다.
구름의 Local 모드는 신중하게 설정해야 합니다. 구름의 안쪽이나 위쪽으로 비행이 가능한지 여부는 물론이고 성능 수준에도 간접적인 영향을 미치기 때문입니다.
따라서, 카메라가 구름 안쪽이나 위쪽으로 비행하지 않아도 되는 프로젝트라면 Local 모드를 비활성화하세요. 동일한 품질의 빛과 그림자를 확보하면서 카메라의 원거리 평면 거리를 낮게 유지할 수 있습니다.
구름 안이나 위로 비행해야 하는 경우에는 물론 Local 모드를 활성화할 수 있습니다. 물리 기반 하늘의 경우, 볼류메트릭 구름 시스템이 지구의 만곡을 시뮬레이션하므로 구름 돔이 지구를 감싸며 수평선에서 육지나 바다와 자연스럽게 연결됩니다. 구름 돔을 더욱 구부리면, 구름 돔과 월드의 교차 지점을 강제로 당겨와 카메라의 원거리 평면 거리를 대폭 낮출 수 있습니다.
실제 세계에서 볼 수 있는 구름 특유의 떠있는 느낌을 재현하고자 바람에 더욱 공을 들였습니다. 바람을 제어하는 방식은 네 가지입니다. Erosion Wind를 사용하면 정적 구름에 약간의 움직임을 더할 수 있고, Shape Wind를 사용하면 전체 운경을 완전히 옮길 수 있습니다. 네 가지 방식을 함께 사용하면 황홀한 풍경이 연출됩니다.
Simple 모드에서는 네 가지 프리셋 외에도 Custom 프리셋을 사용할 수 있어, 커브와 슬라이더 몇 개로 대부분의 구름 프로퍼티를 제어할 수 있습니다. Simple 모드의 성능은 매우 강력하여 단 몇 초 만에 여러 층의 구름으로 구성된 다양한 운경을 조성할 수 있으므로, 무한한 연출이 가능합니다.
햇빛을 연출하려면 Volumetric Fog 프로퍼티를 켜고 Maximum Height와 Volumetric Fog Distance를 수천 미터로 설정하면 됩니다. 그러면 방향 광원이 대기에 영향을 미칠 수 있어 구름 아래에 아름다운 햇빛이 만들어집니다.
마지막으로, 숙련된 사용자는 Manual 모드에서 구름 커버리지 텍스처와 LUT(룩업 테이블)을 만들어 LUT에서 정의된 구름의 버티컬 슬라이스 위치를 완전히 제어할 수 있습니다. 각 텍스처가 구름 렌더링에 미치는 영향에 대한 자세한 내용은 기술 자료를 참조하세요.
구름 볼륨은 2D 커버리지 맵과 다양한 고도 프로필을 통해 구동되며, 프로필은 밀도와 침식, 앰비언트 오클루전 등의 프로퍼티를 지정하는 LUT으로 설정됩니다. 그 다음에는 두 가지 3D 노이즈 텍스처를 통해 구름 볼륨을 변형시켜 독특한 구름 모양을 생성합니다.
HDRP의 볼류메트릭 구름 시스템은 레이마칭을 사용하여 렌더링합니다. 이는 카메라에서 오브젝트와 광원 소스를 향해 광선을 단계별로 쏘는 기술입니다. 여기서는 구름 볼륨을 향해 1차 광선을 쏘아 구름 표면을 샘플링합니다. 그리고 2차 광선은 태양을 향해 쏘아 구름 표면의 픽셀을 음영 처리합니다.
비주얼 저하를 최소화하면서 비용을 더욱 절감하기 위해, 해당 과정은 4분의 1 해상도로 시간적 재투영과 누적을 사용하여 진행됩니다. 이는 구름 시스템에서 이전 프레임의 샘플을 사용하여 전체 결과물을 빌드한다는 뜻으로, 카메라가 고속 이동하거나 새로운 구름의 일부가 렌더링되어야 할 때 고스팅 현상이나 재구성 결함이 나타날 수 있습니다. 하지만 유니티에서 매우 효과적인 고스팅 방지 솔루션을 제공하므로 카메라가 매우 빠르게 움직이거나 풍속이 매우 높은 것이 허용됩니다. 아래 애니메이션에서 구름이 음속의 세 배 속도로 이동하지만 고스팅 현상이 일어나지 않습니다.
인접한 구름의 픽셀은 일반적으로 결함 해결이 어렵기 때문에 나뭇잎과 같은 얇은 지오메트리가 눈에 띄는 결함을 생성하지 않도록 특별히 주의를 기울였습니다.
아울러 실감 나는 일출과 일몰을 만드는 데도 많은 시간을 할애했습니다. 일출과 일몰 때는 지형과 하늘의 노출 차이가 크고 지구의 만곡이 그림자를 유발합니다. 또한 태양 고도가 낮은 시나리오에서는 광원 산란이 복잡해지며, 광선이 먼 거리를 이동해야 해서 특히 연출하기가 어렵습니다.
여타 시스템처럼 볼류메트릭 구름 시스템도 특정한 범위 내에서 최상의 성능을 발휘합니다. 현재는 카메라가 구름 볼륨 아래쪽과 안쪽, 약간 위쪽에 위치하는 상황에 고도로 최적화되어 있습니다. 따라서 12킬로미터(4만 피트)가 넘는 매우 높은 고도나 공간 시나리오에는 현재 시스템이 그다지 적합하지 않습니다. 아래 이미지에서와 같이 침식 타일링이 보일 수 있기 때문입니다.
그리고 현재는 한 가지 구름 볼륨만 지원됩니다. 즉, 앞서 언급된 볼륨에 존재하는 모든 구름 셰이프는 동일한 노이즈, 바람, 조명 프로퍼티를 공유합니다. 앞으로 여러 가지 구름 볼륨을 지원하는 방안을 검토하여, 각 레이어까지 섬세하게 제어할 수 있는 구름을 제작하고 애니메이션화할 수 있도록 지원할 예정입니다. 또한, 우주 시나리오를 위해 지구 중심의 위치를 제어하는 통일된 방안을 제공하려고 합니다.
궁극적으로는 구름에 그림자를 드리우는 오브젝트와 펑추얼 광원에 대한 지원을 추가할 것입니다. 이는 우주선과 그 섬광등이 주변 구름에 영향을 미치는 우주 및 비행 시뮬레이터에 특히 유용할 것으로 예상합니다. 그때까지는 일부 정적 시나리오에서 Local Volumetric Fog를 사용할 수 있습니다.
시각적 품질 측면에서는 두 가지 이상의 노이즈 수준을 지원하는 방안을 검토하여, 인터랙티브 프레임 속도와 오프라인 애플리케이션, 최상위 플랫폼을 위해 향상된 품질을 제공할 예정입니다. 마지막으로, 시시각각 변하는 하루를 연출하는 작업을 간소화하기 위해 구름 프리셋 간의 전환을 보다 쉽게 만들 계획입니다.
Unity 2021.2 버전에서 HDRP 프로젝트를 작업한다면 이번에 공개한 새로운 구름 시스템을 꼭 사용해 보세요. 지난 몇 개월간 유니티는 매우 낮은 GPU 비용으로 아름다운 볼류메트릭 구름을 개발하고자 노력했습니다. 고사양 GPU에서 랜덤 노이즈 생성기를 사용하여 레이마칭된 초고품질 구름을 만들어 보는 것과 별개로, 주류 하드웨어에서 프레임 속도가 높은 애플리케이션을 대상으로 사실적인 구름 모양을 만드는 것은 훨씬 더 복잡한 작업입니다.
이번 볼류메트릭 구름이 프로젝트의 시각적 품질을 높이고 하늘에 역동성을 더하는 데서 그치지 않고, 변화하는 날씨의 특성을 활용한 새로운 유형의 게임플레이 경험이라는 새로운 가능성을 열기 바랍니다. 인터랙티브 애플리케이션의 조명과 날씨는 주로 정적 컴포넌트로 여겨 동일한 환경이 재활용되며, 사용자가 다양한 시나리오를 탐색할 수 있는 기회가 허비되곤 합니다.
볼류메트릭 구름을 비롯하여 렌즈 플레어(Lens Flare)나 광원 앵커(Light Anchor) 등 Unity 2021.2의 기타 렌더링 기술에 대해 자세히 알아보고 싶다면 올 여름에 열린 SIGGRAPH 세션 동영상을 시청하세요. 본 세션이 공개된 이후로 구름 시스템에 다양한 개선 사항이 추가되었으나, 구름 시스템의 여러 기능을 대략적으로 살펴보기에 좋은 영상입니다.
Pierre Yves Donzallaz(테크니컬 아트 매니저)는 실시간 렌더링 분야에서 10년 이상 AAA 개발 경험을 쌓은 숙련된 테크니컬 아티스트로, 조명, 레벨 디자인, 툴 디자인, UX 개선을 전문으로 합니다. 프리부르 대학교에서 컴퓨터 공학으로 학사 학위를 받았습니다.
Crysis 시리즈, Ryse: Son of Rome, Grand Theft Auto V, Red Dead Redemption 2 등 수상 이력에 빛나는 여러 게임과 대형 AAA 타이틀 작업에 참여한 경험이 있습니다.
현재는 동료 테크니컬 아티스트들과 함께 아티스트의 효율성을 개선하고, 전 세계 사용자에게 교육을 제공하며 엔지니어 및 디자이너와 더불어 새로운 툴, 워크플로 및 그래픽 기능을 개발하고 있습니다.
Anis Benyoub(시니어 그래픽스 프로그래머)는 현재 게임과 실시간 애플리케이션의 렌더링 파이프라인을 확장하고 있습니다. Anis는 Monte Carlo 통합, 물리 기반 렌더링, 실시간 성능에 특히 관심이 많으며 커뮤니티에 자주 지식을 공유합니다.
유니티에 입사하기 전에는 Pretty Simple Games에서 그래픽스 엔지니어로 일했으며, Autodesk에서는 3DS Max의 3D R&D 엔지니어로, 그 이후에는 Stingray 게임 엔진의 핵심 소프트웨어 엔지니어로 근무했습니다. 몬트리올 에콜 폴리테크닉에서 컴퓨터 그래픽을 전공하고 컴퓨터 과학 이학 석사 학위를 취득했으며 리옹 국립응용과학원에서 컴퓨터 과학 공학 석사 학위를 취득했습니다.