밀도 볼륨
전역 안개가 스스로 생성할 수 없는 안개 효과를 씬에 구현해야 할 수 있습니다. 이때 로컬 안개를 사용할 수 있습니다. 로컬 안개를 추가하려면 밀도 볼륨을 사용하십시오. 밀도 볼륨은 방향이 지정된 바운딩 박스로 표현되는 안개의 추가 볼륨입니다. 기본적으로 안개는 상수형(균일형)이지만, Density Mask Texture 섹션에서 Texture 필드에 밀도 마스크 3D 텍스처를 할당하여 변경할 수 있습니다. 현재 HDRP는 32x32x32 해상도의 3D 텍스처를 지원합니다.
HDRP는 성능을 향상하기 위해 밀도 볼륨을 복셀화합니다. 이로 인해 두 가지 제한이 발생합니다.
- 밀도 볼륨이 볼류메트릭 그림자를 지원하지 못합니다. 광원과 표면 간에 밀도 볼륨을 배치하면 볼륨이 표면에 도달하는 광원의 강도를 감소시키지 않습니다.
- 밀도 볼륨이 매우 느린 속도(카메라의 초점 축을 따라 64 또는 128슬라이스)로 복셀화됩니다. 이로 인해 볼륨 경계에서 두드러진 앨리어싱이 발생할 수 있습니다. 가능한 경우 일부 전역 안개와 함께 Density Volumes를 사용하여 앨리어싱을 숨길 수 있습니다. 또한 밀도 마스크와 0이 아닌 블렌딩 거리를 사용하여 가장자리의 경도를 줄일 수도 있습니다.
밀도 볼륨을 생성하려면 계층 구조에서 오른쪽 클릭한 후 Rendering > Density Volume 을 선택하십시오. 또는 화면 상단의 메뉴 바를 사용하여 GameObject > Rendering > Density Volume 으로 이동할 수도 있습니다.
프로퍼티
프로퍼티 | 설명 |
---|---|
Single Scattering Albedo | 안개 컬러를 설정합니다. 볼류메트릭 안개는 조명에 색조를 적용하므로 안개가 이 컬러로 광원을 산란시킵니다. 안개 뒤 또는 안개 안에 있는 광원에서 방출하는 조명에만 색조를 적용합니다. 즉 안개 뒤 또는 안개 안에서 게임 오브젝트에 반사되는 조명에는 색조를 적용하지 않기 때문에 반사된 조명은 안개 밀도가 증가할수록 어두워집니다(검은색으로 페이드). 예를 들어 빨간색 단일 산란 알베도가 있는 흰색 벽에 광원을 비춘 후 안개 반대쪽에서 보면 안개가 광원을 어둡게 만들지만 붉은 색조를 적용하지는 않습니다. |
Fog Distance | 안개의 아래쪽 부분의 밀도를 제어하고, 미터 단위로 안개를 통해 얼마나 멀리 볼 수 있는지 결정합니다. 이 거리에서 안개는 배경 광원을 흡수하고 63%를 외부로 산란합니다. |
Size | 볼륨의 크기를 제어합니다. |
Per Axis Control | 이 프로퍼티를 활성화하여 전역이 아닌 축별 블렌딩 거리를 제어할 수 있습니다. |
Blend Distance | Blend Distance는 볼륨의 안개 레벨에서 볼륨 외부의 안개 레벨까지의 리니어 페이드를 생성합니다. 이 값은 백분율이 아니고 Size 프로퍼티에서 정의되고 페이드가 시작하는 위치인 볼륨 경계 가장자리부터의 절대 거리입니다. Unity는 이 값을 0과 Size 프로퍼티의 가장 낮은 축 값의 절반 사이로 고정합니다. Normal 탭을 사용하면 모든 방향으로 균일한 페이드를 제공하는 Blend Distance라는 이름의 단일 플로트 값을 수정할 수 있습니다. Advanced 탭을 열면 축당 두 개의 페이드(각 방향마다 하나씩)를 사용할 수 있습니다. 예를 들어 x축에는 왼쪽에서 오른쪽으로 하나, 오른쪽에서 왼쪽으로 하나가 있을 수 있습니다. 거리를 0으로 설정하면 페이드가 가려지고, 거리를 1로 설정하면 페이드가 생성됩니다. |
Invert Blend | 페이드의 방향이 반전됩니다. 각 축의 Blend Distance를 해당하는 최댓값으로 설정하면 안개가 볼륨의 중앙에 유지되고 가장자리가 희미해집니다. 블렌딩을 반전하면 중앙이 희미해지고 가장자리가 유지됩니다. |
Distance Fade Start | 밀도 볼륨이 페이드아웃하기 시작하는 카메라로부터의 거리입니다. 이는 씬을 많은 밀도 볼륨으로 최적화하고 더 멀리 있는 볼륨을 사라지게 할 때 유용합니다. |
Distance Fade End | 밀도 볼륨이 완전히 페이드아웃한 카메라로부터의 거리입니다. 이는 씬을 많은 밀도 볼륨으로 최적화하고 더 멀리 있는 볼륨을 사라지게 할 때 유용합니다. |
Density Mask Texture | 볼륨 내부에 매핑되는 3D 텍스처를 지정합니다. 밀도 볼륨은 텍스처의 알파 채널만 사용합니다. 텍스처의 값은 밀도 멀티플라이어 역할을 합니다. 텍스처 값이 0이면 밀도가 0인 볼륨이 되고, 텍스처 값이 1이면 원래의 상수형(균일형) 볼륨이 됩니다. |
Scroll Speed | 밀도 볼륨이 텍스처를 스크롤하는 속도(축당)를 지정합니다. 모든 축을 0으로 설정하면 밀도 볼륨이 텍스처를 스크롤하지 않고 안개가 고정됩니다. |
Tiling | 텍스처의 축당 타일링 속도를 지정합니다. 예를 들어 x축 컴포넌트를 2로 설정하면 텍스처가 볼륨 내부의 x축에서 2번 반복됩니다. |
밀도 마스크 텍스처 만들기
원하는 이미지 편집 소프트웨어에서 그레이스케일 플립북 텍스처를 준비하고 3D 텍스처로 임포트합니다. 예를 들어 크기가 1024x32인 텍스처는 크기가 32x32x32인 3D 텍스처를 설명하며 32개의 슬라이스가 차례로 놓여 있습니다.
추가로 Texture Import Settings에서 다음을 수행합니다.
Texture Type 을 Single Channel 로 설정합니다.
Channel 을 Alpha 로 설정합니다.
(선택 사항) Alpha Source 를 From Gray Scale 로 설정합니다.
Apply를 클릭합니다.
Density Volume 컴포넌트를 열고 임포트한 텍스처를 Density Mask Texture 섹션의 Texture 필드에 할당합니다.