Volumetric Fog와 Atmospheric Light로 다크 판타지 분위기를 만드는 법
Volumetric Fog의 밀도·소멸·이방성 산란과 Atmospheric Light의 색·각도를 조정해 다크 판타지 장면의 깊이, 실루엣, 공포감을 설계하는 실전 라이팅 가이드.

핵심 요약
Volumetric Fog는 화면 위에 반투명 레이어를 얹는 효과가 아니라 카메라와 광원 사이의 공기 입자가 빛을 산란시키는 현상을 근사하는 라이팅 시스템이다. 다크 판타지에서는 낮은 가시성만 만드는 대신, Fog Density, 높이 기반 밀도, Anisotropy, 역광 방향을 함께 설계해 실루엣과 빛기둥을 선택적으로 드러내야 한다.
가장 안정적인 접근은 1) 안개로 원근과 정보량을 줄이고 2) Atmospheric Light로 시선을 유도하며 3) 로컬 볼륨으로 플레이 공간마다 밀도와 색을 분리하는 것이다.
Volumetric Fog는 왜 다크 판타지 연출에 효과적인가?
다크 판타지의 핵심은 화면을 완전히 어둡게 만드는 데 있지 않다. 플레이어가 위험을 예상할 수 있을 만큼만 정보를 주고 그 밖의 공간에는 불확실성을 남기는 데 있다. 볼류메트릭 포그는 거리와 높이에 따라 대비를 감쇠시켜 먼 배경을 숨기고 강한 역광 주변에 빛기둥을 만들어 캐릭터와 오브젝트의 윤곽을 분리한다.
일반 거리 안개는 주로 최종 색에 안개색을 섞는다. 반면 Volumetric Fog는 3D 격자 또는 프러스텀 기반 볼륨에서 광원의 산란을 계산한다. 따라서 횃불, 달빛, 창문 틈의 빛처럼 공간 안에서 보이는 광선 표현에 적합하다.
| 항목 | 거리 안개 | Volumetric Fog |
|---|---|---|
| 계산 기준 | 카메라-표면 거리 | 카메라 프러스텀 내부의 매질과 광원 |
| 빛기둥 | 구현하기 어렵다 | 점광원·스포트라이트와 자연스럽게 결합 |
| 높이 변화 | 별도 셰이더가 필요할 수 있다 | Height Fog 또는 Local Volume으로 제어 가능 |
| 다크 판타지 용도 | 원경 정리 | 실루엣, 공포감, 시선 유도 |
| 주의점 | 평면적으로 보일 수 있다 | 해상도·샘플 수에 따라 비용과 노이즈가 증가 |
안개를 통과하는 투과광은 Beer-Lambert 법칙으로 근사할 수 있다.
여기서 는 광선 이동 거리이고 는 흡수와 산란을 합친 소멸 계수다. 가 커질수록 먼 물체의 대비가 빠르게 사라진다. 게임 엔진의 Fog Density는 보통 이 계수를 직접 또는 간접적으로 제어한다.

Atmospheric Light와 안개를 어떻게 역할 분리할까?
Atmospheric Light는 대기 전체의 방향성과 색을 정하는 광원이다. Unreal Engine에서는 Directional Light의 Atmosphere Sun Light 설정과 Sky Atmosphere가 대표적이며 Unity HDRP에서는 Directional Light, Volumetric Fog, Physically Based Sky 조합이 유사한 역할을 한다. 엔진 명칭은 달라도 설계 원칙은 같다.
- Volumetric Fog: 공간의 깊이와 가시성을 제어한다.
- Atmospheric Light: 장면 전체의 주광 방향과 산란 색을 결정한다.
- 로컬 광원: 횃불, 제단, 창문처럼 플레이어의 시선을 고정할 지점을 만든다.
- Local Volume 또는 Local Fog Volume: 늪, 지하실, 보스방처럼 특정 구역의 공기 밀도를 분리한다.
다크 판타지에서 주광은 정면광보다 측광 또는 역광이 유리하다. 정면광은 재질과 지형 정보를 고르게 보여 주지만 역광은 안개 속의 실루엣을 강화한다. 플레이어가 향하는 길의 끝이나 중요한 적의 뒤쪽에 약한 주광을 배치하면 목적지를 밝히지 않고도 진행 방향을 암시할 수 있다.
이방성 산란은 무엇을 조절하는가?
Anisotropy는 빛이 어느 방향으로 산란되는지 조절한다. Henyey-Greenstein 위상 함수는 다음처럼 표현할 수 있다.
는 이방성 계수다. 이면 전방 산란이 강해져 광원을 바라볼 때 빛기둥이 더 두드러진다. 이면 후방 산란 성향이 커진다.
| 목표 | 권장 방향 | 조정 이유 |
|---|---|---|
| 달빛이 안개를 가르는 숲 | 약한 양의 Anisotropy | 역광에서 얇은 광선이 보인다 |
| 성당 창문 빛 | 중간 양의 Anisotropy | 스포트라이트의 경로가 강조된다 |
| 탁한 지하 묘지 | 0에 가까운 값 | 빛기둥보다 균일한 공기감을 만든다 |
| 과장된 판타지 연출 | 높은 양의 값은 제한적으로 사용 | 화면 중앙의 번짐과 평면화를 막는다 |
엔진마다 값 범위와 체감이 다르므로 숫자를 그대로 복사하기보다 동일한 카메라 구도에서 주광을 바라보는 장면과 반대 방향을 보는 장면을 함께 비교해야 한다.
다크 판타지 Volumetric Fog를 3단계로 설정하는 방법
1. 먼저 가시 거리와 명암 구조를 정한다
라이팅을 시작하기 전에 플레이어가 적을 식별해야 하는 최대 거리와 배경으로 숨길 거리부터 정한다. 예를 들어 근접 전투 중심의 복도라면 중경을 빠르게 안개에 묻어도 되지만 원거리 투사체가 중요한 전장에서는 적의 판독 거리를 유지해야 한다.
- 대표 카메라 위치를 세 곳 선정한다. 진입 지점, 전투 지점, 보상 지점이면 충분하다.
- 각 위치에서 전경·중경·원경의 중요한 실루엣을 표시한다.
- 전경은 선명하게, 중경은 대비를 낮게, 원경은 배경색과 가깝게 보이도록
Fog Density와Fog Distance를 조정한다.
이 단계에서는 안개색을 거의 검정으로 만들지 않는 편이 좋다. 검은 안개는 깊이보다 화면의 빈 공간을 만든다. 푸른 회색, 탁한 청록, 어두운 황갈색처럼 환경의 지배색을 가진 저명도 색이 더 자연스럽다.
2. Height Fog와 Local Volume으로 공기를 층화한다
균일한 안개는 실외와 실내를 같은 크기로 축소해 장면을 평평하게 만든다. 지면 가까이는 짙고 위로 갈수록 옅어지는 Height Fog를 기본으로 둔 뒤 특수 구역에만 로컬 볼륨을 더한다.
| 공간 | 기본 안개 | 로컬 볼륨 |
|---|---|---|
| 늪지 | 낮은 높이에 높은 밀도 | 물 표면과 갈대 주변에 차가운 색의 얇은 볼륨 |
| 폐성당 | 전체 밀도는 낮게 | 창문 경로와 제단 주변에 먼지 입자 볼륨 |
| 지하 묘지 | 천장까지 완만한 밀도 | 관, 구덩이, 보스 등장 위치에 국지적 안개 |
| 숲길 | 낮은 지면 안개 | 길 바깥 수풀에 밀도 높은 덩어리 |
로컬 볼륨의 경계가 보이면 박스가 배치된 것처럼 느껴진다. 경계에는 노이즈 텍스처나 3D 노이즈를 사용해 밀도를 변조하고 볼륨이 겹치는 지점은 카메라 이동 중에도 확인한다. 노이즈는 큰 형태부터 잡아야 한다. 작은 고주파 노이즈만 올리면 연무가 아니라 화면 노이즈처럼 보인다.

3. 빛기둥은 적게 배치하고 목적을 부여한다
볼류메트릭 광선은 보기 좋지만 모든 조명에 적용하면 장면의 계층이 사라진다. 플레이어가 봐야 할 장소에만 강한 산란을 허용한다.
- 주목 지점을 하나 선택한다. 출구, 제단, 적 보스, 상호작용 오브젝트 중 하나면 된다.
- 해당 지점 뒤에 Directional Light 또는 좁은 Spot Light를 두어 역광 구도를 만든다.
- 주변의 보조광은
Volumetric Scattering Intensity또는 볼류메트릭 기여도를 낮춰, 주목 지점의 광선만 남긴다.
Unity HDRP에서는 Light의 볼류메트릭 디머와 Volumetric Fog 품질 설정을 함께 확인한다. Unreal Engine에서는 Exponential Height Fog의 Volumetric Fog, Directional Light의 Volumetric Scattering Intensity, 각 광원의 Volumetric Scattering Intensity를 함께 조정한다. 두 엔진 모두 광원별 기여도를 낮추는 방식이 전체 안개 밀도를 과도하게 올리는 방식보다 예측 가능하다.
안개 밀도와 조명 색은 어떤 기준으로 맞춰야 하나?
안개와 광원의 색을 같은 색으로 맞추면 화면은 쉽게 단조로워진다. 다크 판타지에서는 차가운 환경 안개와 제한적인 따뜻한 실용광을 대비시키는 구성이 읽기 쉽다. 예를 들어 숲의 원경은 청회색 안개로 밀어내고 플레이 가능한 경로의 횃불만 낮은 채도의 주황색으로 둔다.
| 요소 | 권장 성격 | 피해야 할 상태 |
|---|---|---|
| 환경 안개색 | 저채도, 환경색 기반 | 순수 검정 또는 과포화 색 |
| 달빛·천광 | 차갑고 약한 방향성 | 안개를 지워 버리는 높은 노출 |
| 횃불·촛불 | 따뜻하지만 제한된 반경 | 모든 공간을 같은 주황색으로 채움 |
| 보스 연출광 | 색 대비를 명확히 사용 | 전투 판독을 방해하는 강한 플리커 |
노출은 안개보다 먼저 고정한다. 자동 노출이 큰 범위로 동작하면 카메라가 어두운 복도에서 밝은 창문으로 향할 때 안개 밀도가 바뀐 것처럼 보인다. 다크 판타지의 대표 전투 구도에서는 고정 노출 또는 좁은 자동 노출 범위를 사용하고 안개·조명·톤매핑을 그 상태에서 조정하는 편이 안정적이다.
성능을 해치지 않고 Volumetric Fog를 최적화하려면?
Volumetric Fog 비용은 대체로 화면 해상도, 프러스텀 격자 해상도, 볼륨 거리, 그림자를 내는 광원 수에 영향을 받는다. 안개가 보이지 않는 먼 거리와 의미 없는 소형 광원의 볼류메트릭 기여를 줄이는 것이 가장 효과적이다.
우선순위가 높은 최적화 항목
- Volumetric Fog 거리 제한: 플레이에 필요한 거리까지만 계산한다. 먼 산과 스카이박스는 일반 거리 안개나 대기 산란으로 처리한다.
- 그림자 투사 광원 제한: 모든 횃불이 볼류메트릭 그림자를 만들 필요는 없다. 영웅 조명만 그림자를 남긴다.
- Local Volume 범위 축소: 플레이어가 접근하지 않는 공간까지 큰 로컬 볼륨으로 덮지 않는다.
- 노이즈 애니메이션 속도 절제: 빠른 3D 노이즈 이동은 비용과 깜빡임을 늘리고 안개가 물처럼 흐르는 인상을 준다.
- 품질 단계 분리: 낮은 품질에서는 프러스텀 격자 해상도와 최대 거리부터 낮춘다. 색과 기본 높이 분포는 유지한다.
간단한 커스텀 안개 셰이더에서 거리 기반 소멸을 확인할 때는 다음 HLSL 형태로 시작할 수 있다. 실제 엔진의 볼류메트릭 파이프라인을 대체하는 코드가 아니라 포스트 프로세스나 머티리얼에서 안개 계수의 동작을 검증하는 최소 예제다.
float FogTransmittance(float distanceToCamera, float extinction)
{
return exp(-extinction * distanceToCamera);
}
float3 ApplyFog(float3 sceneColor, float3 fogColor, float distanceToCamera, float extinction)
{
float transmittance = FogTransmittance(distanceToCamera, extinction);
return lerp(fogColor, sceneColor, transmittance);
}
extinction을 두 배로 올렸을 때 원경의 대비가 예상보다 급격히 사라진다면 조명 세기를 올리기보다 최대 안개 거리와 높이 분포를 먼저 점검한다. 조명을 과도하게 올리면 안개 문제를 해결하는 대신 톤매핑과 블룸 문제를 새로 만들기 쉽다.
자주 묻는 질문 (FAQ)
Volumetric Fog를 켜면 화면이 뿌옇고 플레이가 불편해진다. 어떻게 해결할까?
전체 밀도를 낮추는 것보다 높이 기반 밀도와 Local Volume을 사용해 안개를 필요한 구역에만 둔다. 적, 상호작용 오브젝트, 이동 경로의 명암 대비는 안개가 있어도 유지해야 한다.
모든 횃불에 볼류메트릭 산란을 적용해도 될까?
권장하지 않는다. 중요한 횃불과 창문 빛에만 높은 기여도를 주고 배경 횃불은 낮추거나 끈다. 빛기둥도 시각적 자원이라서 적을수록 방향성이 선명하다.
다크 판타지 안개는 무조건 차가운 파란색이어야 할까?
아니다. 늪은 탁한 녹회색, 화산 지대는 어두운 황갈색, 낡은 성당은 먼지 섞인 회색도 잘 맞는다. 중요한 것은 환경 안개와 실용광의 색 대비 그리고 낮은 채도다.
마무리
Volumetric Fog는 장면을 숨기는 장식이 아니라 공간의 정보량을 조절하는 도구다. 가시 거리와 실루엣을 먼저 설계하고 Atmospheric Light로 한 방향의 시선을 만든 뒤 로컬 볼륨으로 공기의 밀도를 층화하면 적은 광원만으로도 다크 판타지 특유의 불안한 깊이를 만들 수 있다.



