๊ธฐ์กด ๋งคํ ๋ฆฌ์ผ์ ๋จ์ :ย ๋์์ ์ฌ๋ฌ๊ฐ์ ์ค๋ธ์ ํธ์ ๊ฐ์ Material์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋๊ฒ์ด ๋งค์ฐ ๋ฌด์ญ๋ค. ์ฒซ์งธ๋ก ๊ฐ์ ๋งคํ ๋ฆฌ์ผ์ ๊ณต์ ํ๋ ๋ชจ๋ ์ค๋ธ์ ํธ์ ํ๋กํผํฐ๊ฐ ๋ณํ๊ฑฐ๋, ๋์งธ๋ก ์ ๋ํฐ์ ๋ด๋ถ ํ๋จํ์ ์๋ก์ด ๋งคํ ๋ฆฌ์ผ๋ก ์ธ์คํด์คํด์ ํด๋น ์ค๋ธ์ ํธ๋ง ๋ค๋ฅธ ๋ฉํ ๋ฆฌ์ผ์ ๊ฐ์ง๋๋ก ๋ง๋ค๊ฒ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ์ ๋งคํ ๋ฆฌ์ผ์ ํ๋กํผํฐ๋ง ๋ฐ๊พธ๊ณ ์ถ์๋ฐ ์ ๋ํฐ ๋ด๋ถ์์ ์ด๋์ ๋ํด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํญ๋ฐ์ํค๋ ๊ฒ์ด๋ค.
MPB๋ ๋จธํฐ๋ฆฌ์ผ ์์ฒด๋ฅผ ๋ฐ๊พธ์ง ์๊ณ , Renderer์๋ง ์ค๋ฒ๋ผ์ด๋ ๊ฐ์ ์น๋ ๋ฐฉ์์ ๋๋ค.
- ๋จธํฐ๋ฆฌ์ผ: โ๊ณตํต ๊ธฐ๋ณธ๊ฐ(๊ณต์ )โ
- MPB: โ์ด ๋ ๋๋ฌ๋ง ๋ค๋ฅธ ๊ฐ(๊ฐ๋ณ)โ
MPB๋ ๊ฐ์ ธ์ค๊ณ (Get) โ ์์ ํ๊ณ (Set) โ ๋ค์ ์ ์ฉ(SetPropertyBlock)์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค.
1 2 3 4 5 6 7 8 9 | ย ย ย ย Rendererย _renderer; ย ย ย ย MaterialPropertyBlockย _mpb; ย ย ย ย ย ย ย ย publicย voidย SetColor(Colorย c) ย ย ย ย { ย ย ย ย ย ย ย ย _renderer.GetPropertyBlock(_mpb);ย ย ย ย ย //ย ๊ธฐ์กดย ๋ธ๋กย ๊ฐย ๋ณด์กด ย ย ย ย ย ย ย ย _mpb.SetColor(BaseColorId,ย c);ย ย ย ย ย ย ย ย //ย ๊ฐย ๋ณ๊ฒฝ ย ย ย ย ย ย ย ย _renderer.SetPropertyBlock(_mpb);ย ย ย ย ย //ย ์ ์ฉ ย ย ย ย } | cs |
์ด๋ฐ ์ํฉ์์ sharedMaterials๋ฅผ ์ฌ์ฉํ์. sharedMaterials์ ๊ฒฝ์ฐ ์ธ์คํด์คํ๋ฅผ ์ํค์ง ์์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ํญ๋ฐ์ด ์ผ์ด๋์ง ์๋๋ค.
ํ๋ ์คํธ์ํ ๋ ํธํ๊ฒ ๋ค
๋จ, Shader Declaration -> Hybrid Per Instance๊ฐ ์ค์ ๋์์ ๊ฒฝ์ฐ์ ํํด์๋ง