Math
곡κ°μ μν
νμ€ μΈκ³μ 곡κ°μ νλμ§λ§, κ°μ 곡κ°μ 무ννλ€.
곡κ°μ΄λ μ΄λ€ λ¬Όμ§ λλ λ¬Όμ²΄κ° μ‘΄μ¬ν μ μκ±°λ μ΄λ€ μΌμ΄ μΌμ΄λ μ μλ μ₯μ
νλ ¬ (Matrix)
μ ν λ³νμ μννλ λꡬ
μ»΄ν¨ν°μκ² κ°μ곡κ°μ λΉ λ₯΄κ² λ³νμν€λλ‘ μ§μνλ μΌμ’ μ λͺ λ Ήμ΄
곡κ°μ λ³νν λ μ¬μ©νλ κ²λ€μ λ€ νλ ¬μ λμλλ€.
μνλ κ³΅κ° λ³νμ ꡬννκΈ° μν΄μλ νλ ¬μ΄ μ΄λ»κ² λ§λ€μ΄μ§κ³ , μ΄λ»κ² μ€κ³ν΄μΌνλμ§ κΈ°λ³Έμ리λ₯Ό μ΄ν΄νλκ²μ΄ μ€μνλ€.
νλ©΄μ λ°©μ μ
ax + by + cz + d = 0
μ¬λ¬κ°μ νλ©΄μ μ¬μ©ν΄μ 곡κ°μμ μμ μ μμμ ꡬμΆν μ μλ€.
λνμ μΈ μλ‘ μΉ΄λ©λΌ μμμ μ μ΄νλ
μ λ체(Frustum)
κ° μλ€.
μ λ체(Frustum)λ, 6κ°μ νλ©΄μΌλ‘ ꡬμ±λλ©°, 3D 곡κ°μμ μΉ΄λ©λΌ μμμ λ΄κΈ΄ λΆλΆλ§ κ±Έλ¬λ΄ μ€μ λ‘ λ λλ§μν€λ 맀컀λμ¦μ κ°μ§κ³ μλ€.
물체μ μν
κ°μ 곡κ°μ 체κ³μ 물체λ₯Ό ꡬμ±νλλ° μ¬μ©νλ μν
μνμ‘°ν©
λ§μ½ μΈ κ²½μ° κ·Έ λ μ μ λ νμ λ νμ μ μ΄ λλ€.
ν΄λΉ 쑰건μ μμνμν¨λ€λ©΄ μ¦, aκ°κ³Όλ 무κ΄νκ² λ§μ§λ§ μ°¨μμ κ°μ 1μ΄ λλ€.
μ¦, μ κ³Ό μ μ λ νμ λ μΈμ λ μν곡κ°μ μ μ 보μ₯νλ€.
λ μ μ μ‘°ν©νμ λ μλ‘μ΄ μ μ λ§λλ 곡μμ΄ λλ€.
λ©΄μ μμ± νλ μν
μ 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(ΞΈ) β λ°λ³μ΄ λλ€.
μΌκ°λΉ
μΌκ°λΉμ 3κ°μ§ μ’ λ₯
μ΄λ¬ν λΉμ¨μ μμΌλ‘ νμ₯ν΄μ ν¨μλ‘ νννκ²μ΄ μΌκ°ν¨μμ΄λ€.
sin(ΞΈ) =>
cos(ΞΈ) =>
tan(ΞΈ) =>
Last updated