Deferred Rendering์ด๋ž€?

Deferred Rendering(์ง€์—ฐ ๋ Œ๋”๋ง)์€ 3D ๊ทธ๋ž˜ํ”ฝ์Šค์—์„œ ์กฐ๋ช… ๊ณ„์‚ฐ์„ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋ Œ๋”๋ง ์ดํ›„๋กœ โ€œ์ง€์—ฐ(defer)โ€์‹œํ‚ค๋Š” ๋ Œ๋”๋ง ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ Forward Rendering๊ณผ ๋‹ฌ๋ฆฌ, ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •(Geometry)๊ณผ ๋น›์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ •(Lighting)์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํŠนํžˆ ๋ณต์žกํ•œ ์กฐ๋ช…์ด ๋งŽ์€ ์”ฌ์—์„œ ํšจ์œจ์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค

๊ธฐ๋ณธ ์›๋ฆฌ

  • Deferred Rendering์€ ํ™”๋ฉด ํ•ด์ƒ๋„์™€ ๋™์ผํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Render Target์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌถ์Œ์„ **G-Buffer(Geometry Buffer)**๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.
  • ํ™”๋ฉด์˜ ๊ฐ ํ”ฝ์…€๋‹จ์œ„๋กœ ํ™”๋ฉด ๊ณต๊ฐ„์— ์ €์žฅ๋˜๋Š” G-Buffer๋Š” ์ผ๋ฐ˜์œผ๋กœ ์•„๋ž˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    • BaseColor=Albedo (ํ‘œ๋ฉด์˜ ์ƒ‰์ƒ ์ •๋ณด)
    • Roughness (ํ‘œ๋ฉด์˜ ๊ฑฐ์น ๊ธฐ)
    • Surface Normal (ํ‘œ๋ฉด์˜ ๋ฐฉํ–ฅ ๋ฒกํ„ฐ)
    • Metalic
    • Specular
    • Depth (Z-buffer๋Š” ๋ณ„๋„ ์ €์žฅ)
  • ย Deferred Rendering์€ Rasterization ๊ธฐ๋ฐ˜์ด๋ฉฐ, Ray Tracing๊ณผ๋Š” ๋ณ„๊ฐœ์˜ ํŒŒ์ดํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค.

Tip

Deferred์˜ ์ตœ๋Œ€ ์•ฝ์ ์€ ์œ ๋ฆฌ, ๋ฌผ ๊ฐ™์€ย ๋ฐ˜ํˆฌ๋ช…(Transparency)ย ๋ฌผ์ฒด ์ฒ˜๋ฆฌ์ž…๋‹ˆ๋‹ค. Deferred์—์„œ ํˆฌ๋ช… ์˜ค๋ธŒ์ ํŠธ๋Š” ์‚ฌ์‹ค์ƒ Forward ํŒจ์Šค๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.


Deferred Rendering์˜ ์žฅ์ 

ํšจ์œจ์ ์ธ ๊ตฌ์กฐ

Forward Rendering์—์„œ๋Š”

์˜ค๋ธŒ์ ํŠธ ์ˆ˜ ร— ๋ผ์ดํŠธ ์ˆ˜ ๋งŒํผ ์…ฐ์ด๋”ฉ ์—ฐ์‚ฐ์ด ๋ฐœ์ƒ

Deferred Rendering์—์„œ๋Š”

ํ”ฝ์…€ ์ˆ˜ ร— ๋ผ์ดํŠธ ์ˆ˜

  • ์˜ค๋ธŒ์ ํŠธ ๋ณต์žก๋„์™€ Lighting ๊ณ„์‚ฐ์ด ๋ถ„๋ฆฌ๋˜์–ด(Decoupling) ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋ฉฐ, ์”ฌ์—์„œ ๋” ๋‚˜์€ ์„ฑ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ค‘ ์กฐ๋ช… ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ผ์ดํŠธ๊ฐ€ ์žˆ๋Š” ์”ฌ์—์„œ๋„ ๊ฐ ๋ผ์ดํŠธ๋งˆ๋‹ค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • G-Buffer์— ์ €์žฅ๋œ ์ •๋ณด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ผ์ดํŠธ ๊ฐœ์ˆ˜์— ๋น„๋ก€ํ•˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ์ ์Šต๋‹ˆ๋‹ค.

์„ ํƒ์  ๋ฐ์ดํ„ฐ ํ™œ์šฉ

  • ์ผ๋ถ€ ๋ Œ๋”๋ง ๊ธฐ๋ฒ•์€ G-Buffer์˜ ์ผ๋ถ€ ์ฑ„๋„๋งŒ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด Shadow๋‚˜ Fog ๊ณ„์‚ฐ์˜ ๊ฒฝ์šฐ Depth Buffer(Z-Buffer)์—๋งŒ ์ ‘๊ทผํ•˜๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

Deferred Rendering์˜ ๋‹จ์ 

๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰

  • G-Buffer๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณ ํ•ด์ƒ๋„ ํ…์Šค์ฒ˜์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ GBuffer๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฝ๊ณ  ์“ฐ๋Š” ๊ณผ์ •์—์„œ ์ƒ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด์ƒ๋„๊ฐ€ ๋†’์„์ˆ˜๋ก ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๊ณผ ๋Œ€์—ญํญ ์š”๊ตฌ๋Ÿ‰์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
  • ๋ชจ๋ฐ”์ผ์ด๋‚˜ VR์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์ด ์ œํ•œ์ ์ธ ํ”Œ๋žซํผ์—์„œ๋Š” ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค
ํ•ญ๋ชฉDeferred Rendering์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐForward Rendering์ด ์ ํ•ฉํ•œ ๊ฒฝ์šฐ
๐ŸŽฎ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจAAA๊ธ‰ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์†Œํ˜• ํ”„๋กœ์ ํŠธ, ์ตœ์ ํ™” ์ค‘์‹ฌ
๐Ÿ’ก ๋™์  ๋ผ์ดํŠธ ์ˆ˜์ˆ˜์‹ญ~์ˆ˜๋ฐฑ ๊ฐœ ํ™•์žฅ๊ฐ€๋Šฅ๋ผ์ดํŠธ ์ˆ˜๊ฐ€ ๋งค์šฐ ์ œํ•œ์ 
๐ŸŽจ ๋จธํ‹ฐ๋ฆฌ์–ผ ๋‹ค์–‘์„ฑ๋‹ค์–‘ํ•œ PBR ๋จธํ‹ฐ๋ฆฌ์–ผ ์‚ฌ์šฉ๋จธํ‹ฐ๋ฆฌ์–ผ ์ข…๋ฅ˜ ๋งŽ์„์ˆ˜๋ก ์„ฑ๋Šฅ ์ €ํ•˜
๐ŸŒ ๊ธ€๋กœ๋ฒŒ ์ผ๋ฃจ๋ฏธ๋„ค์ด์…˜Lumen ์‚ฌ์šฉ์Šคํƒœํ‹ฑ ๋ผ์ดํŠธ๋งต ๋˜๋Š” ์ œํ•œ์  ์‚ฌ์šฉ
๐Ÿ“ฑ ํ”Œ๋žซํผPC / ์ฝ˜์†” (PS5, Xbox)๋ชจ๋ฐ”์ผ
๐Ÿฅฝ VR ์ง€์›์ผ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ ๊ธฐ๋ฐ˜VR (๊ฐ€์žฅ ๊น”๋”ํ•œ ์™ธ๊ณฝ์„ )
๐Ÿ” ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑTAA / TSR ์‚ฌ์šฉMSAA ํ•„์ˆ˜
๐Ÿง  ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญG-Buffer ์‚ฌ์šฉ์œผ๋กœย ์‚ฌ์šฉ๋Ÿ‰ ๋†’์Œ์ƒ๋Œ€์ ์œผ๋กœย ์‚ฌ์šฉ๋Ÿ‰ ๋‚ฎ์Œ

Anti-Aliasing ๋ฌธ์ œ

  • MSAA(Multi-Sample Anti-Aliasing)๋ฅผ G-Buffer์— ์ ์šฉํ•˜๋ฉด ๊ฐ ์ƒ˜ํ”Œ๋งˆ๋‹ค G-Buffer ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ด์„œ, ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ๋Ÿ‰์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
  • ์ด ๋•Œ๋ฌธ์— Unreal Engine์˜ ๊ธฐ๋ณธ Deferred Renderer๋Š” MSAA๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  Temporal AA(TAA) ๋˜๋Š” TSR์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Classic Deferred Shading์˜ ๋ Œ๋”๋ง ํŒจ์Šค

์ „ํ†ต์ ์ธ Deferred Shading์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ํŒจ์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

1. Geometry Pass (G-Buffer ์ƒ์„ฑ)

  • ์”ฌ์˜ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜์—ฌ Material๊ณผ Geometry ์†์„ฑ์„ย Pixel Shader๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผย G-buffer์˜ ๊ฐ ์ฑ„๋„์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค
  • ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์กฐ๋ช… ๊ณ„์‚ฐ ์—†์ด ํ‘œ๋ฉด์˜ ๋ฌผ๋ฆฌ์  ์†์„ฑ๋งŒ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค

2. Lighting Pass (์ตœ์ข… ์…ฐ์ด๋”ฉ)

  • G-Buffer์— ์ €์žฅ๋œ ์ •๋ณด + ์”ฌ์˜ ์กฐ๋ช… ์ •๋ณด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ตœ์ข… ์ƒ‰์ƒ์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค
  • ๊ฐ ๋ผ์ดํŠธ๋Š” ํ™”๋ฉด ๊ณต๊ฐ„์—์„œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํ”ฝ์…€๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค
  • ๋ผ์ดํŠธ์˜ ๋ณต์žก๋„๊ฐ€ Material์˜ ๋ณต์žก๋„์™€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, ๋ณต์žกํ•œ Material๊ณผ ๋งŽ์€ ์ˆ˜์˜ ๋ผ์ดํŠธ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ด๋„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ ๋•๋ถ„์— Deferred Rendering์€ AAA๊ธ‰ ๊ฒŒ์ž„๊ณผ ๊ฐ™์ด ๋†’์€ ๋น„์ฃผ์–ผ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์š”๊ตฌ๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

UE5 Deferred Rendering Pass

UE5์˜ Deferred Renderer๋Š” ์ „ํ†ต์ ์ธ 2-pass ๊ตฌ์กฐ๋ณด๋‹ค ๋” ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

  • Depth Pre-pass
  • Base Pass (G-buffer ์ƒ์„ฑ)
  • Shadow Pass
  • Lighting Pass
  • Post-processing

์ฐธ๊ณ  ์ž๋ฃŒ