볼류메트릭 포그는 익스포넨셜 하이트 포그 컴포넌트의 옵션 부분입니다. 볼류메트릭 포그는 카메라 프러스텀의 모든 지점에서 관여 매체의 밀도와 광도를 계산하여 안개에 영향을 미치는 다양한 밀도와 빛을 구현할 수 있습니다.
볼류메트릭 포그 컨트롤
볼류메트릭 포그를 설정하고 조정할 때 씬에서 전반적인 제어가 가능한 글로벌 컨트롤과, 국지적인 제어가 가능한 로컬 컨트롤이 있습니다. 글로벌 컨트롤은 익스포넨셜 하이트 포그 컴포넌트를 사용하여 전체 씬의 포그를 제어할 수 있도록 해줍니다. 로컬 컨트롤은 파티클 시스템 스폰이 가능한 영역에 파티클 시스템을 이용하는 방식으로 제어할 수 있습니다.
글로벌 컨트롤
볼류메트릭 포그 컨트롤은 익스포넨셜 하이트 포그와 각 라이트의 프로퍼티를 조정하여 라이트 기여도를 제어할 수 있습니다.
익스포넨셜 하이트 포그
볼류메트릭 포그 컨트롤은 익스포넨셜 하이트 포그 컴포넌트의 볼류메트릭 포그 섹션에서 찾을 수 있습니다. 익스포넨셜 하이트 분포를 통해 볼류메트릭 포그의 전체 밀도를 확인할 수 있습니다.
Property | Description |
---|---|
스캐터링 분포(Scattering Distribution) | 볼류메트릭 스캐터링의 방향성을 결정합니다. 값이 0이면 라이트가 모든 방향으로 동등하게 산란되는 한편, 1에 가까울수록 주로 라이트 방향 쪽으로 산란되며 라이트를 바라보고 있어야 산란되는 것을 볼 수 있습니다. |
알베도(Albedo) | 관여 매체의 전체적인 반사성입니다. Clouds, fog, and mist, which are based on water particles, have an albedo close to 1. |
이미시브(Emissive) | 하이트 포그에 의해 발산된 라이트 밀도입니다. |
소멸 스케일(Extinction Scale) | 라이트 전파 관여 매체가 라이트를 차단하는 양을 조절합니다. |
뷰 디스턴스(View Distance) | 카메라에서 이 거리까지 볼류메트릭 포그를 계산합니다. 포그용으로 생성되는 볼륨 텍스처에는 이 거리에 따라 제한된 수의 Z 슬라이스가 생깁니다. 거리를 늘리면 언더 샘플링되어 부작용이 생길 수 있습니다. Z 슬라이스 수는 r.VolumetricFog.GridSizeZ로 조정할 수 있는데, 수치가 클수록 퀄리티는 좋아지지만 비용이 커집니다. |
시작 거리(Start Distance) | 볼류메트릭 포그가 시작될 카메라로부터의 거리(단위: 월드 유닛)입니다. |
인접 페이드 인 거리(Near Fade In Distance) | 넘어서면 시작 거리 이후부터 볼류메트릭 포그가 페이드 인되는 거리입니다. |
스태틱 라이팅 스캐터링 강도(Static Lighting Scattering Intensity) | 볼류메트릭 포그 스태틱 라이팅 스캐터링의 강도를 스케일 조절합니다. |
포그 인스캐터링 컬러가 있는 라이트 컬러 오버라이드(Override Light Colors with Fog Inscattering Colors) | 이 옵션을 활성화하면 포그 인스캐터링 컬러(Fog Inscattering Color), 방향성 인스캐터링 컬러(Directional Inscattering Color), 인스캐터링 텍스처(Inscattering Texture) 프로퍼티를 사용하여 볼류메트릭 포그의 라이트 색을 오버라이드합니다. |
Lights
각 라이트의 씬 기여도(및 포그 섀도잉 여부)는 각 라이트의 디테일 패널에서 라이트(Light) 섹션의 다음 프로퍼티를 통해 제어할 수 있습니다.
Property | Description |
---|---|
볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity) | 이 라이트가 볼류메트릭 포그에 얼마나 영향을 미치는지 조절합니다. 0으로 설정하면 영향을 미치지 않습니다. |
볼류메트릭 섀도 드리우기(Cast Volumetric Shadow) | 볼류메트릭 포그에 영향을 미치는 라이트에 볼류메트릭 섀도를 드리울지 토글합니다. 섀도 드리우기 옵션을 활성화한 경우 포인트/스포트 라이트는 볼륨 텍스처 섀도잉에 영향을 미치므로 비용이 약 세 배 비싸지는 한편, 섀도 드리우기 옵션을 비활성화한 경우 라이트는 안개에만 영향을 미칠 뿐 섀도를 드리우지 않습니다. |
이 예시에서는 볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity)를 0으로 설정하여 스포트 라이트가 볼류메트릭 포그에 기여하지 못하도록 하고 있습니다.
로컬 컨트롤
볼륨(Volume) 영역을 사용하는 머티리얼은 공간의 한 점에서 알베도, 이미시브(발광), 익스팅션(소멸)을 나타냅니다. 알베도 범위는 [0-1]인 한편, 이미시브와 익스팅션은 0보다 큰 값으로 월드 스페이스 밀도를 나타냅니다.
현재 볼륨 머티리얼은 파티클에서만 작동하며 파티클 반경 내의 위치만 유효한데, 보통 SphereMask로 처리됩니다.
이 머티리얼을 가진 파티클 시스템을 하나 배치하면 볼류메트릭 포그에 밀도 스피어가 추가됩니다. 빌보드 없이도 완벽한 삼차원(3D) 효과를 냅니다.
이 접근법에서 한 단계 더 나아가, 텍스처에서 노이즈를 받는 스페리컬 포그 파티클을 여러 개 사용하는 방법으로 씬의 특정 영역에 안개를 제한할 수 있습니다.
In this scene, the fog particles have populated these low-lying areas to create a localized fog effect that is shadowed using Volumetric Fog.
템포럴 리프로젝션
볼류메트릭 포그에 사용되는 볼륨 텍스처(복셀)는 비교적 저해상도이며 카메라 프러스텀에 정렬됩니다. 볼류메트릭 포그는 프레임마다 서브복셀 떨림 현상이 다른 무거운 템포럴 리프로젝션 필터를 사용하여 에일리어싱을 완화합니다. 부가 효과로 손전등이나 총구 섬광처럼 빠르게 변하는 라이트에 자취가 남게 됩니다. 이러한 라이트의 기여를 비활성화하려면 볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity)를 0으로 설정하세요.
볼류메트릭 포그에서의 프리컴퓨티드 라이팅
볼류메트릭 라이트 맵은 포그 복셀마다 공간 내의 해당하는 위치에 프리컴퓨티드 라이팅을 보간하여 볼류메트릭 포그에도 스태틱 라이팅 적용을 지원합니다.
스테이셔너리 라이트는 그 간접광을 라이트 맵에 저장하므로, 이제 포그에 영향을 줍니다.
스카이 라이트 섀도잉도 제대로 되어, 실내 영역의 포그가 과해지지 않습니다.
스태틱 라이트에 대한 스태틱 및 이미시브가 별도 비용 없이 포그에 영향을 줍니다. 모두 볼류메트릭 라이트 맵에 병합되기 때문입니다.
퍼포먼스
볼류메트릭 포그의 GPU 비용은 엔진 퀄리티(Engine Scalability)의 섀도 레벨에서 설정되는 볼륨 텍스처 해상도에 의해 좌우되는 경우가 많습니다. 볼류메트릭 포그 비용은 PlayStation 4에서 높음(High)으로 설정한 경우 1밀리초, NVIDIA 970 GTX에서 에픽(Epic)으로 설정한 경우 3밀리초인데, 연산 대상 복셀이 8배나 많은 것입니다.
볼륨(Volume) 영역을 사용하는 파티클은 그 3D 오버드로 및 인스트럭션 수에 따라 상당한 GPU 비용이 추가될 수 있습니다. 이 비용을 조사하려면
profilegpu
명령을 사용하세요.포인트 및 스포트 라이트 중 볼류메트릭 섀도 드리우기(Cast Volumetric Shadow) 옵션이 활성화된 경우 섀도를 드리우지 않는 것보다 비용이 약 세 배 더 듭니다.
클라우드 렌더링은 r.PostProcessing.PropagateAlpha
가 활성화되고 익스포넨셜 하이트 포그, 볼류메트릭 클라우드, 스카이 애트머스피어와 같은 기능에 알파 홀드아웃이 활성화된 경우 비용이 많이 드는 경로를 사용합니다.
현재 지원되는 기능
볼류메트릭 포그에 현재 지원되는 기능은 다음과 같습니다.
단일 디렉셔널 라이트, 캐스케이드 섀도 맵에서의 섀도잉 또는 스태틱 섀도잉, 라이트 함수 포함
다수의 포인트 및 스포트 라이트, 다이내믹 또는 스태틱 섀도잉 포함(볼류메트릭 섀도 드리우기(Cast Volumetric Shadow) 옵션이 활성화된 경우)
스테이셔너리 스카이 라이트의 섀도잉
볼류메트릭 라이트 맵을 통한 프리컴퓨티드 라이팅(스태틱 라이트의 직접 라이팅, 스테이셔너리 라이트의 간접 라이팅).
단일 스카이 라이트, 디스턴스 필드 앰비언트 오클루전(Distance Field Ambient Occlusion)에서의 섀도잉 포함(이 옵션이 활성화된 경우).
파티클 라이트(볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity)가 0보다 큰 경우).
볼류메트릭 포그는 씬에서 그 위치에 따라 반투명에도 제대로 영향을 줍니다. 기본적으로 반투명은 버텍스 위치의 안개를 계산하므로 테셀레이션이 낮은 물 표면에서는 부작용이 생길 수 있습니다. 이러한 머티리얼은 픽셀별로 포그를 계산하도록 설정하여 문제를 해결할 수 있는데, 머티리얼 디테일에서 픽셀별 포그 계산(Compute Fog Per-Pixel) 옵션을 활성화하면 됩니다.
알려진 문제
볼류메트릭 포그에 아직 지원되지 않는 기능은 다음과 같습니다.
포인트 및 스포트 라이트상의 IES 프로파일 및 라이트 함수
레이 트레이스드 디스턴스 필드 섀도에서의 섀도잉
볼류메트릭 포그 자체에서의 섀도잉
포인트 및 스포트 라이트 상의 소스 반경
익스포넨셜 하이트 포그의 일부 세팅, 포그 컷오프 거리(Fog Cutoff Distance), 시작 거리(Start Distance), 포그 최대 오파시티(Fog Max Opacity) 등
자주 묻는 질문
볼류메트릭 포그를 사용할 때 자주 발생할 수 있는 이슈 또는 질문은 다음과 같습니다.
글로벌 포그를 무겁게 하지 않고 강한 라이트 섀프트를 낼 수 있는 방법이 있나요?
포그 글로벌 밀도를 높이면 포그가 짙어지며, 전부 무겁게 깔릴 만큼 포그가 짙어야지만 라이트 섀프트(라이트의 섀도)가 보이게 됩니다. 안개를 무겁게 하지 않고도 강한 라이트 섀프트를 만드는 두 가지 방법은 다음과 같습니다.
글로벌 포그 밀도는 낮게 유지하면서 디렉셔널 라이트의 볼류메트릭 스캐터링 강도(Volumetric Scattering Intensity)를 높입니다. Also, adjust the Scattering Distribution to nearly 0.9 in your Exponential Height Fog Actor.
글로벌 포그 밀도는 낮게 유지하면서 특정 영역의 밀도만 볼륨 파티클로 높입니다.
익스포넨셜 하이트 포그와 볼류메트릭 포그를 동시에 사용할 수 있나요?
현재 볼류메트릭 포그는 볼류메트릭 포그 뷰 디스턴스(View Distance) 내 포그 인스캐터링 컬러(Fog Inscattering Color)를 대체합니다. Because Volumetric Fog is physically-based and Exponential Fog is not, it's impossible to blend the two systems in the distance for them to 것은 불가능합니다. 익스포넨셜 하이트 포그의 일부 세팅은 볼류메트릭 포그에 영향이 없을 것이라는 뜻이기도 합니다.
볼류메트릭 포그의 중앙을 카메라와 분리할 수 있나요? 위에서 내려보는 방식의 게임에 적합할 것 같아서요.
현재는 불가능하지만, 독립형 볼륨이 해당 용도로 적합할 것입니다. 그렇다 해도 반투명과 효율적으로 통합하기는 힘듭니다.