Math
๊ณต๊ฐ์ ์ํ
ํ์ค ์ธ๊ณ์ ๊ณต๊ฐ์ ํ๋์ง๋ง, ๊ฐ์ ๊ณต๊ฐ์ ๋ฌดํํ๋ค.
ํ๋ ฌ (Matrix)
์ ํ ๋ณํ์ ์ํํ๋ ๋๊ตฌ
์ปดํจํฐ์๊ฒ ๊ฐ์๊ณต๊ฐ์ ๋น ๋ฅด๊ฒ ๋ณํ์ํค๋๋ก ์ง์ํ๋ ์ผ์ข ์ ๋ช ๋ น์ด
๊ณต๊ฐ์ ๋ณํํ ๋ ์ฌ์ฉํ๋ ๊ฒ๋ค์ ๋ค ํ๋ ฌ์ ๋์๋๋ค.
ํ๋ฉด์ ๋ฐฉ์ ์
ax + by + cz + d = 0
์ฌ๋ฌ๊ฐ์ ํ๋ฉด์ ์ฌ์ฉํด์ ๊ณต๊ฐ์์ ์์ ์ ์์ญ์ ๊ตฌ์ถํ ์ ์๋ค.
๋ํ์ ์ธ ์๋ก ์นด๋ฉ๋ผ ์์ญ์ ์ ์ดํ๋
์ ๋์ฒด(Frustum)
๊ฐ ์๋ค.
๋ฌผ์ฒด์ ์ํ
๊ฐ์ ๊ณต๊ฐ์ ์ฒด๊ณ์ ๋ฌผ์ฒด๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉํ๋ ์ํ
์ํ์กฐํฉ
์ฆ, ์ ๊ณผ ์ ์ ๋ ํ์ ๋ ์ธ์ ๋ ์ํ๊ณต๊ฐ์ ์ ์ ๋ณด์ฅํ๋ค.
๋ ์ ์ ์กฐํฉํ์ ๋ ์๋ก์ด ์ ์ ๋ง๋๋ ๊ณต์์ด ๋๋ค.
๋ฉด์ ์์ฑ ํ๋ ์ํ
์ 3๊ฐ๋ฅผ ์กฐํฉํ๋ ๋ฉ์ปค๋์ฆ
์ธ ์ ์ ์กฐํฉํ ๊ฒฐ๊ณผ๋ ํ๋ฉด์ ๋ง๋ค์ด ๋ธ๋ค.
์ธ ์ ์ ์ฌ์ฉ๋๋ ๊ณ์์ ๊ฐ์ ๋ฒ์๋ฅผ 0 ~ 1๋ก ์ ํํ๊ฒ ๋๋ฉด ์ธ ์ ์ด ๊ฐ์ง๊ณ ์๋ ์์ญ ๋ด๋ถ์ ์์นํ๋ ์ ์ ์์ฑํ๋๋ฐ ์ด๊ฒ์ด ๋ฐ๋ก ์ผ๊ฐํ์ ์์ญ์ด ๋๋ค.
์ด ์ผ๊ฐํ์ด ๋ชจ์ฌ ๋ฌผ์ฒด๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋๊ณ ์ด๊ฒ๋ค์ ํ๋์ฉ ๊ทธ๋ ค์ฃผ๋ ๊ฒ์ด ๊ฒฐ๊ตญ ๊ทธ๋ํฝ์ ์๋ฆฌ์ด๋ค.
์ด๋ฐ ์ผ๊ฐํ์ ์ ๋ณด๋ฅผ ๋ชจ์๋ ๊ฒ์
Mesh
๋ผ๊ณ ํ๋ค.
์ ์ ์ด ์๋ ์ผ๊ฐํ์ผ๋ก ๋ฌผ์ฒด๋ฅผ ๊ทธ๋ฆด๊น?
์ ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌผ์ฒด๋ฅผ ๊ฐ๊น์ด์ ๋ณด๋ ๊ฒฝ์ฐ ์ ๋ค์ด ํผ์ง๊ฒ ๋๋ฉด์ ๋ฌผ์ฒด์ ๋ฐ๋๊ฐ ๋จ์ด์ง๊ฒ ๋๋ค.
But ์ผ๊ฐํ์ผ๋ก ๋ฌผ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ญ์ ์ค์ ํ ๋ค์ ์ผ๊ฐํ ๋ด๋ถ์ ํฝ์ ์ ๊ณ์๋ฅผ ๊ตฌํ๊ณ ๊ฐ๊ฐ ์น ํด์ฃผ๊ฒ ๋๋ค๋ฉด ์ ๋ฐํ๊ฒ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋ค.
์ผ๊ฐํ์ด ๊ฐ์ง๊ณ ์๋ ์์ญ์ ์น ํด์ฃผ๋ ๊ฒ์ ํฝ์ ํ(Rasterization) ๋ผ๊ณ ํ๋ค.
์ผ๊ฐํ์ ๋ํ ์ํ์ ์ธ๊ฐ์ ์ ๊ณผ ๊ฐ ์ ์ ๋์๋๋ ๊ณ์๋ค๋ก ๊ตฌ์ฑ๋๋ค.
์ด ๊ณ์๋ค์ 0~1์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค.
์ด๋ค ์ ์ด 1์ด๋ผ๋ฉด ๋๋จธ์ง๋ ๋ฌด์กฐ๊ฑด 0์ด ๋์ด์ผ ํ๋ค.
์ฆ, ์ธ ๊ฐ์ ์ ์ ๊ฐ์ง๊ณ ๋ฐฉ์ ์์ ํตํด ๋ง๋ค์ด์ง ์๋ก์ด ์ ์ ์ผ๊ฐํ์ ๊ตฌ์ฑํ๋ ์ธ ์ ์ค ์ด๋์ ๊ฐ๊น์ด์ง ๊ทธ ๋น์ค์ ๋ํ๋ผ ์ ์๋ค.
๋ง์ฝ ๋ชจ๋ ๊ณ์์ ๊ฐ์ด 1/3 ์ด๋ผ๋ฉด ๋ง๋ค์ด์ง ์ ์ ์ผ๊ฐํ์ ์ ์ค์์ ์์นํ๊ฒ ๋๋ค.
์ด ๊ณ์๋ค์ ๋ชจ์ ์ขํ๋ฅผ ๋ง๋ ๊ฒ์ด ๋ฌด๊ฒ์ค์ฌ์ขํ(Barycentric coordinate)๋ผ ํ๋ค.
์ผ๊ฐํ์ ๋ฌด๊ฒ์ค์ฌ ์ขํ๋ฅผ ์ด์ฉํด ํฝ์ ์ ์์์ ๊ฒฐ์ ํ ๋ ๊ฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ํผํฉํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
์ผ๊ฐํ์ ํ ์ค์ณ๋ฅผ ์ค๋ ค ๋ถ์ผ ๋์๋ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ ์ด๋ ์ฌ์ฉ๋๋ ์ขํ๋ฅผ UV ์ขํ๋ผ ํ๋ค.
์ผ๊ฐํ์ ๊ตฌ์ฑํ๋ ์ธ ์ ์ ์์์ด๋ UV ์ ๋ณด๋ค์ ๋ฃ์ด์ ์ผ๊ฐํ ๋ด๋ถ๋ฅผ ์น ํ๋ ๋ค์ํ ํจ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์๋ค
์ผ๊ฐํ์ ๊ตฌ์ฑํ๋ ์ธ ์ ์๋ค๊ฐ
Color
,UV
,Normal
,tangent
๋ฑ ๋ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๊ฐ๊ฐ์ ์ต์ข ์ ์ธ ์ ์ ๋ฐ์ดํฐ ๋ฌถ์์ ์ ์ (Vertex)์ด๋ผ ํ๋ค.
ํ๋์ ๋ฌผ์ฒด๋ฅผ ํ๋ฉด์ ๊ทธ๋ ค๋ด๋ ๊ณผ์ ์์ฝ
๋ฌผ์ฒด๋ฅผ ์ธ ๊ฐ์ ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ผ๊ฐํ์ผ๋ก ๋ถ๋ฆฌ
๋ถ๋ฆฌ๋ ์ผ๊ฐํ์ ๊ฐ๊ฐ ๊ทธ๋ ค์ ํ๋ฉด์ ์ฑ์ด๋ค.
์ด ๊ณผ์ ์ ์ ํํ ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. (๊ทธ๋ํฝ์นด๋๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌ)
์ด ๊ณผ์ ์์ ๊ฐ๋ฐ์๊ฐ ์ปค์คํ ํ ์ ์๋๋ก ์ ๊ณตํ๋ ํจ์
์ ์ ์ ฐ์ด๋
,ํฝ์ ์ ฐ์ด๋
๊ฐ ์๋ค.
1. ์ ์ ์
ฐ์ด๋(Vertex Shader)
์ผ๊ฐํ์ ๊ตฌ์ฑํ๋ ๊ฐ ์ ์ ์ ์ต์ข ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ์ ํ๋ ํจ์
2. ํฝ์
์
ฐ์ด๋(Pixel Shader)
์ผ๊ฐํ ๋ด๋ถ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ ํฝ์ ์ ์ต์ข ์์์ ๊ฒฐ์ ํ๋ ํจ์
ํ์ ์ ์ํ (์ผ๊ฐํจ์์ ํ์ ํ๋ ฌ)
์ผ๊ฐํจ์
๊ธฐ์ค ์์น์์ ์ผ๋ง๋งํผ์ ๊ฐ์ ์ด์ฉํด์ ํ์ ํ๋์ง๋ฅผ ํ์ ํ ๊ฐ๊ณผ ๋ฐ์ง๋ฆ์ ์ฌ์ฉํด ํํํ ์ ์๋ค.
๋จ์ ์์ ๋ฐ์ง๋ฆ์ ํฌ๊ธฐ๊ฐ 1 ์ด๋ผ๋ฉด ์์์ ์์นํ ํ ์ ์ ๋ํด ์ผ๊ฐํจ์๋ก ํํ์ ํ๋ฉด sin(ฮธ) โ ๋์ด, cos(ฮธ) โ ๋ฐ๋ณ์ด ๋๋ค.
์ผ๊ฐ๋น
์ด๋ฌํ ๋น์จ์ ์์ผ๋ก ํ์ฅํด์ ํจ์๋ก ํํํ๊ฒ์ด ์ผ๊ฐํจ์์ด๋ค.
Last updated