Virtual Shadow Map(VSM)์ ์ธ๋ฆฌ์ผ ์์ง 5์์ ๋์ ๋ ์๋ก์ด ๊ทธ๋ฆผ์ ๋ ๋๋ง ๊ธฐ์ ์ ๋๋ค.
๊ธฐ์กด์ ์ ํต์ ์ธ Cascaded Shadow Map ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, ํ๋ฉด์ ๋ ธ์ถ๋๋ ์์ญ๋ง ๊ณ ํด์๋๋ก ๊ณ์ฐํ์ฌ ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ๊ทน๋ํํ๊ณ ๋์ ๋ํ ์ผ์ ๊ทธ๋ฆผ์๋ฅผ ์์ฑํฉ๋๋ค. ์ด ๋ฌธ์๋ VSM์ ํน์ฑ๊ณผ ์ค๋ฌด์์ ๋ง์ฃผ์น๋ ๋ฌธ์ ๋ค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
Virtual Shadow Map์ ์๋ ์๋ฆฌ
Virtual Shadow Map์ ์ด๋ํ ๋ฐํ์ ๋ฒ์ถ์ผ ํ ์ค์ฒ๋ก ์๋ํฉ๋๋ค. ํ๋ฉด์์ ๊ฐ ์์ญ์ด ์ฐจ์งํ๋ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ค๋ฅธ ํด์๋๋ก ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ์, ์นด๋ฉ๋ผ์ ๊ฐ๊น์ด ์์ญ์ ๋์ ํด์๋๋ก, ๋จผ ์์ญ์ ๋ฎ์ ํด์๋๋ก ๊ทธ๋ฆผ์๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ฌํ ๋ฐฉ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ๋ฉด์๋ ํ์ํ ๊ณณ์ ๋์ ํ์ง์ ๊ทธ๋ฆผ์๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ํนํ Nanite Geometry์ ํจ๊ป ์ฌ์ฉํ ๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค.
Soft Shadow ํํ์ ํ๊ณ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
Virtual Shadow Map์ ํ๋ํ๊ฑฐ๋ ์ธ๋ฏธ-ํ๋ํ ์กฐ๋ช ํ๊ฒฝ์๋ ์ ํฉํ์ง๋ง, ์ํํธํ ์กฐ๋ช ํ๊ฒฝ์์๋ ํํ์ ํ๊ณ๊ฐ ์์ต๋๋ค. ํนํ Lumen๊ณผ ํจ๊ป ์ฌ์ฉํ ๋ ๊ทธ๋ฆผ์์ ๋ฐ์์(penumbra) ํํ์ด ์ ํ์ ์ ๋๋ค.

์ํํธ ์๋์ฐ ๊ตฌํ ๋ฐฉ๋ฒ
๋ถ๋๋ฌ์ด ๊ทธ๋ฆผ์ ํจ๊ณผ๊ฐ ํ์ํ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด Ray-Traced Shadow๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
- Local Light์ ๋ํ ์ผ ํจ๋์์ Cast Raytraced Shadow๋ฅผ Enable๋ก ์ค์ ํฉ๋๋ค.
- Raytracing Samples ๊ฐ์ 1~4 ์ฌ์ด๋ก ์ค์ ํ๋ฉด ๊ทธ๋ฆผ์ ์ํฐํฉํธ๊ฐ ์ ๊ฑฐ๋๊ณ ๋ถ๋๋ฌ์ด ๊ทธ๋ฆผ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
Warning
Ray-Traced Shadow๋ ๊ทธ๋ฆผ์์ ๋ค์ด๋๋ฏน ๋ ์ธ์ง๋ฅผ ํฅ์์ํค์ง๋ง, ๋ ๋๋ง ์ฑ๋ฅ์ด ํฌ๊ฒ ์ ํ๋ ์ ์์ต๋๋ค.
Trouble Shooting
Nanite Geometry ๊ด๋ จ Issue
์ผ๋ฃฉ๋๋ฃฉํ ๊ทธ๋ฆผ์ ์ ๊ฑฐ
์ด ์ต์ ์ Nanite ๋ฉ์์ ๋ ์ด ํธ๋ ์ด์ฑ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ณ๊ฒฝํฉ๋๋ค.
r.RayTracing.Nanite.Mode 1
Nanite ๋ฉ์์์ Ray Tracing๊ณผ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ์ผ๋ฃฉ๋๋ฃฉํ ๊ทธ๋ฆผ์ ๋ ๋๋ง ์ค๋ฅ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Two-Sided Geometry ๊ทธ๋ฆผ์ ๋ฌธ์
์๋ฉด ๋ฉ์์์ ๊ทธ๋ฆผ์ ์ํฐํฉํธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ
r.Raytracing.Shadows.EnableTwoSidedGeometry 0
์๋ฉด ๊ทธ๋ฆผ์ ๊ณ์ฐ์ ๋นํ์ฑํํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Foliage ๊ด๋ จ ์ด์
Non-Nanite ํด๋ฆฌ์ง ๊ทธ๋ฆผ์ ํ์ง ํฅ์
r.Shadow.Virtual.NonNanite.IncludeInCoarsePages 0
Coarse Page ํฌํจ์ ์ ๊ฑฐํด ๋ถํ์ํ ํด์๋ ๋ญ๋น๋ฅผ ์ค์ ๋๋ค.
๊ทธ๋ฆผ์ ๊ฑฐ๋ฆฌ ํ์ฅ
ํด๋ฆฌ์ง ๊ทธ๋ฆผ์์ ์ ์ง ๊ฑฐ๋ฆฌ๋ฅผ ํ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด 5๋ก ์ค์ ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์์ 5๋ฐฐ ๋ ๋จผ ๊ฑฐ๋ฆฌ๊น์ง ๊ทธ๋ฆผ์๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
foliage.LODDistanceScale 5
๋จ, Draw Call ์ฆ๊ฐ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๋๋ฒ๊น ๋ฐฉ๋ฒ
๋ทฐํฌํธ ๋ฉ๋ด์์ ํ์(Show) โ Virtual Shadow Maps โ Cached Pages๋ฅผ ์ ํํ๋ฉด VSM์ ์บ์ ์ํ๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค.
- ๐ด ๋นจ๊ฐ์ผ๋ก ํ์๋๋ ์์ญ: ๋งค ํ๋ ์๋ง๋ค ์บ์๊ฐ ๋ฌดํจํ๋๋ ์์ญ์ ๋๋ค. ์๋ ํฌ์ง์ ์คํ์ ์ด ์ ์ฉ๋ ํด๋ฆฌ์ง๊ฐ ์ด์ ํด๋นํฉ๋๋ค.
- ๐ข ๋ น์์ผ๋ก ํ์๋๋ ์์ญ: ์บ์๊ฐ ์ ํจํ ์์ญ์ ๋๋ค.
Virtual Shadow Map ๊ฑฐ๋ฆฌ ๋ฐ ํ์ง ๊ฐ์
Contact Shadow ๊ธธ์ด ์กฐ์
์์ง ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฝ์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
5.0~5.1 ๋ฒ์ :
r.Shadow.Virtual.ContactShadowLength 0.01
(๊ธฐ๋ณธ๊ฐ: 0.02)
5.3 ์ด์ ๋ฒ์ :
r.Shadow.RadiusThreshold 0.01
(๊ธฐ๋ณธ๊ฐ: 0.03)
๊ฐ์ ์ค์ด๋ฉด ์์ ์ค๋ธ์ ํธ์ ๊ทธ๋ฆผ์ ์ ์ง ๊ฑฐ๋ฆฌ๊ฐ ๋์ด๋ฉ๋๋ค.
Shadow Culling ๋นํ์ฑํ
์์ง์์ ์๋์ผ๋ก ์ ์ฉ๋๋ Shadow Culling ์ต์ ํ๋ฅผ ์์ ํ ํด์ ํฉ๋๋ค. ์์ง์์ ๋ค๋ฃจ๋ ๊ทธ๋ฆผ์ ์ ์ง ์ต๋ ๊ฑฐ๋ฆฌ์ ๊ดํ ์ ํ์ด ํด์ ๋์ง๋ง, ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
r.RayTracing.Culling 0
Virtual Shadow Map Bug ์์
Fix Shadow Bugs
r.Shadow.Virtual.MaxPhysicalPages=8192r.Shadow.Virtual.ResolutionLodBiasLocal -2r.Shadow.Virtual.OnePassProjection.MaxLightsPerPixel 32
์ฐธ๊ณ ์๋ฃ: Fixing virtual shadow bugs in Unreal Engine 5 and Lumen
์ต์ข ๋ ๋๋ง ํ์ง ํฅ์
Directional Light ๊ทธ๋ฆผ์ ํ์ง
๋๋ ์ ๋ ๋ผ์ดํธ์ ๊ทธ๋ฆผ์ ํ์ง์ ํฅ์์ํต๋๋ค. SMRT(Shadow Map Raytracing)์ ๋ ์ด ๊ฐ์๋ฅผ ์ฆ๊ฐ์์ผ ๋ ๋ถ๋๋ฝ๊ณ ์ ํํ ๊ทธ๋ฆผ์๋ฅผ ์์ฑํฉ๋๋ค.
r.Shadow.Virtual.SMRT.RaycountDirectional 4
๋ฌด๋น ๋ ๋ ํ์์์ ๋ ธ์ด์ฆ ๋ฌธ์
Virtual Shadow Map ๋๋ Ray-Traced Shadow ์ฌ์ฉ ์ ๋ฌด๋น ๋ ๋ ํ์์ ๋ ธ์ด์ฆ๊ฐ ์ฆํญ๋๋ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฌด๋น ๋ ๋ ํ ์ค์ ์์ ์ํฐ ์จ๋ฆฌ์ด์ฑ ํญ๋ชฉ์ ๋ค์ ์ค ํ๋๋ก ์ค์ ํฉ๋๋ค.
- Temporal AA (TAA): ํ์ค ์๊ฐ์ ์ํฐ ์จ๋ฆฌ์ด์ฑ
- Temporal Super-Resolution (TSR): ๋ ๋์ ํ์ง์ ์ ์ค์ผ์ผ๋ง๊ณผ ์ํฐ ์จ๋ฆฌ์ด์ฑ์ ์ ๊ณตํ๋ UE5์ ์๋ก์ด ๊ธฐ์
TSR์ TAA๋ณด๋ค ๋ ์ ๋ช ํ ๊ฒฐ๊ณผ๋ฌผ์ ์ ๊ณตํ๋ฏ๋ก, ์ต์ข ๋ ๋๋ง์์๋ TSR ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ -ย Virtual Shadow Maps