본문 바로가기
개발 (Game)/Unity (General)

[Unity] URP Asset: Lighting, Shadows

by 진현개발일기 2025. 4. 14.

■ URP Asset

[Lighting]

Shadow resolution이 2048일 때 기준으로 예시를 들어보자면, 


1. 태양은 씬에 2048 x 2048 크기의 텍스처를 적용한다.
Unity는 이 텍스처의 픽셀마다 지오메트리를 계산하고, 각 지오메트리가 다른 지오메트리에 그림자를 드리우는지 확인한다.

위에 세팅한 텍스처에 그림자를 픽셀당 하나씩 찍고있는 셈인데 이를 섀도우 맵 (Shadow map)이라고 한다.

Shadowmap (스크린 전체를 위에서 세팅한 해상도 값으로 텍스처를 하나 덮어 그림자를 픽셀 단위로 찍어내는 것이라고 생각하면 됨)

 

섀도우 맵의 해상도를 높여 그림자를 선명하게 만들 수 있다.


2. 주 광원인 Directional Light에 대한 옵션은 아래와 같고 Additional Lights 옵션을 통해 Spot light 등의 부가적인 광원에 대한 옵션을 세팅해줄 수 있다.

3. 해상도는 타겟 플랫폼과 목표 성능에 맞춰 적절히 조절해주면 된다.

[Shadows]

1. Distance 조절을 통해 카메라에서 몇 Unit [Meter]만큼 떨어진 거리까지 그림자를 보여줄지 조절할 수 있다.
다만, Distance 값을 높게 설정하면 할수록 전체 거리의 그림자 해상도가 낮아지는데 그 이유는 Lighting 섹션 내 세팅한 Shadow Resolution 해상도가 Distance 값에 걸쳐 분산되기 때문이다. 그래서 모든 그림자가 설정한 해상도에 맞는 텍스처에 모두 담길 수 있도록 적절한 Distance 값이 필요하다.

 

2. Cascades를 No Cascades로 설정할 경우 Distance와 Resolution 값이 씬 전체에 동일하게 적용된다.
반면에 Cascades를 사용할 경우 Unity가 설정한 Cascades 값 만큼의 각각 다른 섀도우 맵을 설정한 간격별로 적용하게 된다.
이럴 경우 LOD와 비슷한 원리로 일정 구간까지는 고해상도 섀도우 맵을 적용하고 그 이상 카메라에서 멀어질수록 그림자의 해상도가 낮아지게 된다.




3. Depth Bias와 Normal Bias가 있는데 기본적으로 섀도우 애크니를 없애기 위한 설정들이다.

· Distance 값이 높을 수록 결함[Artifacts]도 더 촘촘하게 보이게 됨. 값을 높인 채로 고정했다면 bias 값들을 조절하여 제어해야 함.

 

· 결함을 없애기 위해 Bias 값을 높여 촘촘히 표현할 수 있으나, 유저는 씬 전반적인 모습을 보고 진행할 것이기에 세밀하게 조정할 것까지는 필요없다.

 

· 바닥에 텍스처가 있다면 결함이 눈에 잘 띄지 않을 것이다. 여러 트릭을 사용하여 최적화와 품질 사이에서 잘 타협해야 함.

 

■ 참고

https://www.youtube.com/watch?v=hMnetI4-dNY