Mesh Distance Field๋Š” ์Šคํƒœํ‹ฑ ๋ฉ”์‹œ์˜ Signed Distance Field ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ณต์žกํ•œ ๋ฉ”์‹œ์˜ ํ‘œ๋ฉด ์ •๋ณด๋ฅผ ๋‹จ์ˆœํ™”๋œ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ, ๋™์  ์กฐ๋ช… ํ™˜๊ฒฝ์—์„œ ํšจ์œจ์ ์ธ ๊ทธ๋ฆผ์ž ๊ณ„์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

Distance Field Shadow๋Š” ์›๊ฑฐ๋ฆฌ ์˜์—ญ์—์„œ Cascaded Shadow Map๋ณด๋‹ค ํ•ด์ƒ๋„ ์œ ์ง€์— ์œ ๋ฆฌํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ์˜คํ”ˆ์›”๋“œ ํ™˜๊ฒฝ์—์„œ Shadow Map์˜ ํ•ด์ƒ๋„ ์˜์กด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„ค์ •

ํ”„๋กœ์ ํŠธ ์„ค์ •

โš™๏ธ Project Setting - Generate Mesh Distance Field โœ…

์ด ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  Static Mesh์— ๋Œ€ํ•ด Distance Field ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” ์˜ต์…˜

โš™๏ธ Project Setting - Rendering - Lighting

ํŠน์ • ์ƒํ™ฉ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ์˜ต์…˜๋“ค์„ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • 8bit Mesh Distance Field: 16๋น„ํŠธ ๋ฐ์ดํ„ฐ๋ฅผ 8๋น„ํŠธ๋กœ ๋ณ€ํ™˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋Ÿ‰์„ ๋Œ€ํญ ๊ฐ์†Œ์‹œ์ผœ์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํฌ๊ฑฐ๋‚˜ ์–‡์€ ํ˜•ํƒœ์˜ Mesh์—๋Š” ๊ทธ๋ฆผ์ž ํ’ˆ์งˆ ์ €ํ•˜๋‚˜ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์œ ์˜ํ•ด ์ฃผ์„ธ์š”.
  • Compress Mesh Distance Field: ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜์ง€๋งŒ ํ€„๋ฆฌํ‹ฐ๋Š” ์†Œ์‹ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ, Level Streaming์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ ˆ๋ฒจ ๋กœ๋”ฉ ์‹œ ์••์ถ• ํ•ด์ œ ๊ณผ์ •์—์„œ ์•ฝ๊ฐ„์˜ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Distance Field์˜ ์ž‘๋™ ์›๋ฆฌ

Mesh Distance Field๋Š”ย ๋ฉ”์‹œ ํ‘œ๋ฉด์œผ๋กœ๋ถ€ํ„ฐ์˜ โ€œ๊ฑฐ๋ฆฌโ€๋ฅผ 3์ฐจ์› ๋ณผ๋ฅจ ํ…์Šค์ฒ˜์— ์ €์žฅํ•˜๋Š” Signed Distance Field ๊ตฌ์กฐ์„ ํ™œ์šฉํ•ด, ๋ณต์žกํ•œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”๋œ ๋ณผ๋ฅจ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ณต์…€๋งˆ๋‹ค ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํ‘œ๋ฉด๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํšจ์œจ์ ์ธ ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ๊ณผ ๊ทธ๋ฆผ์ž ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊น…

  • ๋ทฐํฌํŠธ ์ƒ๋‹จ์˜ โ€˜Showโ€™ ๋ฉ”๋‰ด์—์„œ โ€˜Visualizeโ€™ > โ€˜Mesh Distance Fieldsโ€™ ๋˜๋Š” โ€˜Global Distance Fieldโ€™๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • ์ด์ƒ์ ์ธ ์ƒํƒœ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”์‹œ๊ฐ€ ํฐ์ƒ‰์ด ์•„๋‹Œ ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • ํฐ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ์˜์—ญ์€ Distance Field ๊ณ„์‚ฐ์„ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ, ํ•ด๋‹น ๋ฉ”์‹œ์˜ Distance Field ํ•ด์ƒ๋„๋ฅผ ์กฐ์ •ํ•˜๊ฑฐ๋‚˜ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.ng

๋™์  ์กฐ๋ช…์—์„œ์˜ ํ™œ์šฉ

Distance Field Shadows์˜ ์›๋ฆฌ

Movable(๋™์ ) ๊ด‘์›์—์„œ Distance Field Shadows(DFS)๋Š” ๊ฐ Static Mesh์˜ Distance Field ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜์—ญ ๊ทธ๋ฆผ์ž(Area Shadow)๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ย ๊ณต์‹ ๋ฌธ์„œ์— ์ž์„ธํžˆ ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ์ž๋ฅผ ๋ฐ›์„ ์ง€์ ์—์„œ ๊ด‘์› ๋ฐฉํ–ฅ์œผ๋กœ Signed Distance Field(SDF)๋ฅผ ๋”ฐ๋ผ ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฐจํ๋œ ์˜ค๋ธŒ์ ํŠธ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฝ˜ ํŠธ๋ ˆ์ด์‹ฑ(Cone Tracing)์„ ๊ทผ์‚ฌํ•˜๋ฏ€๋กœ, ์ „ํ†ต์ ์ธ ๋ ˆ์ด ํŠธ๋ ˆ์ด์‹ฑ๊ณผ ๋น„์Šทํ•œ ๋น„์šฉ์œผ๋กœ ๋ถ€๋“œ๋Ÿฌ์šด ์˜์—ญ ๊ทธ๋ฆผ์ž๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ์ž ๋ถ€๋“œ๋Ÿฌ์›€ ์กฐ์ ˆ

๊ด‘์› ํƒ€์ž…์— ๋”ฐ๋ผ ๊ทธ๋ฆผ์ž์˜ ๋ฐ˜๊ทธ๋Š˜(Penumbra) ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • Point Light์™€ Spot Light: โ€˜Source Radiusโ€™ ๊ฐ’์„ ์กฐ์ •ํ•˜์—ฌ ๊ด‘์›์˜ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ํด์ˆ˜๋ก ๊ทธ๋ฆผ์ž๊ฐ€ ๋” ๋ถ€๋“œ๋Ÿฌ์›Œ์ง‘๋‹ˆ๋‹ค
  • Directional Light: โ€˜Light Source Angleโ€™ ๊ฐ’์œผ๋กœ ํƒœ์–‘์˜ ๊ฐ๋„ ํฌ๊ธฐ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ํƒœ์–‘์˜ ๊ฐ๋„๋Š” ์•ฝ 0.5๋„์ด์ง€๋งŒ, ๊ฒŒ์ž„์—์„œ๋Š” ํ‘œํ˜„ ๋ชฉ์ ์— ๋”ฐ๋ผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์›๊ฑฐ๋ฆฌ ๊ทธ๋ฆผ์ž ์„ค์ •

์˜คํ”ˆ ์›”๋“œ์™€ ๊ฐ™์€ ๋„“์€ ํ™˜๊ฒฝ์—์„œ ์›๊ฑฐ๋ฆฌ ๊ทธ๋ฆผ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ Distance Field Shadow๊ฐ€ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Directional Light์˜ โ€˜Cascaded Shadow Mapโ€™ ์„น์…˜์—์„œ โ€˜Dynamic Shadow Distance Movable Lightโ€™ ๊ฐ’์„ ๋Š˜๋ฆฌ๋ฉด ๊ธฐ์กด Shadow Map์˜ ์ ์šฉ ๋ฒ”์œ„๊ฐ€ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค
  • ํ•˜์ง€๋งŒ ์ด ๊ฐ’์„ ๋ฌดํ•œ์ • ๋Š˜๋ฆฌ๋ฉด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ ์ ˆํ•œ ๊ฑฐ๋ฆฌ ์ดํ›„๋ถ€ํ„ฐ๋Š” โ€˜Distance Field Shadowsโ€™ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค
  • Movableย ๋ผ์ดํŠธ๋ฅผ ์„ ํƒํ•œ ํ›„ Details ํŒจ๋„์˜ โ€˜Lightโ€™ ์„น์…˜์—์„œ โ€˜Distance Field Shadowsโ€™ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์›๊ฑฐ๋ฆฌ ์˜์—ญ์—์„œ Distance Field ๊ธฐ๋ฐ˜ ๊ทธ๋ฆผ์ž๊ฐ€ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค

Distance Field Texture ์„ค์ •

๊ฐ Static Mesh๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ Distance Field ํ…์Šค์ฒ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์‹œ์˜ ๋ณต์žก๋„์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ•ด์ƒ๋„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

  • UE4 ๊ธฐ์ค€ istance Field ํ•ด์ƒ๋„๋Š” ์ตœ๋Œ€ 128 x 128 x 128๊นŒ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” 8MB์ž…๋‹ˆ๋‹ค
  • Static Mesh ์—๋””ํ„ฐ์—์„œ โ€˜Distance Field Resolution Scaleโ€™ ๊ฐ’์„ ์กฐ์ •ํ•˜์—ฌ ํ•ด์ƒ๋„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ๋‹จ์ˆœํ•œ ํ˜•ํƒœ์˜ ๋ฉ”์‹œ๋Š” ๋‚ฎ์€ ํ•ด์ƒ๋„๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์–‡์€ ํ˜•ํƒœ์˜ ๋ฉ”์‹œ๋Š” ๋†’์€ ํ•ด์ƒ๋„๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  • ํ•ด์ƒ๋„๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ๋ฉ”์‹œ์˜ Distance Field ์ƒ์„ฑ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค

์ตœ์ ํ™” ๊ฐ€์ด๋“œ

Distance Field Shadows๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ๋“ค์ž…๋‹ˆ๋‹ค.

๊ด‘์› ์„ค์ • ์ตœ์ ํ™”

  • Light Source Angle ์กฐ์ ˆ: Directional Light์˜ Light Source Angle ๊ฐ’์ด ํด์ˆ˜๋ก ๋” ๋„“์€ ๋ฐ˜๊ทธ๋Š˜์„ ์ƒ์„ฑํ•˜์ง€๋งŒ, ๊ทธ๋งŒํผ ๊ณ„์‚ฐํ•ด์•ผ ํ•  ์˜ค๋ธŒ์ ํŠธ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ๋น„์šฉ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • Distance Field Shadow Distance ์ œํ•œ: ์ด ๊ฐ’์ด ๋„ˆ๋ฌด ํฌ๋ฉด ์ปฌ๋ง ํšจ์œจ์ด ๋–จ์–ด์ ธ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋งŽ์€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์นด๋ฉ”๋ผ ๋ทฐ ๊ฑฐ๋ฆฌ์— ๋งž์ถฐ ์ ์ ˆํžˆ ์ œํ•œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค

๋ฉ”์‹œ ์„ค์ • ์ตœ์ ํ™”

  • Two-Sided Distance Field ์‚ฌ์šฉ ์ฃผ์˜: Static Mesh์˜ Build Settings์—์„œ โ€˜Two-Sided Distance Field Generationโ€™ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•˜๋ฉด ์–‡์€ ๋ฉ”์‹œ(์˜ˆ: ์žŽ, ์ฒœ)์— ๋Œ€ํ•ด ์–‘๋ฉด SDF๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    ์ด ์˜ต์…˜์€ ๊ณ„์‚ฐ ๋น„์šฉ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉฐ, ๋ถˆํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • Distance Field ํ•ด์ƒ๋„ ์ตœ์ ํ™”: ๋ชจ๋“  ๋ฉ”์‹œ์— ๋†’์€ ํ•ด์ƒ๋„๋ฅผ ์ ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ์นด๋ฉ”๋ผ์— ๊ฐ€๊น๊ฑฐ๋‚˜ ๊ทธ๋ฆผ์ž ํ’ˆ์งˆ์ด ์ค‘์š”ํ•œ ๋ฉ”์‹œ์—๋งŒ ๋†’์€ ํ•ด์ƒ๋„๋ฅผ ํ• ๋‹นํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋‚ฎ์€ ํ•ด์ƒ๋„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์™€ ์„ฑ๋Šฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ฐธ๊ณ ์ž๋ฃŒ