| icon | 5 |
|---|---|
| description | URP์ Batch์ ๋ํด์ ๋ค๋ฃน๋๋ค. |
{% embed url="https://www.youtube.com/watch?v=w14yjBlfNeQ&list=PLXR3KX9-W2adMq3234JkRKsbvZwSKkj3p&index=10" %} URP์ Batching {% endembed %}
URP(Universal Render Pipeline)๋ Unity์์ ์ ๊ณตํ๋ ๊ฒฝ๋ํ๋ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ผ๋ก, ๋ค์ํ ํ๋ซํผ์์ ์ต์ ํ๋ ๊ทธ๋ํฝ ๋ ๋๋ง์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. URP๋ ๋ชจ๋ํ๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์์ด ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ฐ์ผ ๋ฑ ์ฑ๋ฅ์ด ์ ํ๋ ํ๊ฒฝ์์๋ ๋์ ์ฑ๋ฅ์ ์ ์งํ ์ ์๊ฒ ํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
๋ ๋๋ง ํ์ดํ๋ผ์ธ์ 3D ์ฌ์ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ์ ์ํ๋ ์์คํ ์ด๋ค. ๊ทธ ๊ณผ์ ์ ๋งค์ฐ ๊ฐ๋จํ ์ถ์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค
- ์ ๋ ฅ ์ฒ๋ฆฌ: ์ฌ์ ๋ฐ์ดํฐ(๋ชจ๋ธ, ํ ์ค์ฒ ๋ฑ)๋ฅผ ๋ถ๋ฌ์ค๋ ๋จ๊ณ
- ์กฐ๋ช ๊ณ์ฐ: ์ฌ์ ์กฐ๋ช ํจ๊ณผ๋ฅผ ์ ์ฉํ๋ ๋จ๊ณ
- ์ ฐ์ด๋ ์ ์ฉ: ๊ฐ ํฝ์ ์ ์์์ ๊ฒฐ์ ํ๋ ๊ณ์ฐ์ ์ํํ๋ ๋จ๊ณ
- ์ถ๋ ฅ: ์ต์ข ์ด๋ฏธ์ง๋ก ๋ ๋๋งํ์ฌ ํ๋ฉด์ ํ์ํ๋ ๋จ๊ณ
๋ ๋๋ง์์ Batch๋ ํ ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ๋๋ก์ฐ ์ฝ์ ๋ฌถ์ด์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ๊ทธ๋ํฝ์ค ํ๋ก์ธ์ฑ์์๋ ๋๋ก์ฐ ์ฝ(Draw Call)์ด๋ผ๋ ๊ฐ๋ ์ด ์ค์ํ๋ฐ, ์ด๋ CPU๊ฐ GPU์ ํน์ ํ ๊ทธ๋ํฝ ์ค๋ธ์ ํธ๋ฅผ ๋ ๋๋งํ๋ผ๊ณ ์์ฒญํ๋ ๋ช ๋ น์ด๋ค. ๋ฐฐ์น๋ ์ด๋ฌํ ๋๋ก์ฐ ์ฝ์ ์ค์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๋ ์ค์ํ ๊ธฐ๋ฒ ์ค ํ๋์ด๋ค.
๋ฐฐ์น๋ ์ ์ฌํ ๋ ๋๋ง ์์ ๋ค์ ๊ทธ๋ฃนํํ์ฌ ํ ๋ฒ์ ๋๋ก์ฐ ์ฝ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ค๋ธ์ ํธ๊ฐ ์๋ค๋ฉด, ์ด๋ค์ ๊ฐ๋ณ์ ์ผ๋ก ๋ ๋๋งํ๋ ๋์ ํ ๋ฒ์ ๋ฌถ์ด์ ๋ ๋๋งํ๋ฉด CPU์ GPU ๊ฐ์ ํต์ ๋น์ฉ์ ์ค์ผ ์ ์๋ค.
๋๋ก์ฐ ์ฝ์ ์ค์ด๋ ์ด์ ๋, ๊ฐ ๋๋ก์ฐ ์ฝ๋ง๋ค CPU๊ฐ GPU์ ๋ช ๋ น์ ๋ณด๋ด๋ ์ค๋ฒํค๋๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ์ค๋ฒํค๋๋ ๊ฒ์์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์๊ฐ์ผ๋ก ๋ ๋๋งํ ๋ ํฐ ์ฑ๋ฅ ์ ํ๋ฅผ ์ผ์ผํฌ ์ ์๋ค. ๋ฐฐ์น๋ฅผ ํตํด ์ด๋ฌํ ์ค๋ฒํค๋๋ฅผ ์ค์ด๋ฉด ํ๋ ์๋ฅ ์ด ๊ฐ์ ๋๊ณ ๊ทธ๋ํฝ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
Unity URP์์๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฐฐ์นญ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
- Static Batching
- ์์ง์ด์ง ์๋ ์ ์ ์ค๋ธ์ ํธ๋ค์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ
- ์ ์ ๋ฐฐ์นญ์ ์์ง์ด์ง ์๋ ์ค๋ธ์ ํธ๋ค์ ๋ฏธ๋ฆฌ ๋ฌถ์ด์, ํ ๋ฒ์ ๋ ๋๋งํ ์ ์๋๋ก ํจ. ์๋ฅผ ๋ค์ด, ๊ฑด๋ฌผ์ด๋ ์งํ์ฒ๋ผ ์์ง์ด์ง ์๋ ์ค๋ธ์ ํธ๋ค์ ๋ฐฐ์นํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํจ
- ์ด ๋ฐฉ์์ ๋ฏธ๋ฆฌ ๋ฐฐ์น๋ ์ค๋ธ์ ํธ๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ํ์ํ ๋ ๋น ๋ฅด๊ฒ ํ๊บผ๋ฒ์ ๋ ๋๋งํจ
- Static Batching์ ์ฌ์ฉํ๋ฉด ๋ฒํ
์ค๋ฅผ ๋ณต์ฌํ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋์ด๋๋ ๊ฒ์ ์ฃผ์
- Unity์์ Static Batching์ ์ฌ์ฉํ๋ฉด, ๊ฐ ์ค๋ธ์ ํธ๋ ๊ฐ๋ณ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์๊ณ ํ๋์ ํฐ ๋ฉ์ฌ๋ก ๊ฒฐํฉ๋จ. ์ด ๊ณผ์ ์์ ๋ฒํ ์ค ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ณต์ฌ๋๋ ํ์์ด ๋ฐ์
- ๋ฒํ ์ค ๋ณต์ฌ๊ฐ ํ์ํ ์ด์ ๋, ๊ฐ ์ค๋ธ์ ํธ์ ์๋ ์ขํ(World Space)๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ผํ ๋ฉ์ฌ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ ๋๋งํ๊ธฐ ์ํด ๋ณํ๋ ๋ฒํ ์ค ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํด์ผ ํ๊ธฐ ๋๋ฌธ. ์ด ๋ณต์ฌ๋ ๋ฒํ ์ค๋ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ์คํ ์ค์๋ ์ถ๊ฐ์ ์ธ ๊ณ์ฐ ์์ด ๋น ๋ฅด๊ฒ ๋ ๋๋ง๋จ
- 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๋ถํ ํ๋ ๊ฒ์ด ์๋๋ผ ์์ ์ ์ฉ์ด ์ ๋จ
- GPU Instancing (GPU ์ธ์คํด์ฑ)
- ๋์ผํ ๋ฉ์ฌ์ ๋จธํฐ๋ฆฌ์ผ์ ์ฌ์ฉํ๋ ์ค๋ธ์ ํธ๋ฅผ GPU๊ฐ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฌถ์ด์ฃผ๋ ๋ฐฉ๋ฒ
- ์ธ์คํด์ฑ์ ๊ฐ์ ๋ชจ๋ธ์ ์ฌ๋ฌ ๋ฒ ๋ ๋๋งํ ๋ ๋งค์ฐ ํจ์จ์ . ์๋ฅผ ๋ค์ด, ๋๋ฌด, ํ, ์ ์บ๋ฆญํฐ ๋ฑ ๊ฐ์ ๋ฉ์ฌ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ ๋ ์ฌ์ฉ๋จ
- CPU์์ ์ฌ๋ฌ ๋ฒ ๋๋ก์ฐ ์ฝ์ ๋ณด๋ด์ง ์๊ณ , ํ ๋ฒ์ ๋ช ๋ น์ผ๋ก GPU์์ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์ฒ๋ฆฌ
- ์ ๋ํฐ์์๋ 256๊ฐ ๋ฏธ๋ง์ vertex์๋ ํจ์จ์ด ์ ์ข์
- SRP Batching
- Material ์๋ Shader ๋จ์๋ก Batchํ๊ธฐ์ ๊ฐ์ ์์ด๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํ ๋ฒ์ ๊ทธ๋ฆด ์ ์์
- URP์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์
- URP์ ํต์ฌ์ผ๋ก Metal, OpenGL ES 3.1์ด์, DirectX 11์ด์์์ ์ง์
- ์๋๋ก์ด๋๋ OpenGL๋ฒ์ ์ด ๊ธฐ๊ธฐ๋ณ๋ก ์์ดํด์ ์ฃผ์ ํ์
๋ฐฐ์นญ์ ์ค์๊ฐ ๋ ๋๋ง์์ ์ฑ๋ฅ ์ต์ ํ์ ์ค์ํ ์ญํ ์ ํ๋ค. ๊ฐ ๋๋ก์ฐ ์ฝ์ 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์ ๋ํด์ ์์๋ณด์.
