Learn to Write Unity Compute Shaders
๋๊ฐ ํฌ์คํธ ํ๋ก์ธ์ฑ์ด ์ด๋ป๊ณ , ์ด๋ป๊ฒ ํ๋๊ทธ๋จผํธ ์์ด๋๊ฐ ์๋ํ๊ณ ์ด๋ฐ๊ฑฐ ์ค๋ช ํด์ค
์ด๊ฒ ๊ธฐ์ด ๋ผ๊ธฐ์ ์ข์์
์์ด๋ ์ด๋ก ์์ฒด๋ Book of Shader์ธ๊ฐ? ๊ทธ๊ฑฐ๋ก ๋. ์คํ์์ค์ธ๋ฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๊ทผ๋ฐ ์์ด๋๋ผ๊ณ ๋งํ๋๊ฑด ์ด๋ป๊ฒ ์ธ ๊ฒ์ธ๊ฐ...๋ผ๋ ๊ฑด ์ผ์ข ์ ์ํธ ์์ญ์ด๋ผ์
๊ทธ๊ฑฐ๋ ๊ทผ๋ฐ ๊ฑ ์ฐ์ต์ด๋ ์ํธ์ชฝ์์ ์ด๋ป๊ฒ ์์ฉํ๋๊ฑฐ ๋ฐฐ์์ผํ๋ค ์ ๋?
๋๋ถ๋ถ ์ด๋ก ์์์ ์ด๋ป๊ฒ ์ ๊ทํํ๊ณ , ํฝ์ ๋จ์๋ก ์ด๋ป๊ฒ ์ ์ฉํ๊ณ , ๋จ์ ํฝ์ ๋ก ์ด๋ป๊ฒ ์ ์ฉํ๋๋์ธ๋ฐ
Book of Shader๊ฐ GLSL๋ก ์์ด๋ ๋ง๋๋๊ฑฐ ๋ณด์ฌ์ค.
(๋์ ๊ฒฝ์ฐ์ GLSL->HLSL ๋ก ๋ฐฐ์. ๋ฐ๋๋ก HLSL ๋จผ์ ๋ฐฐ์๋ ๋๋๋ฐ, ๊ธฐ์ด ์์ ์์ ๋๋ถ๋ถ GLSL ๋ก ์์ํจ)
๊ทผ๋ฐ ์๋ค์ํผ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ด๋๋ฅผ ์ดํดํ๋ค๋๊ฑด ๋ฐฉ์ ์์ด ๋ง๋ค์ด๋ด๋ ๊ทธ๋ํ๋ฅผ ์ ์์์ผํ๋ค๋๊ฑด๋ฐ
์ฐ์ ์ ์ผ๋ก ๋๋ถ๋ถ์ ์ฑ ๋ค์ ์ด๋ ๊ฒ ๊ฐ๋ฅด์นจ.
์๋ฐ์์ผ๋ก ๋ณด๊ฐ๋ฑ ์ด์ฉํด์ ์ ์๋๋ฒ ๋ฐฐ์ฐ๊ณ
๊ฑฐ๋ฆฌ ํ๋๋ก ์ด๋ป๊ฒ 2D์์ 3D๋ฅผ ๋ํ๋ด๋๊ฐ ์๋ ค์ฃผ๋๋ฐ(๋ฑ๊ณ ์ ์ด๋ ๋น์ทํ ๊ฐ๋
์)
์ด๋ ๊ฒ ๊ฑฐ๋ฆฌํ๋ ์์ฉํด์ ๊ฐ์ ๊ฐ์ผ๋ก 3D ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์.
๊ทธ๋์ 2D๋ก 3D ํํํ๋๊ฑด๋ฐ(๋ฑ๊ณ ์ ์๊ฐํ๋ฉด๋ ๋ฏ)
์ด์ ์ด ๊ฑฐ๋ฆฌํ๋๋ฅผ ์ด์ฉํ๋ฉด ๋๊ฐ ์ํ๋ ๋ชจ์์ ๋ํ๋ผ ์ ์๊ฒ ์ง?
๊ทธ๋ผ ์ด์ ์ด ๋ชจ์์ ์ด๋ป๊ฒ ์์ง์ผ ๊ฑฐ๋?
๋ผ๋ ๋ฌธ์ ๋ฅผ ์ขํ๊ณ ์์ฒด๋ฅผ ์ด๋ํ๋๊ฑฐ๋ก ๋ฐฐ์
๊ทธ๋ฆฌ๊ณ ์ด์ ์ด ์ขํ๊ณ๋ฅผ ์์ฉํด์ ์ค์ผ์ผ์ ํค์ฐ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ฑฐ๋ ์ด๋ฐ๊ฑฐ ๋ฐฐ์
๊ทธ๋ฌ๋๊น ์ผ๋ฐ์ ์ธ ๊ธฐ์ด ๊ฐ์์์๋
์์ด๋ ์ ๋ง๋ค๊ธฐ(ํ๋๊ทธ๋จผํธ ์์ด๋)
์์ด๋์์ ๋ฌธ์ ๋ง๋ค๊ธฐ(ํ๋๊ทธ๋จผํธ ์์ด๋)
๋ฌธ์ ์์ง์ฌ์ ํจ๊ณผ ๋ง๋ค๊ธฐ(๋ฒํ ์ค ์์ด๋+ํ๋๊ทธ๋จผํธ ์์ด๋)
๋ชจ๋ ๋ด์ฉ์ ์์ง์ฌ์ ์ผ์ข ์ 'ํจํด' ๋ง๋ค์ด๋ด๊ธฐ(๋ฒํ ์ค+ํ๋๊ทธ๋จผํธ ์์ด๋ ๋ณต์กํ ํจํด์ ์์ฉํ ๊ฒฝ์ฐ ์ง์ค๋ฉํธ๋ฆฌ ์์ด๋ ์์ฉ)
์ด๋ ๊ฒ ํฌ๊ฒ 4ํํธ๋ก ๋๋ ์ ธ ์๋จ ๋ง์ด์ง.
(์คํ์ ํจํด GLSL)
์ ๋ฌธ์ ๋ง๋ค๊ธฐ๋ถํฐ๊ฐ ์ผ๋จ ์ฌ์ค์ ๊ทธ๋ํ ๋ง๋๋ ๊ฑฐ๋ผ ์ธ์ธ๊ฒ๋ ๋ง๊ณ
๊ทธ ๋ฌธ์์ ์์ง์ฌ์ ํจ๊ณผ ๋ง๋๋๊ฒ๋ ์ด๋ ค์ด๋ฐ
๊ทธ ์ผ๋ฐ์ ์ผ๋ก ์์ฃผ ์ฐ์ด๋ ํจํด๋ค์ ์ ๋ํฐ ์์ด๋ ๊ทธ๋ํ์ ๋ด์ฅ๋์๊ธฐ๋๋ฌธ์
(๋น์ฅ ์ง๊ฒน๋๋ก ์ฐ๋ Tiling and offset์ด ๊ทธ ํ์ผ๋ง๊ณผ ์คํ์ ๊ด๋ จ๋๊ฑฐ์)
๋ญ ์ฐ๋ฆฌ ๋ ๋ฒจ์์ ์ฐ๋ ๋ ๋ฒจ์ ์ฃผ๋ก offset์ด ํ์ผ๋ง์์ ๋ฌธ์์ ์ด๋๊ณผ ๊ด๋ จ๋์๋๋ฐ,
์๊ฐ์ ๋ฐ๋ผ์ ์คํ์ ์ ๊ฐ ๋ํด์ฃผ๋๊ฑธ๋ก ํํ์ ๊ดํ์ด๋ ๋น ํํ๊ฐ์๊ฑฐ ๋ฃ๊ฑฐ๋ ์ด๋ฐ ์์ค์.
๋ฌผ๋ก ๋ ์์ธํ ์๋ ค๋ฉด UV๋ ์์์ผํ๊ณ ํ๋๋ฐ, UV๋ ์ฐ๋ฆฌ ๋ ๋ฒจ์์๋ ๊ทธ๋ฅ ๋ฃ์ ํ ์ค์ณ ํ๋ฉด ํํ ๋ฐฉ๋ฒ ์ ๋๋ก ์๊ฐํ๋ฉด๋๊ณ .
๊ฐ๋ น ํ์ผ๋ง์์ ์คํ์ ๊ฐ 0.5 ๋ฃ์ด์ฃผ๋ฉด ํ์ฌ ํ ์ค์ณ์ ์ ๋ฐ๋งํผ ์ด๋ํ๋ค ์ ๋.
๊ทธ๊ฑธ๋ก ๋ง๋ค๋ฉด๋จ. ๊ฑฐ๊ธฐ์ ์๋ค? ํ๋ฉด HLSL ๋ก ์๊ธฐ๊ฐ ์ง์ ์์ด๋ ๊ทธ๋ํ ์ถ๊ฐํด์ ๋ ธ๋ ๋ง๋ค๋ฉด๋๋๋ฐ
์ด์ง๊ฐํ๋ฉด ๊ทธ๋ด ์ผ ์์๊ฑฐ์.
ํน์งฑ์ ๋ค๋ ๋ง์ ์คํฐ ์ ๋ํฐ์์ ๋ฒํ ์ค ์์ด๋ ํ๋๊ทธ๋จผํธ ์์ด๋ ๋๋๋๊ฒ๋ ์ฌ์ค ์ด๋๋ฌธ
์ฌ์ค ๋ญ ์ ๋๋ก ์๋ ค๋ฉด ๋ฒํ ์ค ์์ด๋-> ์ง์ค๋ฉํธ๋ฆฌ ์์ด๋-> ํ๋๊ทธ๋จผํธ ์์ด๋ ์ด๋ ๊ฒ ์๊ณ ์์ด์ผํ๋๋ฐ
๋ฒํ ์ค ์์ด๋->3D๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ 2D๋ก ๋ณํ
์ง์ค๋ฉํธ๋ฆฌ ์์ด๋->ํ๋๊ทธ๋จผํธ ์ ๋ฒํ ์ค ์์ด๋ ๋ณํ ๊ณผ์ ์์ ํ๋ฆฌ๋ฏธํฐ๋ธ๋ฅผ ์์ฑ ๋ณํ
(๋ญ BSP๊ณ ๋ญ๊ณ ์ผ๊ฐํ์ด ์ด์ฉ๊ณ ํ๋๊ฒ ์ฌ๊ธฐ ํํธ)
ํ๋๊ทธ๋จผํธ ์์ด๋->์ต์ข ์ ์ผ๋ก ํ๋ฉด์ ํ์๋๋ ํฝ์ ์ต์ข ์์
๋๋ถ๋ถ ๊ธฐ์ด ๊ฐ์๋ ์ ์์ค์ธ๊ฑธ๋ก ์๊ณ ์์.
๋ ๋ค์ด๊ฐ๋ฉด OPENGL์์ ๋ฐฐ์๋ผ ์ด๋ฐ๊ฒ๋ ์๊ณ , ํค ๋งคํ TBN ํ๋ ฌ์ด๋ฐ๊ฒ๋ ์์์ผํ๋๋ฐ,
๊ทธ๊ฑฐ๋ ๋ญ ๊ทธ๋ํฝ์ค ์์ง๋์ด๊ฐ ์์์ผํ ๋ ๋ฒจ์ด๊ณ . ์ฐ๋ฆฌ์ชฝ์์๋ ๊ทธ์ ๋๊น์ง ์๋.
์ฉ์ ์๋ฆฌ ๋ชฐ๋ผ๋ ์ฉ์ ์๋งํ์์ ใ ใ
๋ณ๋ชจ์ ๊ทธ๋ํ ๊ทธ๋ฆฌ๋๊ฑฐ ์ฒ์๋ถํฐ ๊ณ์ฐ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ทธ๋ฅ ์๊ธฐํด์ ๋๋ ค ๋ฐ๋๊ฒ๋ ์์์.
๊ณ ๋ฑํ๊ต ์ํ๋ฐฐ์ธ๋, ๋ฏธ๋ถ ์๋ฆฌ ๋ค ์ดํดํด์ ๋ฐฐ์ฐ๊ธฐ๋ณด๋ค ์ฐฌ์ฐฌํ ๋ฏธ๋ถ ์ฐ๋ ๋ฐฉ๋ฒ๋ถํฐ ์ฐ๋ค๊ฐ ์๋ฆฌ ๊นจ์น๋ฏ์ด ใ ใ
๊ทธ๋ ๋ค๋ณด๋ ์ฌ์ค ์ธ๋๋ ๋ฒจ์์ ์์ด๋ ๋ฐฐ์ด๋ค๋ผ๊ธฐ๋ณด๋ค๋
์์ด๋๋ฅผ ๋ง์ด ์จ๋ด์ ๋ง์ ๋ฌธ์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์๋ค...์ ๋๊ฐ ์ฌ์ค ์ฐ๋ฆฌ ์ธ๋์์ ์ฐ๋ ๊ฐ๋ ์๋๊น ์ถ๋ค.
๊ทธ๋ฐ์๋ฏธ์์ ์์ด๋ ์๋ฆฌ๋ฅผ ๋ฐฐ์ด๋ค๊ธฐ๋ณด๋ค๋ ์ต๋ํ ๋ง์ ๋ฌธ์๊ณผ ํจํด ๋ง๋๋ ๊ฑฐ ์๊ธฐํด๋ผ...
์ ๋๊ฐ ์๋ง ์ค ์ฌ์ฉ์์์ ๋ ๋ง๋ค๊ณ ๋ณด์. ์ค์ ๋ก ์์ด๋ ๋ฐฐ์ด๋ค๋ ํด์ธ ์ฌ๋๋ค ๋ณด๋ฉด ๊ทธ๋ฅ ๊ทธ๋ฐ๊ฑฐ ์์น๋ ๊ฐ ์๊ธฐํ๊ณ ์๋๋ผ.
์ ์ฑ๊ป ๋ต๋ณํด์ค์ ๊ณ ๋ง์ต๋๋ค
ํผ์คํธํ๋ก์ธ์ฑ > ํฌ์คํธํ๋ก์ธ์ฑ HSLS > HLSL ํน์งฑ์ ๋ค๋ ๋ง์ ์คํฐ ์ ๋ํฐ > ์ ๋ํฐ
์คํ๊ฐ ์ข ์์๋ค ใ ใ