개발/Unreal Engine / / 2022. 3. 16. 19:51

Learning Unreal 4 언리얼 공부일지 - Volumetric Fog, Light Shafts, Mesh Blending [Anti-Aliasing]

반응형

Volumetric Fog

언리얼의 exponential height fog라는 안개기능이 있는데,

본래 CG에서 안개를 계산하는 것은 빛이 산란되는 환경을 구축하고 그 빛의 경로를 모두 계산한 것이므로 과정이 복잡하지만, 언리얼에서는 viewer의 위치에서 얼마나 멀리 떨어져있는가를 이용하여 쉽게 계산하는 방법을 사용한다.

위처럼 level의 모드를 버퍼 시각화 → 씬 뎁스로 변경하면,

이러한식으로 가까이 있을수록 검게, 멀리 있을수록 희게 보이게 된다. 사진의 겨우 너무 멀리있는 오브젝트가 검게 표시되는 오차가 있다.

 

이러한 언리얼에서 안개를 계산하는 방식과 달리 직접 안개를 흩뿌려 산란을 계산하는 방식도 언리얼에서 사용할 수 있는데, 이를 Volumetric Fog라고 한다.

​Volumetric Fog의 Extinction Scale값을 높이면, 안개가 짙어지는데, Fog Component의 Fog Density도 안개가 짙어지게 만든다.

Volumetric Fog과 Fog Density의 차이점은 Volumetric Fog 의 경우 빛을 산란시켜 계산하는 것이기 때문에 위 사진처럼 안개가 있으면 빛이 나아가는 방향이 보인다. (오른쪽이 Volumetric Fog을 설정한 상태)

Light Shafts

위 Light Shaft Occlusion과 Bloom이라는 옵션을 보자.

 

(왼쪽부터 Occlusion만, Bloom만, Occlusion Bloom 둘 다 설정한 사진이다)

보는 것과 같이 빛이 사물에 막혀도 빛줄기가 새어나오는 효과를 준다.

Occlusion의 경우 사물과 빛이 부딪히는 부분을 어둡게 표현한다.

Bloom은 빛샘 효과만 표현한다.

 

directional light과 Light Shaft를 함께 사용하면, 위 사진과 같이 빛이 특정 공간을 가리키는 빛샘효과를 나타낼 수 있다.

 

위와 같은 상황에서 Light의 Cast Shadows를 끄면 

이렇게 그림자를 계산하지 않는다. 언리얼과 같은 엔진에서는 그림자를 연산하는데 사양이 굉장히 많이 들기 때문에 필요한 경우 그림자를 연산하지 않는 것도 최적화의 방법이다.

일반적으로 위와 같이 빛이 쏘아 내려오는 것을 God Ray라고 부르기도 하는 모양이다.

 

Anti-Aliasing

이미지를 확대하면 위 그림과 같이 이미지가 깨지는 경우가 생긴다. 이러한 깨지는 경계들을 부드럽게 만들어주는 기법이 anti-aliasing이라는 기술이다.

이렇게 오브젝트가 눈 지형과 겹쳐서 경계선이 보이는 경우도 anti-aliasing을 통해 처리해보자.

 

material instance의 계층구조로 부모가 되는 shader graph에 DitherTemporalAA와 Dither Intensity라는 이름의 숫자 변수를 곱한 값을 픽셀 뎁스 오프셋에 저장한다.

 

그리고 Dither Intensity에 값을 적용하면, 위 사진과 같이 경계선이 조금 자연스럽게 연결된다.

 

참고로 엔진의 세팅에서 엔진 퀄리티 세팅을 보면 안티에일리어싱 퀄리티도 설정할 수 있는데, 이 값을 낮음으로 설정하게 되면 오른쪽 사진처럼 픽셀단위로 보이게 된다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유