์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์–ธ๋ฆฌ์–ผ5๋กœ ๋„˜์–ด์˜ค๋ฉด์„œ ์ถ”๊ฐ€๋œ ๋‚˜๋‚˜์ดํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



1. Deferred Shader Rendering

(์ด์ „ ๊ธ€:ย https://gall.dcinside.com/m/game_dev/196295)

์ €๋ฒˆ ๊ธ€์—์„œ ๋‹ค๋ฃฌ Deferred Shader Rendering์€ Shader(Lighting)์—ฐ์‚ฐ์„ ์ชผ๊ฐœ์ฃผ๋ฉด์„œ ํšจ์œจ์  ์ด๋“์„ ์ฑ™๊ฒผ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ํ™”๋ฉด์— ๋ณด์ด๋Š” ๋ฌผ์ฒด์˜ ํ‘œ๋ฉด๋งŒ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ G-Buffer๋ฅผ ๋งŒ๋“ค๊ณ , G-Buffer์—์„œ Shader์—ฐ์‚ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌผ์ฒด ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•˜๋Š” Shader ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ , ํ™”๋ฉด์˜ ํ”ฝ์…€์— ๋น„๋ก€ํ•˜๋Š” Shader์—ฐ์‚ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.


์ถ”๊ฐ€์ ์œผ๋กœ G-Buffer๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ Depth PrePass์™€ Base Pass๋กœ ๋‚˜๋ˆ„์–ด, ํ‘œ๋ฉด์ด ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Depth PrePass: ๋ฌผ์ฒด์˜ Vertex์ •๋ณด๋งŒ ์จ์„œ ํ”ฝ์…€๋งˆ๋‹ค ์ œ์ผ ๊ฐ€๊นŒ์šด ํ‘œ๋ฉด๊นŒ์ง€ ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œ๊ธฐํ•ด Depth Map์„ ๋งŒ๋“ฆ

Base Pass: Depth Map์œผ๋กœ ํ™”๋ฉด ํ”ฝ์…€๋งˆ๋‹ค ์–ด๋–ค ๋ฌผ์ฒด๊ฐ€ ์ œ์ผ ์•ž์— ๋‚˜์™€์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜์—ฌ G-Buffer ๊ตฌ์„ฑ


ํ•˜์ง€๋งŒ ๋ฌธ์ œ์ ์€ ๋ฌผ์ฒด์˜ vertex๊ฐ€ ์ค‘๋ณต์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ Unreal Engine 5์—์„œ๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ดํ”„๋ผ์ธ์„ ๋„์ž…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



2. Deferred Material Rendering

Depth Map์„ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๊ณ , Visibility Buffer๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฐฉ์‹์„ Deferred Material Rendering์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Visibility Vuffer๋Š” Depth, ์‚ผ๊ฐํ˜• ID๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Vis-Buffer์—์„œ ๋ฌผ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋จธํ‹ฐ๋ฆฌ์–ผ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋” ํšจ์œจ์ ์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Deferred Shading์€ Lighting์„ ์ชผ๊ฐฐ์ง€๋งŒ, ์ด์ œ๋Š” ๋จธํ‹ฐ๋ฆฌ์–ผ์„ ์ฐพ๋Š” ๊ณผ์ •๊นŒ์ง€ ์ชผ๊ฐฐ์œผ๋ฏ€๋กœ Deferred Material์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c62f72d4a9a


์ถ”๊ฐ€์ ์œผ๋กœ, Vis-Buffer์—๋Š” Cluster ID๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ Cluster์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๋ฉฐ Vis-Buffer๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



3. Cluster LOD

Level of Detail(LOD)๋ž€, ๋ Œ๋”๋ง ์ตœ์ ํ™” ๊ธฐ์ˆ ๋กœ, ๋จผ ๋ฌผ์ฒด๋Š” ์ ์€ ํด๋ฆฌ๊ณค์ˆ˜์˜ ๋ฉ”์‹œ๋กœ ์น˜ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c60f92a479f


์ด LOD๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด Nanite๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌผ์ฒด๋ผ๋„ ๊ฐ€๊นŒ์šด ๋ถ€๋ถ„์€ ์ž์„ธํžˆ, ๋จผ ๋ถ€๋ถ„์€ ๋Œ€์ถฉ ๋ฌ˜์‚ฌํ•˜๋Š” ๊ณผ์ •์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๊ทธ ๋น„๊ฒฐ์€ Cluster๋ผ๋Š” ์‚ผ๊ฐํ˜•๋“ค์˜ ๋ฌถ์Œ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค.


Cluster๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ Cluster๋“ค์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



24b0d121e09c28a8699fe8b115ef046543a3fa3a


๋˜ํ•œ ๋‹ค๋ฅธ ํฌ๊ธฐ์˜ Cluster๋ผ๋ฆฌ ์ „ํ™˜๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046544acf43b


๋”ฐ๋ผ์„œ ์ œ์ผ ์ž‘์€ ํฌ๊ธฐ์˜ ๊ธฐ๋ณธ Cluster (์‚ผ๊ฐํ˜•128๊ฐœ)๋ถ€ํ„ฐ ๋ฌถ์œผ๋ฉฐ ์ œ์ผ ํฐ ํฌ๊ธฐ์˜ Cluster ๊ทธ๋ฃน(๋ฌผ์ฒด ์ „์ฒด)๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c60f72c489b


๋งŒ๋“œ๋Š” ๊ณผ์ •์€ ์ผ๋‹จ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋‹ค ํ•ฉ์น˜๊ณ  ์ƒˆ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ๊ทธ๋ฃน๋“ค์˜ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๋ฉด ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.



24b0d121e09c28a8699fe8b115ef0468eba3ecbc


์ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ , ๋ Œ๋”๋ง์—์„œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•„์š”ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๊ทธ๋ฃน ํฌ๊ธฐ์˜ ๊ณ„์ธต๊นŒ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ์–ด๋‘ก๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด์œ ํ•˜๋Š” ํŠธ๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ์ŠคํŠธ๋ฆฌ๋ฐ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.



4. Cluster Culling

Occlusion Culling์€ ๊ฐ€๋ ค์ง€๋Š” ๋ฌผ์ฒด๋ฅผ ์ œ์™ธํ•ด์ค๋‹ˆ๋‹ค.

Cluster Culling์€ ๊ฐ€๋ ค์ง€๋Š” Cluster๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.


๊ธฐ์กด์˜ Base Pass์—์„œ๋Š” Depth Map์„ ๊ธฐ์ค€์œผ๋กœ ํ”ฝ์…€๋งˆ๋‹ค ๋งจ ์•ž์— ๋ณด์ด๋Š” ์‚ผ๊ฐํ˜•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

Cluster Culling์—์„œ๋„ Depth Map์„ ๊ธฐ์ค€์œผ๋กœ ๋งจ ์•ž์— ๋ณด์ด๋Š” Cluster๋ฅผ ์ฐพ์•„์ค๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ”ฝ์…€๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•„์„œ Cluster์˜ ํฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•ด์ง€๋ฉฐ, ๋”ฐ๋ผ์„œ Depth Map์„ ํ•ด์ƒ๋„๋ณ„๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046b6c679635


Depth Map(Z-Buffer)๋ฅผ ํ•ด์ƒ๋„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ค„์ด๋ฉฐ ๊ตฌ์„ฑํ•œ ๊ณ„์ธต์„ Hierarchical Z-Buffer(HZB)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๊ณ„์ธต์˜ ํ”ฝ์…€์—๋Š” ํ•˜์œ„ ๊ณ„์ธต ํ”ฝ์…€๋“ค์˜ ๊ฐ€์žฅ ๋จผ ๊นŠ์ด๋ฅผ ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด Cluster๋งˆ๋‹ค ํ•œ ๋ฒˆ์— ๋งจ ์•ž์— ๋ณด์ด๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ•์€ Cluster์˜ ํฌ๊ธฐ๋งŒํ•œ ํ”ฝ์…€ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๊ณ„์ธต์—์„œ ๊นŠ์ด๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋น„๊ตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋” ํฌ๋‹ค๋ฉด, ๊ทธ Cluster๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด(ex: ๋” ํฐ Cluster)์— ์˜ํ•ด ๊ฐ€๋ ค์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



5. Visibility Buffer

์ด์ œ ๋“œ๋””์–ด Vis-Buffer๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. Cluster Culling ๊ณผ์ •์—์„œ ์ถ”์ถœ๋œ ํ™”๋ฉด์— ๋ณด์ด๋Š” Cluster๋กœ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์ด ํ•˜๋‚˜ ๋“ค์–ด๊ฐ€๋ฉด์„œ ๋ณต์žกํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

HZB๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฌผ์ฒด์˜ Vertex๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „ ํ”„๋ ˆ์ž„์˜ HZB์„ ์ƒˆ ํ”„๋ ˆ์ž„์˜ HZB๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ ๊ทน์ ์œผ๋กœ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.


์šฐ์„  ์ด์ „ ํ”„๋ ˆ์ž„์˜ HZB๋กœ ๋จผ์ € Cluster Culling์„ ์ง„ํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

์ถ”์ถœ๋œ Visible Culster๋กœ Rasterization์„ ๊ฑฐ์ณ ์ž„์‹œ HZB๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

ํƒˆ๋ฝ๋œ Occluded Cluster๊ฐ€ Visible Cluster ์•ž์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ์ž„์‹œ HZB๋กœ Cluster Culling์„ ์ง„ํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ Cluster Culling์—์„œ๋„ ํƒˆ๋ฝ๋˜๋ฉด Visible Cluster ๋’ค์— ์žˆ๋Š” Cluster์ด๋ฏ€๋กœ ์™„์ „ํžˆ ์ œ์™ธํ•ด์ค๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ Cluster Culling์—์„œ ์„ ํƒ๋˜๋ฉด ์ž„์‹œ HZB๋ณด๋‹ค ์•ž์— ์žˆ๋Š” Cluster์ด๋ฏ€๋กœ Rasterization์„ ๊ฑฐ์ณ ์ตœ์ข… HZB์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046a7465edcd


์ตœ์ข… HZB๋ฅผ ๊ตฌํ•˜๋ฉด์„œ Visibility Buffer๋„ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์€ ๋ชจ๋‘ GPU์—์„œ ์ง„ํ–‰๋˜๋ฉฐ, ๊ธฐ์กด์— CPU์—์„œ Culling์„ ์ง„ํ–‰ํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ๋Š” ํƒ€์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.



6. Nanite Base Pass

Vis-Buffer์— ์‚ผ๊ฐํ˜• ID๊ฐ€ ์ด๋ฏธ ์žˆ์œผ๋‹ˆ ์ด์— ๋งž๋Š” ๋จธํ‹ฐ๋ฆฌ์–ผ ID๋ฅผ ์ฐพ์•„ G-Buffer๋ฅผ ๊ตฌ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

๋ฌผ์ฒด๋ฅผ ๋‹ค์‹œ ์ฐธ์กฐํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ์ ์ด ๊ธฐ์กด์˜ Base Pass์™€ ๋‹ค๋ฅด๋ฉฐ, Deferred Material Render์˜ ํŠน์ง•์ž…๋‹ˆ๋‹ค.



7. Virtual Shadow Map

์ด์ œ Lighting์„ ๋„˜์–ด์™”์Šต๋‹ˆ๋‹ค.

๊ด‘์›์—์„œ ๋‚˜์˜จ ๊ด‘์„ ์ด ๋”ฑ ํ•œ ๋ฒˆ ๋ถ€๋”ชํžˆ๋Š” ๋น›์„ ์ง์ ‘๊ด‘์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Shadow Map์€ ์ง์ ‘๊ด‘์„ ์—ฐ์‚ฐํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.


๊ด‘์› ์‹œ์ ์—์„œ ๋ชจ๋“  ๋ฐฉํ–ฅ๋งˆ๋‹ค ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ‘œ๋ฉด๊นŒ์ง€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๊ธฐ๋กํ•ด์ค๋‹ˆ๋‹ค.

๋ฌผ์ฒด์˜ ํ‘œ๋ฉด์— ํ…์Šค์ฒ˜ ํ˜•ํƒœ๋กœ ๊ธฐ๋กํ•˜๋ฉฐ, ๋ Œ๋”๋ง์‹œ์— ์‹ค์ œ ๊ด‘์›๊ณผ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๊ธฐ๋ก๋œ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๊ทธ๋ฆผ์ž ์ฒ˜๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.


๊ธฐ์กด์˜ Shadow Map์€ Texture์˜ ํ•ด์ƒ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋€Œ๋Š” Texture๋ผ์„œ ํ•ด์ƒ๋„๋ฅผ ๋งˆ์Œ๊ป ๋†’์ด๊ธฐ๋„ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Nanite์™€ ์–ด์šธ๋ฆฌ๊ฒŒ ๊ทธ๋ฆผ์ž ํ•ด์ƒ๋„๋„ ๊ฐ™์ด ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.


์นด๋ฉ”๋ผ์™€ ๊ฐ€๊นŒ์šด ์ง€์—ญ์— ๋†’์€ ํ•ด์ƒ๋„์˜ Shadow Map์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ด Virtual Shadow Map์ž…๋‹ˆ๋‹ค.


์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ณ  ์‹ถ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค.

24b0d121e09c28a8699fe8b115ef046f5a4f9c9cab

Virtual Shadow Map์€ ๋ฌผ์ฒด์˜ ํ‘œ๋ฉด์„ ์—ฌ๋Ÿฌ ๊ตฌ์—ญ์„ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ๊ธฐ์กด์— ๋‚˜๋ˆ ์ง„ ๊ตฌ์—ญ๋“ค์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046f5a4c9f9ba0


๊ทธ๋ฆฌ๊ณ  ์นด๋ฉ”๋ผ์™€์˜ ๊ฑฐ๋ฆฌ (Depth)์— ๋”ฐ๋ผ Shadow Map์˜ ํ•ด์ƒ๋„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ™์€ ํ•ด์ƒ๋„์ธ ๊ตฌ์—ญ๋ผ๋ฆฌ ๋ฌถ์–ด Page๋ผ๋Š” ๊ฒƒ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ Page๋“ค์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c64f0214d98


Page๋Š” ๋ฌผ์ฒด์˜ ์ „์ฒด ํ‘œ๋ฉด์˜ ๊ทนํžˆ ์ผ๋ถ€๋ถ„์ด๋ฉฐ, ๋จผ Page๋Š” ๋‚ฎ์€ ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ „์ฒด ์ง€ํ˜•์—์„œ Page๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ํ•ด์ƒ๋„๋ฅผ ๋‚˜ํƒ€๋ƒˆ์Šต๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046f5a4b9e96


๊ด‘์› ์‹œ์ ์—์„œ Shadow Map์— ๊ฑฐ๋ฆฌ๊ฐ’์„ ์ƒˆ๊ธธ ๋•Œ Page์˜ ํ•ด์ƒ๋„์— ๋”ฐ๋ผ Cluster์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•ด์ค๋‹ˆ๋‹ค.

Nanite๋•๋ถ„์— ๊ฐ€๋Šฅํ•˜๊ณ , Nanite์— ์œ ์šฉํ•œ ๊ธฐ์ˆ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์บ์‹ฑ๋„ ๊ณ ๋ ค๋˜์–ด ์ด์ „ ํ”„๋ ˆ์ž„๊ณผ ๋˜‘๊ฐ™์€ page๋Š” ์ƒˆ๋กœ ๊ทธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.



8. Lumen

๊ด‘์›์—์„œ ๋‚˜์™€ ๋ณต์žกํ•˜๊ฒŒ ๋‚œ๋ฐ˜์‚ฌ๋˜๋Š” ๋น›์„ ๊ฐ„์ ‘๊ด‘(Global Illumination)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ œ๋Œ€๋กœ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด Ray Tracing์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋ณดํ†ต์€ Light Map Baking์„ ํ†ตํ•ด ๊ด‘์›์„ ๊ณ ์ •ํ•˜๊ณ  Ray Tracing์„ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด ๊ทธ ํšจ๊ณผ๋ฅผ ์ƒˆ๊ฒจ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์›€์ง์ด๋Š” ๊ด‘์›์˜ ๊ฐ„์ ‘๊ด‘์„ ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์€ ์‹ค์‹œ๊ฐ„ Ray Tracing ๋ง๊ณ ๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค.


Lumen์€ ์—ฌ๋Ÿฌ Global Illumination ๊ธฐ๋Šฅ์„ ์ ์ ˆํžˆ ์„ž์–ด์„œ ์ ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c67f92b479d


๊ทธ๋ฆผ์—์„œ ๋นจ๊ฐ„์ƒ‰์€ Screen Trace, ์ดˆ๋ก์ƒ‰์€ Mesh Distance Field Trace, ํŒŒ๋ž€์ƒ‰์€ Global Distance Field Trace์ž…๋‹ˆ๋‹ค.


Screen Trace๋ž€, ํ™”๋ฉด์˜ Depth Buffer๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด ์†์—์„œ ๋‚œ๋ฐ˜์‚ฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์˜ค๋ชฉํ•œ ๋ถ€๋ถ„์ด ๋˜‘๋ฐ”๋กœ ๋ณด์ผ ๊ฒฝ์šฐ์— ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋ถ€ํ•˜๊ฐ€ ์ ์€ ์—ฐ์‚ฐ์ด๋ฏ€๋กœ ๋งจ ์ฒ˜์Œ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ Screen Trace๋กœ ์ถฉ๋ถ„ํ•œ ๊ด‘์„ ์ด ๋ชจ์ด์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์‹คํŒจ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋ฉฐ Meah Distanc Field Trace ๊ณผ์ •์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.


๋ฌผ์ฒด๋งˆ๋‹ค ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ‘œ๋ฉด์œผ๋กœ์˜ ๊ฑฐ๋ฆฌ๊ฐ’์„ ๊ฐ€์ง„ ํ…์Šค์ณ์ธ Signed Distance Field๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

Distance Field๋Š” ๋ฌผ์ฒด์— ๋น›์„ ์˜๋Š” ๊ด‘์› ์ž…์žฅ์—์„œ Depth Map์ •๋„๋กœ ์ดํ•ดํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด ๊ด‘์„ ์ด ๋ฌผ์ฒด์— ํŠ•๊ฒจ์„œ ๋‹ค๋ฅธ ํ‘œ๋ฉด์— ๋ถ€๋”ชํžˆ๋Š” ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.


๊ฐ ๋ฌผ์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” ์ง์œก๋ฉด์ฒด์˜ 6๊ฐœ์˜ ๋ฉด์— ํˆฌ์˜๋˜๋Š” ํ‘œ๋ฉด์˜ ๋ชจ์Šต์„ ๊ทธ๋ฆฐ Surface Cache (Card)๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c61f72b4f98


์ด ๋•Œ Nanite๋กœ ๋น ๋ฅด๊ฒŒ Surface Cache (card)๋ฅผ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜ํ•  ์ ์€ ๊ฑด๋ฌผ๊ฐ™์ด ๋‚ด๋ถ€๊ฐ€ ์žˆ๋Š” ๋ฌผ์ฒด์˜ ๊ฒฝ์šฐ, ๋ฒฝ๋ผ๋ฆฌ ๋‚˜๋ˆ ์„œ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.



Global Distance Field๋Š” ๊ณต๊ฐ„์˜ ๊ฐ ์ ์—์„œ ์ €ํ•ด์ƒ๋„๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋Œ€์ถฉ ํ†ต์งธ๋กœ ์—ฐ์‚ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— Mesh Ditance Field๋ณด๋‹ค ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.


์ด Distance Field์™€ Surface Cache๋ฅผ ํ†ตํ•ด ๋น›์„ ์—ฐ์‚ฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„์ด Cache๋ผ๊ณ  ์จ์ ธ์žˆ๋“ฏ์ด, Surface Cache๋Š” Lighting ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์ž๊ธฐ ์ž์‹ ์— ๋ฐ˜์˜ํ•˜์—ฌ ๋น›์ด ์—ฌ๋Ÿฌ๋ฒˆ ํŠ•๊ฒจ ํ‰ํ˜•์— ๋„๋‹ฌํ•œ ์ƒํƒœ๋ฅผ ์ฐพ์•„๊ฐ‘๋‹ˆ๋‹ค.ย 

๊ฐ„๋‹จํ•˜๊ฒŒ ๋‘ ๋ฌผ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ์น˜๋ฉด, ์ฒซ ๋ฒˆ์งธ ๋ฌผ์ฒด์˜ ํ‘œ๋ฉด(Card)์— ๋ฐ˜์‚ฌ๋˜์–ด ๋‘ ๋ฒˆ์งธ ๋ฌผ์ฒด์— ๋„๋‹ฌํ•œ(Distance Field) ๋น›์ด ๋‘ ๋ฒˆ์งธ ๋ฌผ์ฒด์˜ ํ‘œ๋ฉด(Card)์— ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


24b0d121e09c28a8699fe8b115ef046c62f22a4799


์ด๋ ‡๊ฒŒ Lumen์€ ์•„์ฃผ ํšจ์œจ์ ์ธ Ray Tracing์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.



9. Reference

https://youtu.be/QzI6xHsFGHA?si=qE_rf3rfRvCZZ-A2

https://youtu.be/eviSykqSUUw?si=h-DaUjHLgd0_ZPqt

https://youtu.be/laCeIFasZsg?si=4nZa3khQTFSdNWXZ

https://youtu.be/-M1b0gVdP4Y?si=YTAOyhqlB9aOGoOS

https://youtu.be/GWyhed94RxA?si=Ore1ZBjk7SwkF0Tj



๊ฐœ๋ฐœ ํ™”์ดํŒ…์ž…๋‹ˆ๋‹ค.