볼류메트릭 클라우드 컴포넌트

볼류메트릭 머티리얼을 사용한 리얼타임 클라우드 렌더링

Choose your operating system:

Windows

macOS

Linux

볼류메트릭 클라우드(Volumetric Cloud) 컴포넌트는 물리 기반 클라우드 렌더링 시스템으로, 아티스트와 디자이너가 개별 프로젝트에 필요한 클라우드 유형을 머티리얼 중심 접근법으로 제작할 수 있도록 해줍니다. 클라우드 시스템은 리얼타임 캡처 모드를 사용하여 스카이 애트머스피어스카이 라이트로 보강된 다이내믹 시간대 설정을 조절할 수 있습니다. 이 시스템은 지면 뷰, 비행, 지면에서 우주로 전환을 통해 아티스트가 프로젝트에 맞게 구름을 정의하고 확장하도록 지원합니다.

VT_CloudExamples.png

구름이 렌더링되는 방식

기존 게임 및 시네마틱에서 리얼타임 클라우드 렌더링은 스카이 돔 메시에 스태틱 머티리얼을 적용하거나, 비슷한 접근법으로 구현했습니다. 현재 볼류메트릭 클라우드 시스템은 레이 마칭된 3D 볼륨 텍스처를 사용하여 구름층을 실시간으로 표현합니다. 머티리얼 중심 접근법에 따라 아티스트와 디자이너는 유연성을 최대로 발휘하여 원하는 유형의 구름이 정해진 시간에 하늘에서 움직이게 할 수 있습니다.

이어서 리얼타임 클라우드 렌더링과 관련된 클라우드 시스템 엘리먼트를 자세히 살펴보겠습니다.

구름 레이 마칭

구름을 구성하는 관여 매체를 사용하려면 일반 소비자 수준의 하드웨어에서 리얼타임 시뮬레이션이 불가능하거나 관련 퍼포먼스 비용이 너무 많이 드는 복잡한 라이팅 시뮬레이션이 필요합니다. 볼류메트릭 클라우드 시스템은 지원 가능한 다양한 플랫폼 및 디바이스에서 레이 마칭과 근사계산을 통해 클라우드 렌더링을 시뮬레이션하여 확장성 있는 리얼타임 퍼포먼스를 도출합니다. 덕분에 빛의 다중 광산란 효과, 구름으로 인한 섀도 및 구름에 생긴 섀도, 지면에서 반사된 빛이 구름의 기저층에 미치는 영향 등을 지원하는 리얼타임 시간대 시뮬레이션이 가능합니다.

다중 광산란

관찰자의 눈 또는 카메라 센서에 도달하기 전에는 빛이 구름을 통과할 때 구름 속 입자에 산란될 수도 있습니다. 이런 빛의 효과를 다중 산란이라고 하며, 이를 통해 구름 특유의 형태가 정의됩니다. 구름을 구성하는 물방울의 알베도는 보통 1에 가까우므로 빛이 구름에 거의 흡수되지 않습니다. 흡수되지 않은 빛은 구름을 투과하며, 그 과정에서 산란 효과가 매우 복잡해집니다. 관여 매체의 다중 산란 효과는 구름을 투과하는 빛에 영향을 줍니다. 그래서 구름의 부피가 매우 커 보이면서도 밝은 것입니다.

리얼타임 렌더링의 다중 산란 복잡도는 볼륨 머티리얼 내 빛 투과율을 멀티플 옥타브(또는 단계)로 트레이싱하는 사실적인 산란의 근사계산으로 해결합니다. 볼류메트릭 고급 머티리얼 출력(Volumetric Advanced Material Output) 표현식은 다중 산란 기여도, 오클루전, 편심과 함께 사용하는 옥타브 수를 설정할 수 있게 해줍니다.

아래 예시는 옥타브를 사용하지 않을 때(단일 스캐터링), 옥타브 하나, 옥타브 두 개의 다중 산란 근사계산 사례입니다. 옥타브 수가 많으면 클라우드 머티리얼에 추가로 산란 근사치를 적용하지만, 셰이더 퍼포먼스 비용은 더 비싸집니다.

게임 프로젝트에는 퍼포먼스를 고려하여 다중 광산란의 싱글 옥타브를 사용하는 것을 권장합니다. 하지만 클라우드 머티리얼의 볼류메트릭 고급 머티리얼(Volumetric Advanced Material) 표현식에서 높은 기여도와 낮은 오클루전 값을 사용하면 퍼포먼스 영향 없이 비슷한 효과를 볼 수 있습니다. 아래 볼류메트릭 머티리얼 섹션을 참고하세요.

지상 뷰:

슬라이더를 드래그하면 사용할 다중 산란 근사치 옥타브 수치를 0~2 사이에서 조정할 수 있습니다.

높은 고도 뷰:

슬라이더를 드래그하면 사용할 다중 산란 근사치 옥타브 수치를 0~2 사이에서 조정할 수 있습니다.

클라우드 오클루전 및 섀도잉

구름이 빛을 가리고 표면에 섀도를 드리우는 방법은 구름의 중요한 특징 중 하나입니다. 클라우드 오클루전 및 섀도잉은 기본적으로 구름 연출에 사용하는 애트머스피어 라이트와 볼륨 머티리얼로 제어합니다. 이러한 컴포넌트를 통해 선라이트 섀프트나 구름 자체 섀도잉 등 구름의 모습을 정의하는 다양한 측면을 제어할 수 있습니다.

볼륨 레이 마칭 및 섀도 맵

클라우드 섀도잉에 사용할 수 있는 모드는 두 개가 있으며, 사용하는 클라우드 머티리얼에서 이 모드를 토글할 수 있습니다. 디폴트는 레이 마치드(Ray Marched)비어 섀도 맵(Beer Shadow Maps, BSM) 입니다.

레이 마치드

비어 섀도 맵

  • 볼륨 섀도 레이 마칭(Ray marching the volume shadow) 은 보조 레이 마칭을 통해 선명하고 채색된 섀도를 연출하지만, 사용 가능한 샘플 수 제한 때문에 섀도 트레이스 거리가 제한됩니다. 레이 마칭 섀도는 비용이 많이 들기는 하지만, 지면에서 하늘로 올라 우주로 전환할 때 좋습니다.

  • 비어 섀도 맵 은 캐스케이드 섀도 맵으로 구름의 원거리 섀도 거리 및 지면 섀도 드리우기를 지원합니다. 그리고 렌더링 속도가 더 빠르지만, 정확도가 떨어지고 볼류메트릭 자체 섀도 색이 없습니다. 일반적으로 지면에서 올려다본 구름을 연출할 때 사용됩니다.

Xbox One, PlayStation 4 등 비슷한 사양의 콘솔 플랫폼에서는 비어 섀도 맵으로 클라우드 섀도잉을 처리하는 것을 권장합니다.

머티리얼 그래프에 볼류메트릭 고급 머티리얼 출력 표현식을 추가하면 구름 머티리얼 내에서 이러한 모드를 토글할 수 있습니다. 노드를 선택했으니, 디테일(Details) 패널에서 레이 마치 볼륨 섀도(Ray March Volume Shadow) 체크박스를 토글하여 두 섀도잉 유형 사이에서 전환할 수 있습니다.

Material_ShadowsTypeSelection.png

디렉셔널 라이트 인터랙션 및 섀도잉

태양과 달 등 애트머스피어 라이트로 클라우드 및 애트머스페릭 섀도잉을 제어할 수 있습니다. 이를 통해 섀도 강도, 현재 카메라 위치부터 클라우드 섀도잉까지의 거리(Km), 클라우드 자체 섀도잉 및 대기에 섀도 드리우기 여부 등을 제어할 수 있습니다.

DirectionalLight_CloudProperties.png

애트머스페릭 라이트에서 클라우드 섀도 드리우기(Cast Cloud Shadows) 를 켜면 구름이 씬 엘리먼트를 섀도잉하고, 대기에서 선라이트 섀프트(또는 갓 레이)를 드리웁니다. 이때 선라이트 섀프트는 스카이 애트머스피어(Sky Atmosphere) 컴포넌트에 의해 정의됩니다.

클라우드 섀도: 비활성화

클라우드 섀도: 활성화

클라우드 섀도 맵 해상도 스케일(Cloud Shadow Map Resolution Scale) 은 선라이트 섀프트의 해상도 및 퍼포먼스 비용을 결정합니다. 클라우드 섀도 규모(Cloud Shadow Extent) 프로퍼티로 카메라 주위의 클라우드 섀도 맵 반경을 줄이면 더욱 선명하고 뛰어난 섀도 맵 해상도를 얻을 수 있습니다.

애트머스피어에 그림자 드리우기(Cast Shadows on Atmosphere)클라우드에 그림자 드리우기(Cast Shadows on Clouds) 로 불투명 오브젝트의 섀도를 대기와 구름에 드리울 수 있습니다. 거대한 오브젝트의 섀도잉은 디렉셔널 라이트에서 적당히 큰 규모의 다이내믹 섀도 거리(Dynamic Shadow Distance) 또는 디테일에서 원경 섀도(Far Shadow) 플래그를 켠 오브젝트의 섀도잉을 위한 원경 섀도 거리(Far Shadow Distance) 를 통해 이루어집니다.

DirectionalLight_OpaqueShadowsOnClouds.png

옥타브 근사계산으로 관여 매체 내 다중 광산란을 시뮬레이션하면 일부 에너지가 손실됩니다. 애트머스피어 라이트 프로퍼티인 클라우드 스캐터링 휘도 스케일(Cloud Scattering Luminance Scale) 은 색 선택 툴로 빛의 기여도를 조절할 수 있어서 균형 유지에 도움이 됩니다. 이를 통해 추가 비용 없이도 더 흥미롭고 자연스러운 광산란 효과를 연출할 수 있습니다.

여러 클라우드 스캐터링 휘도 스케일 예시입니다.

이미지를 클릭하면 최대 크기로 볼 수 있습니다.

리얼타임 스카이 라이트 캡처

스카이 라이트 컴포넌트는 하늘 여부(Is Sky)가 태그된 라이팅 제외 머티리얼로 대기, 구름, 하이트 포그, 불투명 메시 간 인터랙션을 제어하는 리얼타임 캡처 모드를 제공합니다. 이 모드 덕분에 퍼포먼스를 낮추지 않고도 자연스러워 보이는 다이내믹 시간대 시뮬레이션이 가능합니다.

스카이 라이트 페이지에서 리얼타임 캡처 모드 및 기타 최적화 작업에 대해 자세히 알아보세요.

스카이 라이팅 클라우드 앰비언트 오클루전

소프트 앰비언트 섀도잉은 구름의 자연스러운 모습을 정의하는 중요한 요소입니다. 스카이 라이트 컴포넌트는 클라우드 앰비언트 오클루전(Cloud Ambient Occlusion) 프로퍼티를 사용하여 스카이 및 애트머스피어 라이트에서 나오는 빛을 구름이 얼마나 차단하는지 제어합니다. 이 프로퍼티는 스카이 라이트의 디테일 패널에 있는 대기 및 구름(Atmosphere and Cloud) 섹션에 있습니다.

아래 비교는 앰비언트 오클루전을 켜고 강도를 높이면 점진적으로 다중 광산란의 양을 줄임으로써 스카이 및 애트머스피어 라이트에서 나오는 빛을 얼마나 제어할 수 있는지 보여줍니다.

클라우드 앰비언트 오클루전 비활성화

클라우드 앰비언트 오클루전 활성화

대기 및 구름에 대한 스카이 라이트 AO 기여도는 다음과 같이 설명할 수 있습니다.

  • 섀도 트레이싱 비용:

    • 샘플별 보조 마칭을 사용할 때 드는 비용은 섀도 뷰 샘플 수 스케일(Shadow View Sample Count Scale) 을 사용하여 볼류메트릭 클라우드 컴포넌트에 설정한 값에 따라 달라집니다.

    • 구름이 디렉셔널 라이트 비어 섀도 맵(메시에 섀도를 드리우는 용도로도 사용됨)을 샘플링하면 각 레이 마칭 위치에서 섀도 맵이 한 번만 계산됩니다. 비어 섀도 맵은 클라우드 섀도 레이 샘플 수 스케일(Cloud Shadow Ray Sample Count Scale) 이 있는 디렉셔널 라이트 컴포넌트의 설정에서 가져온 정보를 토대로 생성됩니다.

볼류메트릭 클라우드 세팅 및 사용

볼류메트릭 클라우드 시스템은 하늘과 행성의 대기를 구성하는 애트머스페릭 컴포넌트의 핵심입니다. 다음 섹션을 참고하면 이러한 컴포넌트와 클라우드 시스템을 세팅하고 사용하는 데 도움이 됩니다.

초기 레벨 설정

다음 컴포넌트를 포함하는 새 레벨을 생성하거나 기존 레벨을 사용하세요.

  • 태양과 달을 연출하기 위한 애트머스피어 썬 라이트(Atmosphere Sun Light) 가 활성화된 디렉셔널 라이트(Directional Light)

  • 행성의 대기를 연출하기 위한 스카이 애트머스피어(Sky Atmosphere) 컴포넌트

  • 다이내믹 시간대 시뮬레이션을 위한 리얼타임 캡처(Real Time Capture) 가 활성화된 스카이 라이트(Sky Light)

  • 하늘의 구름을 연출하기 위한 볼륨 머티리얼이 할당된 볼류메트릭 클라우드(Volumetric Cloud) 컴포넌트

인바이런먼트 라이트 믹서를 사용하면 레벨 내 애트머스페릭 컴포넌트를 간단히 생성하고 편집할 수 있으며, 각 컴포넌트의 관련 세팅을 하나의 패널에서 확인할 수 있습니다.

자세한 내용은 인바이런먼트 라이트 믹서를 참고하세요.

스카이 라이트 리플렉션 퀄리티

스카이 라이트 컴포넌트는 볼류메트릭 클라우드를 위한 씬 리플렉션 기능을 지원합니다. 볼류메트릭 클라우드 컴포넌트는 클라우드 트레이싱(Cloud Tracing) 섹션의 디테일 패널을 통해 씬 내 리플렉션 표면 레이 마칭에 사용할 샘플 수를 제어할 수 있게 해줍니다. 이에 따라 사용자는 클라우드 리플렉션 및 클라우드 섀도 리플렉션에 사용할 샘플 수를 스케일 조절할 수 있습니다.

슬라이더를 드래그하면 구름의 리플렉션 레이 샘플 수 트레이싱에 사용할 샘플을 0.25, 0.5, 0.75, 1(디폴트), 2, 4, 8 같이 점진적으로 늘릴 수 있습니다.

리플렉션 샘플 수 스케일(Reflection Sample Count Scale)섀도 리플렉션 샘플 수 스케일(Shadow Reflection Sample Count Scale) 은 범위가 제한되어 있습니다. 다음 명령을 사용하면 스케일 및 샘플 수를 늘릴 수 있습니다.

  • r.VolumetricCloud.ReflectionRaySampleMaxCount

  • r.VolumetricCloud.Shadow.ReflectionRaySampleMaxCount

  • r.VolumetricCloud.ViewRaySampleMaxCount

  • r.VolumetricCloud.SampleMinCount

  • r.VolumetricCloud.DistanceToSampleMaxCount

스카이 라이트의 리얼타임 캡처 모드와 리플렉션 퀄리티 프로퍼티에 대한 자세한 내용은 스카이 라이트를 참고하세요.

레이 마칭 퀄리티 모드

클라우드 시스템은 표준 게임플레이부터 시작해 지면에서 우주로 이동하는 빠른 게임플레이에 이르기까지, 여러 게임플레이 유형에 맞게 확장 가능한 퀄리티 모드를 제공합니다. 리얼타임 실행이 별로 중요하지 않은 프로젝트의 시네마틱 퀄리티도 지원합니다.

퀄리티 모드는 r.VolumetricRenderTarget 명령어로 정의합니다.

  • 불투명 표면으로 구름 중첩 효과를 지원하지만 낮은 해상도로 트레이스를 완료하는 반응성 모드: r.VolumetricRenderTarget.Mode 0 은 퀄리티 우선 옵션입니다. 지면에서 우주로 전환하거나 구름 속을 비행하는 등 빠른 게임플레이를 지원합니다. 구름을 빠르게 트레이스할 수 있지만, 저해상도로 표시될 수 있습니다. 트레이스는 1/4 해상도, 재구성 시에는 1/2 해상도, 화면 업샘플은 풀 해상도로 이루어집니다.

    • r.VolumetricRenderTarget.Mode 1 은 퀄리티와 퍼포먼스의 균형을 맞추기 때문에 지면 뷰가 훌륭한 여러 게임플레이 유형에 적합합니다. 이 모드는 퍼포먼스 비용이 더 많이 들지만, 그래픽 퀄리티도 높습니다. 트레이스는 1/2 해상도, 재구성 및 화면 업샘플은 풀 해상도에 이루어집니다.

  • 반응성은 더 낮지만 풀 해상도로 표시되는 모드:

    • r.VolumetricRenderTarget.Mode 2 는 높은 퀄리티를 지향하면서도 지상 뷰 리얼타임 게임플레이를 지원합니다. 이 모드는 트레이스가 빠르고 고해상도를 구현하지만, 불투명 메시를 사용한 구름 중첩 효과를 지원하지 않습니다.

  • 시네마틱 모드는 r.VolumetricRenderTarget 0 으로 시작해서 아래에 설명된 시네마틱 퀄리티 달성 워크플로의 제안 사항을 따르면 이용할 수 있습니다.

r.SkyAtmosphere.r.VolumetricClouds. 콘솔 명령을 사용하면 배치 대상 플랫폼의 퀄리티를 추가로 조절할 수 있습니다. 그리고 볼륨 머티리얼, 볼류메트릭 클라우드 및 디렉셔널 라이트 컴포넌트에는 사용자 페이싱 프로퍼티가 있습니다.

시네마틱 퀄리티 달성

엔진에서 리얼타임 클라우드 및 스카이 렌더링에 사용하는 최적화를 우회하는 고급 워크플로이며 퍼포먼스에 현저한 영향을 끼칠 수 있습니다.

스카이 애트머스피어 및 볼류메트릭 클라우드 컴포넌트의 시네마틱(또는 픽셀당) 퀄리티는 일부 명령, 클라우드 머티리얼 내 어트리뷰트 세팅, 대기 및 구름 트레이스에 사용하는 샘플 수 증가를 통해 달성할 수 있습니다.

리얼타임 퀄리티 세팅 적용

시네마틱 퀄리티 세팅 적용

프로젝트에서 가장 높은 퀄리티의 구름 및 대기를 연출하려면 먼저 아래 단계를 따르는 것이 중요합니다.

  1. r.VolumetricRenderTarget0 으로 설정하여 시네마틱 퀄리티 결과물을 활성화합니다.

  2. r.VolumetricCloud.HighQualityAerialPerspective1 로 설정해 구름의 시네마틱 대기 원근을 활성화하여 저해상도 LUT 대신 고품질 레이 트레이싱을 사용합니다.

  3. 볼류메트릭 클라우드 컴포넌트에서 다음과 같이 설정합니다.

    • 클라우드 트레이싱(Cloud Tracing) 섹션에서 뷰(View), 리플렉션(Reflections), 섀도(Shadows) 의 샘플 수 스케일을 늘립니다. 샘플 수는 개별 툴팁에서 확인할 수 있는 명령을 사용하여 스케일별로 늘릴 수 있습니다.

    • 샘플별 애트머스페릭 라이트 투과율 사용(Use per Sample Atmospheric Light Transmittance) 프로퍼티를 활성화하여 디렉셔널 라이트의 글로벌 투과율 대신 샘플당 대기 투과율을 적용합니다.

  4. 볼류메트릭 고급 머티리얼 출력(Volumetric Advanced Material Output) 표현식으로 볼륨 클라우드 머티리얼에서 다음과 같이 설정합니다.

    • 지면 반사광을 구름층 최하단에 적용하여 씬의 구름 모양과 색을 더 풍부하게 합니다.

      • 디테일 패널의 지면 기여(Ground Contribution) 를 활성화합니다. 볼류메트릭 클라우드 컴포넌트에서 지면 알베도(Ground Albedo) 를 사용하여 구름의 하단, 햇빛, 대기에 적용할 지면 색을 지정합니다.

    • 구름 내에서 다중 광산란을 시뮬레이션할 때 사용할 근사계산 수를 다음과 같이 설정합니다.

      • 사용하는 다중 스캐터링 근사치 옥타브(Multi Scattering Approximation Octaves) 수를 2 까지 늘리면 구름 속의 다중 광산란 효과 시뮬레이션이 향상됩니다.

      • 추가 옥타브를 적용하면 빛이 구름 속에서 더 많이 산란됩니다. 볼류메트릭 고급 출력 표현식에서 다중 스캐터링 기여도(Multi Scattering Contribution)다중 스캐터링 오클루전(Multi Scattering Occlusion) 값을 조절하여 제어할 수 있습니다.

  5. 다음과 같이 애트머스페릭 라이트의 섀도잉 프로퍼티를 활성화합니다.

    • 구름의 섀도를 씬 엘리먼트 및 대기에 드리우도록 클라우드 섀도 드리우기(Cast Cloud Shadow) 를 설정합니다.

    • 불투명 오브젝트의 섀도를 구름층에 드리우도록 클라우드에 그림자 드리우기(Cast Shadows on Clouds) 를 설정합니다.

      거대한 오브젝트의 섀도를 구름에 효과적으로 드리우려면 디렉셔널 라이트의 섀도 다이내믹 거리(Shadow Dynamic Distance) 가 충분히 길어야 합니다.

  6. 프로젝트에 따라 다음과 같은 스카이 애트머스피어 퀄리티 향상 요소를 선택합니다.

    • 대기 렌더링의 전반적인 퀄리티를 향상합니다.

      • r.SkyAtmosphere.FastSkyLUT0 으로 설정합니다. 이 최적화 기능을 비활성화하면 렌더링 속도는 느려지지만, 고주파수 디테일 표현 시 지구의 섀도 또는 스캐터링 로브에서 나타날 수 있는 비주얼 아티팩트가 줄어듭니다.

    • 대기 내에서 대기 및 선라이트 섀프트의 트레이싱 퀄리티를 높입니다.

      r.SkyAtmosphere.FastSkyLUT 가 있어야 활성화할 수 있습니다.

      • r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque0 으로 설정합니다.

      • 스카이 애트머스피어 컴포넌트에서 트레이스 샘플 수 스케일(Trace Sample Count Scale) 퀄리티 슬라이더로 사용 샘플 수를 조절합니다. 최대 범위가 충분치 않으면 r.SkyAtmosphere.SampleCountMax 명령을 사용하여 더 높은 제한치를 선택하고 프로퍼티 항목에 값을 직접 입력합니다.

      • r.SkyAtmosphere.FastSkyLUT.Widthr.SkyAtmosphere.FastSkyLUT.Height 명령을 사용하여 LUT 크기 설정을 늘려서 선라이트 섀프트의 퀄리티를 향상합니다.

      • r.SkyAtmosphere.AerialPerspectiveLUT.Width 크기를 늘려서 불투명하거나 투명한 표면의 안개 퀄리티를 향상합니다.

      3D 볼륨 텍스처이므로 메모리 사용량이 증가하니 값을 올릴 때는 주의해야 합니다.

볼류메트릭 머티리얼

볼륨(Volume) 머티리얼 도메인을 사용하는 머티리얼은 볼륨 텍스처로 구름의 외형을 연출합니다. 볼륨 텍스처는 그리드에 정렬된 여러 2D 텍스처로 조각난 3D 텍스처입니다. 이런 유형의 머티리얼 내 텍스처는 연기, 구름 등 여러 볼류메트릭 이펙트에 사용됩니다. 빛이 볼륨을 통과할 때의 연출이 우수하기 때문입니다.

아래 볼륨 텍스처는 그리드에 있는 여러 2D 이미지(좌측)로 이루어져 있습니다. 이러한 2D 이미지가 쌓여서 3D 볼륨(우측)이 표현됩니다.

VolumeTexture.png

텍스처 에디터로 볼륨 텍스처를 열고 2D 이미지 뷰(좌측) 또는 3D 볼륨 뷰(우측)로 확인합니다.

볼륨 텍스처는 볼류메트릭 클라우드 컴포넌트 및 머티리얼의 제어 가능한 어트리뷰트와 함께 구름의 기본 외형을 구성하는 동시에 다양한 연출을 돕습니다. 볼륨 텍스처를 활용하면 클라우드 머티리얼을 통해 여러 유형의 구름과 효과를 연출할 수 있습니다.

아래 예시는 인스턴싱을 통해 싱글 볼륨 머티리얼과 조절 가능한 파라미터 몇 개로 연출한 다양한 구름입니다. 이 예시는 볼류메트릭 플러그인 콘텐츠(아래 참조)에서 이용할 수 있는 M_volumetricCloud_02_Profiles_Soft 를 사용했습니다.

VT_CloudExamples.png

볼륨 머티리얼에는 머티리얼 표현식 입출력 노드가 있습니다. 이 노드로 클라우드 머티리얼의 기초를 형성하는 편집 가능 어트리뷰트를 이용할 수 있습니다. 이러한 세팅 중에는 셰이더 비용을 조절할 수 있어 퍼포먼스에 영향을 줄 수 있는 것도 있습니다.

머티리얼 표현식으로 표현식 값을 파라미터화하여 머티리얼 인스턴스에서 쉽고 빠르게 값을 조절할 때 사용하는 것을 권장합니다.

볼류메트릭 플러그인 콘텐츠

이 플러그인 내 콘텐츠는 시연용입니다. 따라서 프로젝트용으로 완전히 최적화되지는 않을 수 있으며, 향후 릴리즈에서 변경되거나 제거될 수 있습니다. 에디터에서 나만의 콘텐츠를 처음 생성하는 사용자에게 적합합니다.

볼류메트릭 플러그인에는 에픽의 테크니컬 아티스트가 제작한 예시 및 실험적 콘텐츠가 있습니다. 일부 콘텐츠는 유체 시뮬레이션 등 볼륨 렌더링을 사용하는 유형의 툴이나 클라우드 렌더링에 적합하지 않을 수 있습니다.

시작 방법은 다음과 같습니다.

  1. 플러그인은 메인 메뉴에서 창(Window) > 플러그인(Plugin) 을 선택하여 활성화할 수 있습니다. 볼류메트릭 플러그인을 검색하여 활성화합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  2. 콘텐츠 브라우저(Content Browser) 에서 뷰 옵션(View Options) 메뉴를 사용하여 엔진 콘텐츠 표시(Show Engine Content)플러그인 콘텐츠 표시(Show Plugin Content) 를 활성화합니다.

    이미지를 클릭하면 최대 크기로 볼 수 있습니다.

  3. 콘텐츠 브라우저의 계층구조를 사용하여 Volumetrics 폴더를 찾아 선택합니다. 이 폴더에 플러그인 콘텐츠가 있습니다.

클라우드 머티리얼 예시

이 플러그인에서는 여러 유형의 클라우드 머티리얼을 선택할 수 있습니다. 클라우드 머티리얼로 씬에 여러 유형의 구름을 생성할 수 있습니다.

클라우드 머티리얼은 /Content/Sky/Materials 폴더에서 찾을 수 있으며 접두사가 M_Volumetric_Cloud_ 입니다. Content/Sky/Materials/M_Volumetric_Cloud_02_Profiles_Soft 를 예로 들 수 있습니다.

클라우드 머티리얼을 효과적으로 사용하려면 클라우드 머티리얼의 머티리얼 인스턴스를 생성하여 볼류메트릭 클라우드 컴포넌트의 머티리얼(Material) 슬롯에 적용하세요. 머티리얼 인스턴스를 열고 파라미터를 수정하여 원하는 외형, 밀도, 스케일 등으로 구름을 렌더링할 수 있습니다.

이 문서에 나오는 구름 스크린샷 대부분은 머티리얼 인스턴스의 파라미터를 변경한 예시 클라우드 머티리얼을 사용했습니다.

블루프린트가 배치된 구름

이 플러그인 폴더의 예시 설정으로 개별 클라우드 블루프린트 액터를 씬에 배치하세요. 씬에 개별 배치한 블루프린트는 스케일, 회전, X 및 Y축 이동이 가능합니다. 볼류메트릭 클라우드 컴포넌트를 사용하려면 할당된 클라우드 머티리얼과 마찬가지로 씬에 있어야 합니다. 블루프린트 클라우드 액터를 사용하여 씬에서 구름을 추가로 커스터마이징 및 배치할 수 있습니다.

Composite_Cloud_Object Level/Tools/CloudCompositing/Maps 폴더에 예시 설정이 있습니다. BP_CloudMask_ObjectBP_CloudMask_Generator 를 살펴보면 해당 씬의 구성을 살펴볼 수 있고 이 액터에서 조절할 수 있는 프로퍼티를 확인할 수 있습니다.

블루프린트로 페인팅한 구름

이 예시 설정으로 하늘에 구름을 페인팅하고 흐릿하거나 짙은 구름을 씬에 추가하세요. 이 예시에서는 에디터에서 플레이(Play in Editor, PIE) 게임 모드를 사용했고, 간단한 유저 인터페이스로 구름을 페인팅했습니다. 마우스 커서로 브러시 스케일, 밀도 등을 조절할 수 있습니다.

Paint_Clouds 레벨의 /Tools/CloudCompositing/Maps 폴더에 예시 설정이 있습니다. BP_PaintClouds 액터에는 구름을 페인팅하는 방식을 변경할 수 있는 몇 가지 프로퍼티가 있습니다.

에디터에서 플레이(PIE) 시, 메인 툴바에서 플레이(Play) 를 누르면 구름을 페인팅할 수 있습니다. 다음 방법에 따라 씬에서 구름을 페인팅하세요.

  • 왼쪽 마우스 버튼 으로 구름을 페인트합니다.

  • 마우스 휠 로 페인트 브러시의 크기를 조절합니다.

  • 페인트하는 브러시 스트로크 강도는 Shift + 마우스 휠 로 변경합니다.

  • 페인트 시 Shift 키를 누르면 페인팅된 영역을 제거합니다.

  • BP_PaintCloud 프로퍼티의 페인트 모드(Paint Mode) 드롭다운에서 속도(Velocity) 를 선택한 경우 오른쪽 마우스 버튼 + 마우스 휠 로 클라우드 페인트 속도를 조절합니다.

퍼포먼스 및 확장성

프로젝트를 개발할 때는 여러 플랫폼에서 퍼포먼스와 확장성을 제어하는 것이 중요합니다. 아래 섹션에서는 구름 퀄리티를 스케일 조절하는 방법에 대해 알아보고, 프로젝트 내 구름 캡처 및 라이팅과 관련된 기타 기능을 살펴봅니다.

지원 플랫폼

볼류메트릭 클라우드 및 스카이 애트머스피어 컴포넌트는 다음 플랫폼에서 확장성 있는 대기 시스템을 제공하도록 지원합니다.

기능

모바일

XB1/PS4

XBX/PS5

로우엔드/하이엔드 PC

스카이 애트머스피어

예*

볼류메트릭 클라우드

아니요

예**

* 머티리얼에 하늘 여부(Is Sky) 가 활성화된 스카이돔 메시가 필요합니다. ** 플랫폼에서 적절한 퍼포먼스를 얻으려면 볼륨 레이 마칭 및 섀도 맵 섹션에서 설명한 보조 트레이싱 대신 섀도 맵 방식으로 구름 자체 섀도잉을 계산하는 것이 좋습니다.

클라우드 트레이싱 퀄리티 제어

클라우드 시스템은 볼륨 머티리얼 내에서 여러 가지 트레이스를 수행합니다. 트레이스 결과의 퀄리티는 사용한 샘플 수에 따라 결정됩니다. 샘플을 더 많이 사용할수록 퀄리티는 높아집니다. 반대로, 샘플을 적게 사용할수록 퀄리티는 낮아집니다.

디폴트 샘플 수 (1.0)

감소된 샘플 수 (0.25)

여러 플랫폼에서 퍼포먼스와 퀄리티의 균형을 맞추는 것이 중요합니다. 클라우드 트레이싱(Cloud Tracing) 프로퍼티를 사용하면 핵심 클라우드 어트리뷰트의 트레이싱 퀄리티를 조절할 수 있습니다. 예를 들어 리플렉션 내 클라우드, 클라우드 및 리플렉션 내 클라우드의 섀도잉 샘플, 클라우드 섀도잉이 중지되는 카메라와의 거리가 있습니다.

Performance_TracingQuality_Properties.png

각 프로퍼티는 개별 콘솔 명령어가 있는데, 디바이스 프로파일 환경설정(*.ini) 파일로 플랫폼마다 설정할 수 있습니다. 이를 통해 여러 플랫폼에서 목표 확장성을 설정할 때 폭넓은 유연성을 확보할 수 있습니다.

볼륨 클라우드 머티리얼 최적화

클라우드 렌더링 기반은 볼륨 머티리얼, 머티리얼 그래프에 사용하는 볼류메트릭 고급 출력볼류메트릭 고급 입력 표현식입니다. 클라우드 머티리얼의 여러 요소를 파라미터화하여 머티리얼 인스턴싱을 통해 일부 어트리뷰트를 제어할 수 있지만, 일부는 기본 머티리얼의 이 노드에서만 설정할 수 있습니다.

볼류메트릭 고급 출력 표현식에서 다음과 같은 제안 사항이 설정되었습니다. 이러한 제안 사항은 프로젝트의 클라우드 머티리얼 최적화 방법을 결정할 때 개별적으로 사용할 수 있습니다.

  • 계산 시 회색조 파라미터(Gray Scale Parameter) 를 사용하여 머티리얼 입력 파라미터의 R(빨간색) 채널만 고려합니다. 씬에서 구름의 머티리얼 반응은 회색조지만, 머티리얼의 빛에는 색을 사용합니다.

  • 프레임 예산이 넉넉하다면 지면 기여(Ground Contribution) 를 활성화합니다. 지면에서 반사된 빛이 구름의 기저층에 미치는 영향과 관련된 샘플 트레이싱 비용이 추가됩니다.

  • 사용하는 다중 스캐터링 근사치 옥타브 수(Multi Scattering Approximation Octave Counts) 를 제한하면 셰이더 퍼포먼스를 절약할 수 있습니다. 기본적으로 단일 스캐터링(0)을 사용하지만, 최대 두 개의 근사치 옥타브를 사용하여 구름 속의 다중 광산란 효과를 시뮬레이션할 수 있습니다.

  • 레이 마치 볼륨 섀도(Ray March Volume Shadow) 체크박스로 구름의 보조 레이 마칭 또는 캐스케이드 섀도 맵 사용을 토글할 수 있습니다. 체크를 해제하여 캐스케이드 섀도 맵을 활성화하면 섀도의 정확도가 저하되고 회색조가 되기는 하지만 퍼포먼스가 향상되고 섀도잉 길이가 무한이 됩니다.

  • 제한된 밀도(Conservative Density) 어트리뷰트를 사용하면 비용이 많이 드는 머티리얼 계산을 조기에 건너뛰어 레이 마칭 속도를 높일 수 있습니다. float 벡터(Vector3)의 X 컴포넌트는 관여 매체의 제한된 밀도를 나타냅니다. 값이 0 보다 크면 머티리얼을 계산하고, 0보다 작으면 다음 샘플을 직접 계산합니다. 자세한 내용은 볼류메트릭 클라우드 레퍼런스를 확인하세요.

스카이 라이트 리얼타임 캡처 모드로 예산 맞추기

스카이 라이트의 리얼타임 캡처(Real Time Capture) 모드는 9프레임 타임 슬라이싱을 통해 싱글 프레임 캡처를 여러 프레임으로 배포합니다. 이 최적화 작업은 시간대 시뮬레이션의 퍼포먼스를 향상합니다. 또한 비용 부담이 가장 큰 프레임 정도로만 타임 슬라이싱 비용이 발생하므로 예산을 크게 절약할 수 있습니다. 덕분에 추가 비용 없이도 프레임 예산 내의 다른 영역에서 퀄리티를 올릴 수 있습니다.

예를 들어 캡처한 씬 엘리먼트와 그 프레임 비용을 분석하여 스페큘러 컨볼루션에 프레임당 0.8ms가 소요된다는 것을 확인했는데, 하늘과 구름은 0.6ms만 들어간다고 해보겠습니다. 추가 비용을 들이지 않고 프레임 예산 내에서 하늘과 구름의 퀄리티를 수치 차이만큼 올릴 수 있습니다.

제한된 밀도 계산

제한된 밀도 는 레이 마칭 프로세스를 최적화하기 위해 추가되었습니다. 클라우드 머티리얼 그래프 전체에서 대기 내 레이 마칭하는 각 샘플을 계산하면 비용이 크게 오릅니다. 비용 절감을 위해 제한된 사용자 지정 밀도를 활용하면 합리적인 비용으로 계산할 수 있습니다. 예를 들어 볼류메트릭 고급 입력 표현식으로 머티리얼을 계산하면 구름 밀도를 나타내는 2D 탑다운 텍스처에서 대기 내 구름의 제한된 밀도가 0 이상이어야 한다는 단 하나의 규칙을 적용하는 것입니다.

제한된 밀도 입력을 사용하는 경우 대기 레이 마칭 중에 클라우드 머티리얼 샘플은 다음 두 단계를 거칩니다.

  1. 볼류메트릭 고급 출력(Volumetric Advanced Output) 노드에서 제한된 밀도 입력(Vector 3) 그래프를 계산합니다.

  2. Vector 3 내 X의 제한된 밀도가 0보다 큰 경우 다음과 같습니다.

    1. 메인 머티리얼(Main Material) 노드에 연결된 더 비싼 머티리얼 그래프를 계산(알베도, 이미시브 색, 소멸 계산)하도록 결정됩니다.

    2. 해당 값은 볼류메트릭 고급 입력(Volumetric Advanced Input) 노드로 확인할 수 있습니다. 이 노드는 1단계에서 이미 계산 완료한 제한된 밀도 값을 건너뜁니다.

  3. 이 외의 경우 X의 제한된 밀도가 0 이하이면 더 비싼 머티리얼 계산을 건너뛰고 다음 샘플로 넘어갑니다.

언리얼 엔진은 머티리얼 그래프에서 다이내믹 브랜칭을 지원하지 않습니다. 제한된 밀도 입력을 통해 다이내믹 브랜칭 시 비용이 더 많이 드는 머티리얼 계산을 건너뛸 수 있습니다. 언리얼 엔진이 머티리얼의 다이내믹 브랜칭을 기본 지원하는 경우 이러한 입력은 사용할 수 없게 되며, 테크니컬 아티스트가 다이내믹하게 건너뛰는 결정을 내리는 방식이 됩니다.

레이 트레이싱 및 볼류메트릭 클라우드

클라우드 시스템은 레이 트레이싱 기능을 지원하지 않으며 스카이 라이트로 렌더링된 구름만 반영합니다. 리플렉션 목적으로 볼류메트릭 클라우드를 트레이싱하면 성능이 크게 저하됩니다.

하늘에 있는 오브젝트에 리플렉션 효과를 연출하려는 경우 하늘에서 스카이 라이트 액터를 오브젝트에 더 가까이 배치하면 도움이 됩니다.

언리얼 엔진의 이전 버전을 위해 작성된 페이지입니다. 현재 언리얼 엔진 5 버전을 위해 업데이트되지 않았습니다.