Skip to content

Latest commit

ย 

History

History
78 lines (55 loc) ยท 6.67 KB

File metadata and controls

78 lines (55 loc) ยท 6.67 KB
icon 5
description URP์™€ Batch์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

URP์™€ Batch

Reference

{% embed url="https://www.youtube.com/watch?v=w14yjBlfNeQ&list=PLXR3KX9-W2adMq3234JkRKsbvZwSKkj3p&index=10" %} URP์™€ Batching {% endembed %}

URP(Universal Render Pipeline)

URP(Universal Render Pipeline)๋Š” Unity์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์ตœ์ ํ™”๋œ ๊ทธ๋ž˜ํ”ฝ ๋ Œ๋”๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. URP๋Š” ๋ชจ๋“ˆํ™”๋œ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋ฐ”์ผ ๋“ฑ ์„ฑ๋Šฅ์ด ์ œํ•œ๋œ ํ™˜๊ฒฝ์—์„œ๋„ ๋†’์€ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฐœ๋…

๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์€ 3D ์”ฌ์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ์‹œ์Šคํ…œ์ด๋‹ค. ๊ทธ ๊ณผ์ •์„ ๋งค์šฐ ๊ฐ„๋‹จํžˆ ์ถ•์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

  1. ์ž…๋ ฅ ์ฒ˜๋ฆฌ: ์”ฌ์˜ ๋ฐ์ดํ„ฐ(๋ชจ๋ธ, ํ…์Šค์ฒ˜ ๋“ฑ)๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋‹จ๊ณ„
  2. ์กฐ๋ช… ๊ณ„์‚ฐ: ์”ฌ์˜ ์กฐ๋ช… ํšจ๊ณผ๋ฅผ ์ ์šฉํ•˜๋Š” ๋‹จ๊ณ„
  3. ์…ฐ์ด๋” ์ ์šฉ: ๊ฐ ํ”ฝ์…€์— ์ƒ‰์ƒ์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ๊ณ„
  4. ์ถœ๋ ฅ: ์ตœ์ข… ์ด๋ฏธ์ง€๋กœ ๋ Œ๋”๋งํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋‹จ๊ณ„

Batch

๋ Œ๋”๋ง์—์„œ Batch๋Š” ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋“œ๋กœ์šฐ ์ฝœ์„ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ž˜ํ”ฝ์Šค ํ”„๋กœ์„ธ์‹ฑ์—์„œ๋Š” ๋“œ๋กœ์šฐ ์ฝœ(Draw Call)์ด๋ผ๋Š” ๊ฐœ๋…์ด ์ค‘์š”ํ•œ๋ฐ, ์ด๋Š” CPU๊ฐ€ GPU์— ํŠน์ •ํ•œ ๊ทธ๋ž˜ํ”ฝ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ๋ช…๋ น์ด๋‹ค. ๋ฐฐ์น˜๋Š” ์ด๋Ÿฌํ•œ ๋“œ๋กœ์šฐ ์ฝœ์„ ์ค„์—ฌ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์ค‘์š”ํ•œ ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

Batch์˜ ์˜๋ฏธ

๋ฐฐ์น˜๋ž€ ์œ ์‚ฌํ•œ ๋ Œ๋”๋ง ์ž‘์—…๋“ค์„ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ•œ ๋ฒˆ์˜ ๋“œ๋กœ์šฐ ์ฝœ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ™์€ ์…ฐ์ด๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๋Œ€์‹  ํ•œ ๋ฒˆ์— ๋ฌถ์–ด์„œ ๋ Œ๋”๋งํ•˜๋ฉด CPU์™€ GPU ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๋“œ๋กœ์šฐ ์ฝœ์„ ์ค„์ด๋Š” ์ด์œ ๋Š”, ๊ฐ ๋“œ๋กœ์šฐ ์ฝœ๋งˆ๋‹ค CPU๊ฐ€ GPU์— ๋ช…๋ น์„ ๋ณด๋‚ด๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿฐ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ๊ฒŒ์ž„์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ Œ๋”๋งํ•  ๋•Œ ํฐ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์น˜๋ฅผ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๋ฉด ํ”„๋ ˆ์ž„๋ฅ ์ด ๊ฐœ์„ ๋˜๊ณ  ๊ทธ๋ž˜ํ”ฝ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.

Batching์˜ ์ข…๋ฅ˜

Unity URP์—์„œ๋Š” ์ฃผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฐ์นญ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

  1. Static Batching
    • ์›€์ง์ด์ง€ ์•Š๋Š” ์ •์  ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์ •์  ๋ฐฐ์นญ์€ ์›€์ง์ด์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ฏธ๋ฆฌ ๋ฌถ์–ด์„œ, ํ•œ ๋ฒˆ์— ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฑด๋ฌผ์ด๋‚˜ ์ง€ํ˜•์ฒ˜๋Ÿผ ์›€์ง์ด์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ฐฐ์น˜ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•จ
    • ์ด ๋ฐฉ์‹์€ ๋ฏธ๋ฆฌ ๋ฐฐ์น˜๋œ ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ํ•œ๊บผ๋ฒˆ์— ๋ Œ๋”๋งํ•จ
    • Static Batching์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„ํ…์Šค๋ฅผ ๋ณต์‚ฌํ•˜๊ธฐ์— ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์— ์ฃผ์˜
      • Unity์—์„œ Static Batching์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ํฐ ๋ฉ”์‰ฌ๋กœ ๊ฒฐํ•ฉ๋จ. ์ด ๊ณผ์ •์—์„œ ๋ฒ„ํ…์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณต์‚ฌ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒ
      • ๋ฒ„ํ…์Šค ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š”, ๊ฐ ์˜ค๋ธŒ์ ํŠธ์˜ ์›”๋“œ ์ขŒํ‘œ(World Space)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋™์ผํ•œ ๋ฉ”์‰ฌ๋ฅผ ๋‹ค๋ฅธ ์œ„์น˜์— ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€ํ™˜๋œ ๋ฒ„ํ…์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ. ์ด ๋ณต์‚ฌ๋œ ๋ฒ„ํ…์Šค๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ, ์‹คํ–‰ ์ค‘์—๋Š” ์ถ”๊ฐ€์ ์ธ ๊ณ„์‚ฐ ์—†์ด ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋ง๋จ
  2. Dynamic Batching
    • ์›€์ง์ด๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์— ์ ์šฉ๋˜๋Š” ๋ฐฐ์นญ ๋ฐฉ์‹
    • ์œ ์‚ฌํ•œ Mesh์™€ Material์„ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์€ ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ํ•œ ๋ฒˆ์— ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
    • ํ•˜์ง€๋งŒ, ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋„ˆ๋ฌด ํฌ๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ๊ฒฝ์šฐ์—๋Š” ๋™์  ๋ฐฐ์นญ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ. ๋ฐฐ์น˜๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ํฌ๊ธฐ๋‚˜ ๋ณต์žก๋„์—๋Š” ์ œํ•œ์ด ์žˆ์Œ
      • If enabled, the render pipeline will batch drawcalls with few triangles together by copying their vertex buffers into a shared buffer on a per-frame basis.
      • ์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ์ •์ ์ด 225๊ฐœ ์ด์ƒ์ด๋ฉด ์ ์šฉ ๋ถˆ๊ฐ€
        • 450๊ฐœ๋ผ๊ณ  ํ•ด์„œ Patchํ˜•์‹์œผ๋กœ 2๋ถ„ํ•  ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์•„์˜ˆ ์ ์šฉ์ด ์•ˆ ๋จ
  3. GPU Instancing (GPU ์ธ์Šคํ„ด์‹ฑ)
    • ๋™์ผํ•œ ๋ฉ”์‰ฌ์™€ ๋จธํ‹ฐ๋ฆฌ์–ผ์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ GPU๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฌถ์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•
    • ์ธ์Šคํ„ด์‹ฑ์€ ๊ฐ™์€ ๋ชจ๋ธ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ Œ๋”๋งํ•  ๋•Œ ๋งค์šฐ ํšจ์œจ์ . ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚˜๋ฌด, ํ’€, ์  ์บ๋ฆญํ„ฐ ๋“ฑ ๊ฐ™์€ ๋ฉ”์‰ฌ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋จ
    • CPU์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋“œ๋กœ์šฐ ์ฝœ์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ , ํ•œ ๋ฒˆ์˜ ๋ช…๋ น์œผ๋กœ GPU์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ฒ˜๋ฆฌ
    • ์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” 256๊ฐœ ๋ฏธ๋งŒ์˜ vertex์—๋Š” ํšจ์œจ์ด ์•ˆ ์ข‹์Œ
  4. SRP Batching
    • Material ์•„๋‹Œ Shader ๋‹จ์œ„๋กœ Batchํ•˜๊ธฐ์— ๊ฐ™์€ ์‰์ด๋”๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ•œ ๋ฒˆ์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Œ
    • URP์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ
    • URP์˜ ํ•ต์‹ฌ์œผ๋กœ Metal, OpenGL ES 3.1์ด์ƒ, DirectX 11์ด์ƒ์—์„œ ์ง€์›
      • ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” OpenGL๋ฒ„์ „์ด ๊ธฐ๊ธฐ๋ณ„๋กœ ์ƒ์ดํ•ด์„œ ์ฃผ์˜ ํ•„์š”

Batching์˜ ์ค‘์š”์„ฑ

๋ฐฐ์นญ์€ ์‹ค์‹œ๊ฐ„ ๋ Œ๋”๋ง์—์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ๊ฐ ๋“œ๋กœ์šฐ ์ฝœ์€ CPU์™€ GPU ์‚ฌ์ด์—์„œ ๋งŽ์€ ์ž์›์„ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋Ÿฌํ•œ ๋“œ๋กœ์šฐ ์ฝœ์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ์ด๋‹ค. ํŠนํžˆ, ๊ฒŒ์ž„์ด๋‚˜ 3D ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•œ ํ”„๋ ˆ์ž„๋‹น ์—ฌ๋Ÿฌ ์ˆ˜๋ฐฑ ๊ฐœ ์ด์ƒ์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ทธ๋ ค์•ผ ํ•  ๋•Œ๋Š” ๋ฐฐ์น˜๊ฐ€ ๋” ์ค‘์š”ํ•  ๊ฒƒ์ด๋‹ค.

์•„์‰ฝ๊ฒŒ๋„, SRP Batching๊ณผ GPU Instancing์€ ๊ณตํ†ต์ ์œผ๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” Skinned Mesh์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋‹ค.

Act like an AI์—์„œ๋Š” ์บ๋ฆญํ„ฐ์— Skinned Mesh๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์— SRP Batching๊ณผ GPU Instancing์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

SRP Batching, GPU Instancing ์˜ต์…˜์„ ์ผœ๋„ ์•ˆ ํ‚จ ๊ฒƒ๊ณผ ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์—†์Œ

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Animation Instancing, Mesh Animator๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ ํ€„๋ฆฌํ‹ฐ ์ €ํ•˜, ๋นŒ๋“œ ์šฉ๋Ÿ‰ ์ถ”๊ฐ€ ๋“ฑ์˜ ๋‹จ์ ์ด ์žˆ์–ด ์‚ฌ์šฉ์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

Act like an AI์—์„œ URP๋ฅผ ์„ ํƒํ•œ ์ด์œ ๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ๋ Œ๋”๋ง ํŒจ์Šค ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Scriptable Render Pipeline์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ๋‹ค์Œ ์žฅ์—์„œ SRP์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.