Shader
GPU(Graphics Processing Unit)์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ทธ๋ํฝ ๋ ๋๋ง ๊ณผ์ ์์ ๋ค์ํ ์๊ฐ์ ํจ๊ณผ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ.
์ผ๋ฐ์ ์ผ๋ก 3D ๊ทธ๋ํฝ์ค API(ex: OpenGL, DirectX, Metal)์์ ์ฌ์ฉ๋๋ฉฐ, GPU๋ฅผ ํ์ฉํ์ฌ ๊ณ ์์ผ๋ก ๊ทธ๋ํฝ ์ฐ์ฐ์ ์ํ.
Shader์ ์ญํ
1. 3D ๋ชจ๋ธ์ ๋ณํ
๊ฐ์ฒด๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฌ์ง ์ํด ์์น, ํฌ๊ธฐ, ํ์ ๋ฑ์ ์กฐ์ .
๋ชจ๋ธ ์ขํ์์ ํ๋ฉด ์ขํ๋ก ๋ณํ.
2. ์กฐ๋ช ๋ฐ ์์ ๊ณ์ฐ
๋ฌผ์ฒด์ ๋น์ด ์ด๋ป๊ฒ ๋ฐ์ฌ๋๊ณ ํก์๋๋์ง ๊ณ์ฐํ์ฌ ํ์ค๊ฐ ์๋ ์ด๋ฏธ์ง ์์ฑ.
ex) ๋น, ๊ทธ๋ฆผ์, ๋ฐ์ฌ
3. ํฝ์ ์์ ์ ์
ํ ์ค์ฒ๋ ์์์ ์ ์ฉํด ๊ฐ ํฝ์ ์ ์ต์ข ์์์ ๊ฒฐ์ .
๊ทธ๋ฆผ์, ํฌ๋ช ๋, ๋ฐ์ฌ ๋ฑ ์๊ฐ์ ํจ๊ณผ๋ฅผ ์ถ๊ฐ.
4. ํฌ์คํธ ํ๋ก์ธ์ฑ
๋ ๋๋ง๋ ์ด๋ฏธ์ง๋ฅผ ์์ ํด ๋ธ๋ฌ, ์ฑ๋ ์กฐ์ , ์๊ณก ๋ฑ ํจ๊ณผ๋ฅผ ์ถ๊ฐ.
Shader์ ์ข ๋ฅ
1. Vertex Shader
3D ๋ชจ๋ธ์ ์ ์ (Vertex) ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ. ์ ์ ์ ์์น๋ฅผ ๊ณ์ฐํ๊ณ ํ๋ฉด ์ขํ๋ก ๋ณํ.
์ ๋ ฅ: ์ ์ ๋ฐ์ดํฐ(์์น, ์์, ๋ฒ์ ๋ฒกํฐ ๋ฑ)
์ถ๋ ฅ: ๋ณํ๋ ์ ์ ๋ฐ์ดํฐ
2. Fragment Shader/Pixel Shader
ํ๋ฉด์ ๊ฐ ํฝ์ (Fragment)์ ์์์ ๊ณ์ฐ. ํ ์ค์ฒ, ์กฐ๋ช ํจ๊ณผ, ๊ทธ๋ฆผ์ ๋ฑ์ ์ ์ฉ.
์ ๋ ฅ: ํ ์ค์ฒ ์ขํ, ์กฐ๋ช ์ ๋ณด, ์ ์ ์ ฐ์ด๋์ ์ถ๋ ฅ.
์ถ๋ ฅ: ํฝ์ ์ ์ต์ข ์์.
3. Compute Shader
๊ทธ๋ํฝ ๋ ๋๋ง์ด ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฌ์ฉ. ๋ฌผ๋ฆฌ ์ฐ์ฐ, ๋ณต์กํ ์๋ฎฌ๋ ์ด์ , ๋ฐ์ดํฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฑ์ ํ์ฉ.
4. Geometry Shader
์ ์ ๊ณผ ์ ์ ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๊ฑฐ๋ ์ถ๊ฐ๋ก ์์ฑ. ์ , ์ , ์ผ๊ฐํ ๋ฑ์ ํํ๋ฅผ ๋ณํํ๊ฑฐ๋ ํ๋.
5. Tessellation Shader
๋ชจ๋ธ์ ๋ ์ธ๋ฐํ๊ฒ ์ธ๋ถํํ์ฌ ๊ณ ํด์๋ ๊ธฐํํ์ ์์ฑ.
Shader์ ๋์๋ฐฉ์
์ ฐ์ด๋๋ GPU์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์คํ๋๋ค.
ex) ํ๋ฉด์ 1000๋ง ๊ฐ์ ํฝ์ ์ด ์๋ค๋ฉด Fragment Shader๋ ๊ฐ ํฝ์ ์ ๋ํด ๋์์ ๊ณ์ฐ์ ์ํํ๋ค.
Shader์ ์คํํ๋ฆ
1. ์ดํ๋ฆฌ์ผ์ด์
์ด ๋ฐ์ดํฐ๋ฅผ ์ค๋น (์ ์ , ํ
์ค์ฒ ๋ฑ)
2. Vertex Shader -> Geometry Shader -> Tessellation Shader
3. GPU๊ฐ ์ต์ข ํฝ์ ์ ๊ณ์ฐ (Fragment Shader)
4. ํ๋ฉด์ ๊ฒฐ๊ณผ๋ฅผ ๋ ๋๋ง
'๐ป CS > ์ฉ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DTO (0) | 2023.05.19 |
---|---|
์ธํฐํ์ด์ค (1) | 2023.05.10 |