์ต์ ํ ์ ๊ฒฝ์จ์ ๋ง๋ค์ด ๋ณด๋ ค๊ณ ๊ณต๋ถํ๋ฉด์ ํ๋๋ฐ ์ด๊ฒ ๋๋๊ฑด์ง ์๋๋๊ฑด์ง ํผ๋์ค๋ฌ์์ ์ง๋ฌธ์ขํ ๊ฒ
Batches๊ฐ 1๋จธํ
๋ฆฌ์ผ๋น 1์ฉ ์ฆ๊ฐํ๋๊น, ๋ฉ์ฌ๋ผ๋ฆฌ ๋จธํ
๋ฆฌ์ผ์ ๊ณต์ ํ๋ฉด ์ค์ด๋ค ์ค ์์๊ฑฐ๋ ?
์ฌ๋ฌ๊ฐ ํ๋ธ ๋๊ณ ๋จธํ ๋ฆฌ์ผ ๊ณต์ ํ๋ฉด ๋ฐฐ์น๊ฐ 1์ด ๋ฐ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์ค๋ธ์ ํธ ๊บผ์ ์ฒดํฌํด๋ณด๋ 2๊ฐ์ฉ Batches๊ฐ ๋ฎ์์ง
๋ด๊ฐ ์ถ์ ํ ๋๋ ๊ทธ๋ฆผ์1๊ฐ + ๋จธํ
๋ฆฌ์ผ1๊ฐ๋ก 2๊ฐ๊ฐ ๋๊ฑฐ ๊ฐ์.
๊ทธ๋ผ ๋จธํ ๋ฆฌ์ผ์ด ๊ณต์ ๋ ์ํ๋๊น ๊ทธ๋ฆผ์ 1๊ฐ ์น๋๋ผ๋ 1์ฉ ๋ฎ์์ ธ์ผ ๋๋๋ฐ 2์ฉ Batches๊ฐ ๋์ด๋๋๊ฑด ์๊ทธ๋ฐ๊ฑฐ์ง?
๋จธํ ๋ฆฌ์ผ ๊ณต์ ํ๋ ๊ฐ๋ ์์ฒด๋ ์๋๋ฐ, ์ค์ ๋ก ๋ด ์์์ด๋ ๋ค๋ฅด๋๊น ํท๊ฐ๋ฆฌ๋ค
3D๋ ์ ๋ชจ๋ฅด์ง๋ง... UI์์ ์ ๋ํฐ์์ ๊ทธ๋ ค์ง๋ ์์์ ๋ฐ๋ผ Batches๊ฐ ๋ฐ๋์ด. ๋จธํ ๋ฆฌ์ผ(2D์์ผ๋ ์ด ๊ฒฝ์ด ์ํ๋ผ์ค) ํ๋๋น 1์ฉ ๋จน๋๋ค๊ธฐ ๋ณด๋จ, ๋จธํ ๋ฆฌ์ผ์ด ์ค์์นญ ๋ ๋๋ง๋ค Batches๊ฐ ์ฌ๋ผ๊ฐ๋๋ผ. ๋ค์์๋ถํฐ ์์ผ๋ก ๊ทธ๋ ค์ค๋ ์ค์ ๋ค๋ฅธ ๋งํ ๋ฆฌ์ผ๊ณผ ๊ฒน์น๋ ๊ฑด ์๋ ์ ํ์ธํด๋ด. ํ๋ ์ ๋๋ฒ๊ฑฐ์์ ๊ทธ๋ฆฌ๋ ์์์ ๋ฐ๋ผ ๊ฐ๋ณ Batches๋ ํ์ธํ ์ ์์ ๊ฑธ? ๋ ๊ฒฝ์ฐ๊ฐ ๊ทธ๋ ๋ค๊ณ ์ฅ๋ด์ ๋ชปํ๊ฒ ๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ๋ ์๋ค๋ ๊ฑธ ์ฐธ๊ณ ๋ง ํด๋ฌ.
ui๋ ํ๋ ์ ๋จ์๋ก ์ํ๋ผ์ค ์ํฅ์ผ๋ก batches๊ฐ ๋ฐ๋๋๋ณด๋ค
์ฐธ๊ณ ๋ก ์คํ๋ผ์ดํธ๋ ๊ฐ๋ ์ ๋์ผํ์ด. 3D...๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋น์ทํ์ง ์์ผ๋ ค๋?
static batching ์ฒดํฌํด
URP ์์ ๊ทธ๋ฆผ์๋ฅผ ํ๋ฒ์ ๊ทธ๋ ค์ค์ ๋ ์ฝ๊ฒ ๋ณผ์์๋๋ฐ ํน์ Standard ๋ฉด ๊ทธ๋ฆผ์ ๊ฐ๋ณ์ ์ผ๋ก ๊ทธ๋ ค์ค์ ๋ฐฐ์น๊ฐ ๋๋์ด๋๋๊น ์ฒ์์ ๊ณต๋ถ์ฉ์ผ๋ก ๋ฐฐ์ธ๋ ๋ผ์ดํธ์์ ์๋์ฐ ๋๊ณ ๋ ์์ ๋ฒ์ ์ด๋ฉด ๋ฉ์ฌ๋๋๋ฌ์์ ์บ์คํธ์๋์ฐ ๋๊ณ ํ์ธํด๋ด์ผ๋จ. ๊ทธ๋ฆฌ๊ณ URP ์์ SRP ๋ฐฐ์นญ์ด ์ ์ฉ๋ ์์ด๋๋ฉด ๊ฐ์ ๋งคํฐ๋ฆฌ์ผ๋ผ๋ฆฌ๋ ๋์ ์ธ ์ค๋ธ์ ํธ์ฌ๋ ๋๋ง๋๋ก ์๋์ด๋๋๋ฐ ( ์์ธ์ ์ผ๋ก ์ฝ๋๋ก ๋งคํฐ๋ฆฌ์ผ ์ธ์คํด์ค๋ก ์์ ํ๋ฉด ์๋จ) ์์ standard ์์๋ ๋ค์ด๋๋ฏน ๋ฐฐ์นญ์ด ์ ์ฉ์๋๋ฉด ๋์ด๋ฌ๋๊ฑธ๋ก ๊ธฐ์ตํจ. ๊ทธ๋์ ํน์ URP ๋ฉด SRP ์ผ์ ธ์๋์ง ํ์ธํ๊ณ Standard๋ฉด dynamic ๋ฐฐ์นญ์ด ์ผ์ ธ์๋์ง ํ์ธํด๋ด
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ง๊ธ urp ์จ์ ๋ค์ด๋๋ฏน ๋ฐฐ์นญ, srp ๋ฐฐ์นญ ๋ค ์ฐ๊ณ ์๊ธดํฉ๋๋ค. ์ข ๋ ์ฐพ์๋ณด๋ ๋งค์ฌ10๊ฐ๊ฐ ๋จธํ ๋ฆฌ์ผ 1๊ฐ ๊ณต์ ํด๋ ๋ฐฐ์น๋ 10๊ฐ๊ฐ ๋จ๋๊ฒ ์ ์์ด๊ธด ํ๊ฐ๋ด์. ๋์ ๋จธํ ๋ฆฌ์ผ ๊ณต์ ํด์ set pass call์ด 1๊ฐ๋ก ๋จ๋์ง ํ์ธํด๋ด์ผ๊ฒ ์ด์
SRP ์ฌ์ฉํ์๋ฉด ๊ตณ์ด ๋ค์ด๋๋ฏน ๋ฐฐ์นญ ์์ฐ์ ๋๋จ SRP ๋ฐฐ์นญ์ด๋๋ฉด GPU instancing ์ด ๋๋๊ฑฐ๋ผ ๋ค์ด๋๋ฏนํ๊ฒ ์ค๋ธ์ ํธ ์์ฑํด๋ ๋ฐฐ์น๊ฐ ๊ฐ์ด์กํ๊ฒ๋จ ๊ทธ๋ฆฌ๊ณ ๋ค์ด๋๋ฏน ๋ฐฐ์นญ๋๋ ์กฐ๊ฑด๋ ๊น๋ค๋ก์์ ์์ํธํ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด๋จ ์ ๋ ์ฒ์์ ๋ค์ด๋๋ฏน๋ฐฐ์นญ์ป๋ค๊ฐ ์ง๊ธ์ ๊ตฌ๋ ค์ ๊บผ๋ฒ๋ ธ์ SetPassCall ํ๋๋ง ๋๋์ง ํ์ธ๋ง ์ํ์๋ฉด๋ ๊ฑฐ๊ฐ๊ณ STAT ์ฐฝ์ ๋ฐฐ์น ์์ saved by batching ์ด๋ผ๊ณ ์๋๋ฐ ์ด๊ฑฐ ํ์ธํ๋ฉด ์ ๋๋ก ๋ฐฐ์นญ์ด ์ค์ด๋ค์๋์ง ๊ฐ๋ตํ๊ฒ ํ์ธํ ์์๊ณ ๋์ฑ๋ ์์ธํ๊ฒ ํ์ธํ๋ ค๋ฉด ํ๋ ์ ๋๋ฒ๊ฑฐ ์ด์ด์ SRP ๋จน์๋์ง ํ์ธํ์๋ฉด๋จ ๊ทธ๋ฆฌ๊ณ ํน์๋ ํผ๋์ค๋ฌ์ธ์๋ ์๋๊ฒ ์ ๊ธฐ์ต์์ผ๋ก๋ 2019 ๋ฒ์ ์์๋ saved by batching ์ด ์๋์์ผ๋ฉด - ๋ก ํ์๋์๋๋ฐ
2020๋ฒ์ ์์๋ ์์๋ก ๋์์ ๋นํฉํด์ ์๋ฃ ๋ง์ด ์ฐพ์๋ดค๋ ๊ธฐ์ต์ด๋จ ๊ฒฐ๋ก ์ ๊ฐ๊ณ ํ์๋ง ๋ค๋ฅด๊ฒ ํด์ฃผ๋๊ฑฐ์ธ๋ฏ ์ ์ด์ saved by batching ์ธ๋ฐ ์์๋ก ํ์ํด์ฃผ๋๊ฑฐ ์์ฒด๊ฐ ์ด์ํ๊ธฐ๋ ํ๊ณ
ใ ใ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ฐฐ์นญ ๊ด๋ จ๋๊ฑด ์ผ๋จ ๋ค ์ผ๋ดค๋๋ฐ ์ค๋ณต๋๋๊ฒ๋ ์๋๋ณด๋ค์. ๋ง์ง๋ง์ผ๋ก ๊ถ๊ธํ๊ฒ set pass call์ด ํ์ฌ ํ๋ฉด ๊ธฐ์ค์ธ๊ฑฐ์ฃ ?? ํ๋ฉด ์์ง์ผ๋๋ง๋ค ๋์๋ค ์ค์๋คํด์์!
๊ทธ๋ฅ ์ฌ์์ ์ด๊ฒ์ ๊ฒ ์คํํ๋ฉด์ ํ๋ฉด ๊ฐฑ์ ์ด ์๋ ๋๊ฐ ์์ด์ ๊ฒ์ ์์ํ์๊ณ ๊ป๋ค ํค๋ฉด์ ํ์ธํด์ผ ์ ํํจ