볼류메트릭 클라우드

볼류메트릭 클라우드 컴포넌트와 볼륨 머티리얼을 사용하는 리얼타임 클라우드 렌더링의 개요입니다.

Choose your operating system:

Windows

macOS

Linux

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

VT_CloudExamples.png

클라우드는 어떻게 렌더링되나요?

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

이어서 리얼타임 클라우드 렌더링과 관련된 클라우드 시스템 요소를 자세히 살펴봅니다.

클라우드 볼륨 레이 마칭

클라우드를 구성하는 참여 미디어는 일반 소비자 수준 하드웨어에서 연출이 불가능하거나, 퍼포먼스 비용이 너무 비싸고 복잡한 라이팅 시뮬레이션이 필요합니다. 볼류메트릭 클라우드 시스템은 지원 가능한 다양한 플랫폼 및 디바이스에서 레이 마칭과 근사계산을 통해 클라우드 렌더링을 시뮬레이션하여 확장성 있는 리얼타임 퍼포먼스를 도출합니다. 덕분에 라이팅의 라이트 다중 스캐터링 이펙트, 클라우드의 섀도잉 및 클라우드에 대한 섀도잉, 지면으로부터 최하단 클라우드 레이어로의 라이트 기여 등을 지원하는 리얼타임 시간 시뮬레이션이 가능합니다.

라이트 멀티플 스캐터링

라이트가 볼륨을 통과하면서 볼륨 속 파티클에 산란되어, 관찰자의 눈 또는 카메라 센서까지 도달할 수도 있습니다. 이 라이트 이펙트를 멀티플 스캐터링이라고 하며, 이를 통해 클라우드 특유의 형태가 정의됩니다. 클라우드를 구성하는 물방울은 보통 1에 가까운 알베도를 가지므로, 라이트가 불륨에 거의 흡수되지 않습니다. 흡수되지 않은 라이트는 볼륨을 투과하며, 그 과정에서 스캐터링 이펙트가 매우 복잡해집니다. 관여 매체의 멀티플 스캐터링 이펙트는 클라우드 볼륨을 투과하는 라이트에 영향을 줍니다. 그래서 클라우드의 부피가 매우 커 보이면서도 밝은 것입니다.

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

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

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

지상 뷰(Ground View):

슬라이더를 드래그하면 사용할 멀티플 스캐터링 근사계산 옥타브 수치를 0~2 사이에서 조정할 수 있습니다.

높은 고도 뷰:

슬라이더를 드래그하면 사용할 멀티플 스캐터링 근사치 옥타브 수치를 0~2 사이에서 조정할 수 있습니다.

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

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

볼륨 레이 마칭 및 섀도 맵

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

레이 마치드

비어 섀도 맵

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

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

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

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

Material_ShadowsTypeSelection.png

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

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

DirectionalLight_CloudProperties.png

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

클라우드 섀도: 비활성화

클라우드 섀도: 활성화

클라우드 섀도 맵 해상도 스케일(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) 항목에 있습니다.

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

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

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

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

볼류메트릭 클라우드 시스템은 하늘과 행성 애트머스피어를 구성하는 애트머스페릭 컴포넌트의 핵심입니다. 아래 항목을 참고하면 이러한 컴포넌트와 클라우드 시스템을 세팅하고 사용하는 데 도움이 될 것입니다.

초기 레벨 셋업

다음과 같은 컴포넌트를 포함하는 새 레벨을 생성(또는 기존 레벨을 사용)하세요.

  • 태양과 달을 연출하기 위한 애트머스피어 선라이트(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.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.VolumetricRenderTarget 0 으로 설정하여 시네마틱 퀄리티 결과물을 켭니다.

  2. r.VolumetricCloud.HighQualityAerialPerspective 1 로 설정하여 클라우드의 시네마틱 대기 원근을 활성화하여 저해상도 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. 다음과 같이 애트머스페릭 라이트의 섀도잉 프로퍼티를 켭니다.

    • 클라우드의 섀도를 씬 엘리먼트 및 애트머스피어에 캐스트하도록 클라우드 섀도 캐스트 를 설정합니다.

    • 불투명 오브젝트가 클라우드 레이어에 섀도를 캐스트하도록 클라우드에 섀도 캐스트 를 설정합니다.

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

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

    • 애트머스피어 렌더링의 전반적인 퀄리티를 향상합니다.

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

    • **애트머스피어 내에서 애트머스피어 및 선라이트 섀프트의 트레이싱 퀄리티를 높입니다.

      `r.SkyAtmosphere.FastSkyLUT`가 있어야 켤 수 있습니다.

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

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

      • r.SkyAtmosphereFastSkyLUT.Width r.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

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

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

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

이 플러그인 내 콘텐츠는 시연용이며, 프로젝트용으로 완전히 최적화되지는 않을 수 있습니다. 향후 버전에서 변경 또는 제거될 수 있습니다. 용도는 에디터로 나만의 콘텐츠를 만드는 시작입니다.

Volumetrics 플러그인에는 에픽의 테크니컬 아티스트가 제작한 예시 및 실험적 콘텐츠가 있습니다. 유체 시뮬레이션 같은 볼륨 렌더링을 사용하는 기타 유형의 툴, 클라우드 렌더링 등에 적합하도록 제작되지 않았을 수 있습니다.

아래 단계를 따라 시작해보세요.

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

    이미지를 클릭하면 전체 크기로 표시됩니다.

  2. 콘텐츠 브라우저(Content Browser) 에서 뷰 옵션(View Option) 메뉴를 사용하여 엔진 콘텐츠 표시(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_Object BP_CloudMask_Generator 를 살펴보면 이 씬의 구성과 이 액터에서 조절할 수 있는 프로퍼티를 확인할 수 있습니다.

블루프린트로 칠한 클라우드

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

Paint_Clouds 레벨의 /Tools/CloudCompositing/Maps 폴더에 예시 셋업이 있습니다. BP_PaintClouds 액터에는 클라우드를 칠하는 방식을 변경할 수 있는 몇 가지 프로퍼티가 있습니다.

에디터에서 플레이(PIE) 시, 메인 툴바에서 플레이(Play) 를 누르면 클라우드를 칠할 수 있습니다. 다음 과정을 따라 씬에서 클라우드를 칠하세요.

  • 왼쪽 마우스 버튼(Left Mouse Button) 으로 클라우드 볼륨을 페인트합니다.

  • 마우스 휠(Mouse Wheel) 로 페인트 브러시의 크기를 스케일링합니다.

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

  • 페인트 시 Shift 를 누르면 칠해진 영역을 제거합니다.

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

퍼포먼스 및 확장성

프로젝트를 개발할 때는 여러 플랫폼에서의 퍼포먼스와 확장성을 제어하는 게 중요합니다. 아래 항목에는 프로젝트 내에서 클라우드 캡처 또는 라이팅 적용과 관련된 퀄리티 스케일링, 기타 기능 관련 정보가 있습니다.

지원 플랫폼

볼류메트릭 클라우드와 스카이 애트머스피어 컴포넌트는 아래 플랫폼에서 확장성 있는 애트머스피어 시스템을 이용할 수 있게 합니다.

기능

모바일

XB1 / PS4

XBX / PS5

로우엔드 / 하이엔드 PC

스카이 애트머스피어(SkyAtmosphere)

YES

YES

YES

YES

볼류메트릭 클라우드(Volumetric Clouds)

NO

YES*

YES

YES

* 이러한 플랫폼에서 적절한 퍼포먼스를 얻으려면, 볼륨 레이 마칭 및 섀도 맵 항목에서 설명한 보조 트레이싱 대신 섀도 맵 방식으로 클라우드 자체 섀도잉을 평가하는 게 좋습니다.

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

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

디폴트 샘플 수 (1.0)

디폴트 샘플 수 (0.25)

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

Performance_TracingQuality_Properties.png

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

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

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

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

  • 평가 시 회색조 파라미터(Gray Scale Parameter) 를 사용하여 머티리얼 입력 파라미터의 R(빨간색) 채널만 고려합니다. 씬에서 클라우드의 머티리얼 반응은 회색조지만, 머티리얼의 라이팅은 색을 사용합니다.

  • 프레임 예산이 넉넉하다면 지면 기여도 를 켜세요. 지면에서부터 클라우드 최하단 레이어로의 섀도 라이팅 기여도 샘플 트레이싱 비용이 추가됩니다.

  • 사용하는 멀티 스캐터링 근사계산 옥타브 수(Multi Scattering Approximation Octave Counts) 를 제한하면 셰이더 퍼포먼스를 절약할 수 있습니다. 기본적으로 싱글 스캐터링(0)을 사용하지만, 최대 두 개의 근사계산 옥타브를 사용하여 클라우드 볼륨 내 라이트 이펙트의 멀티 스캐터링을 시뮬레이션할 수 있습니다.

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

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

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

스카이 라이트의 리얼타임 캡처(Real Time Capture) 모드는 9프레임 타임 슬라이싱을 통해 싱글 프레임 캡처를 여러 프레임으로 배포합니다. 이 최적화 작업은 시간 시뮬레이션의 퍼포먼스를 향상합니다. 타임 슬라이싱만이 프레임을 많이 소모하므로, 비용이 크게 줄어듭니다. 덕분에 추가 비용 없이도 프레임 예산이 허용하는 다른 영역에서 퀄리티를 올릴 기회가 생깁니다.

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

보수적 밀도 평가

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

보수적 밀도 입력을 사용하는 경우, 애트머스피어 레이 마칭 중에 클라우드 머티리얼 샘플은 다음 두 단계를 거칩니다.

  1. Volumetric Advanced Output 노드에서 보수적 밀도 입력(Vector 3) 그래프를 평가합니다.

  2. (Vector 3 내) X의 보수적 밀도가 0보다 크다면:

    1. Main Material 노드에 연결된 더 비싼 머티리얼 그래프를 평가(알베도, 이미시브 색, 소멸 평가)평가하는 결정이 사용됩니다.

    2. 해당 값은 Volumetric Advanced Input 노드로 액세스할 수 있습니다. 이 노드는 1단계에서 이미 평가 완료한 보수적 밀도 값을 건너뜁니다.

  3. 이외의 경우, X의 보수적 밀도가 0과 같거나 작으면 더 비싼 머티리얼 평가를 건너뛰고 다음 샘플로 진행합니다.

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

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기