๐ Root Signature์ ํ๊ณ
๐ Table ์ฌ์ฉ ๋ฒ
ํ
์ด๋ธ์ ์ด์ฉํ๋ ๋ฒ์ ๋ง๋ก ํ์ด๋ณด๋ฉด,
1) ๊ธฐ์กด์ ์ฌ์ฉํ๋ Constant Buffer๋ฅผ ๊ฐ๋ฆฌํค๋ Desc Heap(CBV)์ ํ๋ ์ ์ธํ๋ค.
2) ๊ทธ๋ฆฌ๊ณ ์ด Desc Heap(CBV)๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋ณต์ฌํ Desc Heap(Shader Visible)์ ๋ง๋ค์ด ์ฃผ๋๋ฐ, ์ด Desc Heap(Shader Visible)์ ์ถฉ๋ถํ ํฐ ํฌ๊ธฐ๋ก ์ ์ธ์ ํด์ฃผ์ด์ผ ํ๋ค.
๊ทธ ์ด์ ๋, ์ ์์ ์์๋ณธ Command Queue์ ์คํ๊ณผ Device์ ์คํ์ ์๊ฐ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ๋ณ ํ ๊ฐ๋ค์ ๋ค ์ ์ฅ ํ ์ถฉ๋ถํ ํฌ๊ธฐ์ ๋ฐฐ์ด์ด ํ์ํ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ฌ๋ฌ๊ฐ์ ๋ฒํผ๋ฅผ ๋์ง ์๊ณ , ํ๋์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ์ด์ ๋ Command Queue์ Table์ ๋ฐ์ธ๋ฉํ๋ ๋ฉ์๋์ธ SetDescriptorHeaps ๋ฉ์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
3) ์ด๋ ๊ฒ SetDescriptorHeaps ๋ฉ์๋๋ฅผ ํตํ์ฌ CommandQueue๋ก Desc Heap์ด ๋์ด๊ฐ๊ณ , SetGraphicsRootDescriptorTable ๋ฉ์๋๋ฅผ ํตํ์ฌ ๋ช๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ์ฌ์ฉ ํ ๊ฒ์ธ์ง ์ ํด์ค๋ค. ์ด ๋์ ์ธํธ๋ก ๋ง์ฝ์ SetDescriptorHeaps๋ฅผ ์ํ ์ํ์์ SetGraphicsRootDescriptorTable์ ์ฌ์ฉ์ํ๋ฉด Crash๊ฐ ๋ฐ์ํ๋ค.
์ด๋ ๊ฒ ํด์ฃผ๋ ์ด์ ๋ DirectX์์๋ View๋ผ๋ ๊ฐ๋ ์ด ์กด์ฌํ๋ค. ์ด๊ฒ์ ํน์ ํ Resource ์๋ฃ๊ตฌ์กฐ์ ๋ํ์ฌ GPU์์ ์ด๋ป๊ฒ ํด์ ํ ๊ฒ์ธ์ง๋ฅผ ์ ํด์ฃผ๋ ๊ฒ์ผ๋ก ์ด View๊ฐ ๋ฌ๋ผ์ง๋ฉด Resource๋ฅผ ์ฝ๋ ๊ฒ ๋ํ ๋ฌ๋ผ์ง๋ค. ์ฆ Resource๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์๋ ๊ทธ๋ฆ์ด๊ณ , ์ด ๊ทธ๋ฆ์ด ๋ฌด์์ธ์ง ๋ผ๋ฒจ์ ํด์ฃผ๋ ๊ฒ์ด View๋ผ๊ณ ๋ณผ ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Resource์ ํด๋นํ๋ Constant Buffer๋ฅผ ํ๋ ๋๊ณ , View์ ํด๋นํ๋ Desc Heap(CBV)๋ฅผ ๋๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด View๋ก ๋ผ๋ฒจ์ ํ ๋ฐ์ดํฐ๋ฅผ Desc Heap(Shader Visible)์ ์ ์ฅํ๋ ๊ฒ์ด๋ค.