물체μ μ 체κ°κ³Ό λΆνΌκ°μ νννκΈ° μν΄ μ‘°λͺ (Lighting)κ³Ό μμ(Shadering)μ΄ μ€μνλ€. μΌλ°μ μΌλ‘ μ‘°ν λͺ¨νμ΄ μ νν μλ‘ κ·Έ κ³μ°μ λΉμ©μ ν¬κ³ μνμ κ°μ 미리 λ λλ§ ν΄λμ΄λ λλ μ₯λ©΄μ κ²μκ°μ μ€μκ° λ λλ§μ ν΄μΌνλ μ₯λ©΄λ³΄λ€ λΉμ©μ΄ λ λλ€.
μ¬μ§(material)μ λΉμ΄ 물체μ νλ©΄κ³Ό μνΈμμ©νλ λ°©μμ κ²°μ νλ μμ±λ€μ μ§ν©μ΄λΌκ³ ν μ μλ€. ν‘μνλ λΉμ μ, νλ©΄ μλ μ¬μ§μ κ΅΄μ λ₯ , νλ©΄μ 맀λλ¬μ΄ μ λ, ν¬λͺ λ λ± ..
κ΄μμ λ€μν λΉμ μμ λΌ μ μκ³ μ¬λ¬κ°μ§ μΈκΈ°(intensity)λ‘ λ°©μΆνλ€. κ΄μμμ λμ¨ λΉμ΄ 물체μ μΆ©λνλ©΄, κ·Έ λΉμ μΌλΆλ ν‘μλκ³ μΌλΆλ λ°μ¬λλ€.
λλΆλΆ κ²μκ³Ό κ°μ μ€μκ° μμ© νλ‘κ·Έλ¨μ΄ μ¬μ©νλ μ‘°ν λͺ¨νμ κ΅μ μ‘°λͺ λͺ¨ν(local illumination model)μ΄λ€. κ΅μ λͺ¨νμμλ κ° λ¬Όμ²΄λ₯Ό λ€λ₯Έ 물체μλ λ 립μ μΌλ‘ μ²λ¦¬νλ©°, μ€μ§ κ΄μμμ μ§μ λ°©μΆλ λΉλ§ λ€λ£¬λ€. (μ₯λ©΄μ λ€λ₯Έ 물체μ λ°μ¬λμ΄μ νμ¬ λ¬Όμ²΄μ λλ¬ν λΉμ 무μνλ€. )
1. λ²μ 벑ν°
λ©΄ λ²μ (face normal)μ λ€κ°νμ λ©΄ν λ°©ν₯μ λνλ΄λ λ¨μ벑ν°λ‘ λ€κ°νμ λͺ¨λ μ μ μμ§μΈ λ¨μ벑ν°μ΄λ€. νλ©΄ λ²μ (surface normal)μ νλ©΄μ ν μ μ μ νλͺ (tangent place)μ μμ§μΈ λ¨μ벑ν°μ΄λ€. μ‘°λͺ κ³μ°μ μν΄μλ μΌκ°ν λ©μμ νλ©΄μ λͺ¨λ μ μμ νλ©΄ λ²μ μ΄ νμνλ€. μΌκ°ν μ μ λ€μ μΈ κΌμ§μ μμλ§ νλ©΄ λ²μ μ μ§μ ν΄λ νμν λͺ¨λ νλ©΄ λ²μ μ μ»μ μ μλ€. νμ΄νλΌμΈμ λμ€ν°ν κ³Όμ μμ κ·Έ μΈ μ μ λ²μ μ 보κ°ν΄μ νλ©΄ λ²μ λ€μ μμ±νλ€.
2. μΌκ°ν λ²μ λ²‘ν° κ³μ°
λ€κ°ν λ©μλ λ―ΈλΆμ΄ λλΆλΆ λΆκ°λ₯νμ¬ μ μ λ²μ νκ· κΈ°λ²(vertex normal averaging)μ μ¬μ©νλ€. λ©μμ μμμ μ μ vμ μ μ λ²μ nμ κ·Έ μ μ μ 곡μ νλ λ©μμ λͺ¨λ λ€κ°νμ λ©΄ λ²μ μ νκ· μ κ·Όμ¬νλ€.
3. λ²μ 벑ν°μ λ³ν
(A)μμ λ²‘ν° uμ nμ μμ§μ΄λ€. μ¬κΈ°μ λΉκ· λ± λΉλ‘λ³νμΌλ‘ (B)uAμ nAλ λ μ΄μ μμ§μ΄ μλλ€. λ³νλ uAμ μμ§μΈ nAλ₯Ό ꡬνκΈ° μν΄μλ μλμ κ°μ κ³Όμ μ κ±°μ³μΌ νλ€.
β» μ μΉ νλ ¬μ΄λ ? μ νλμνμμ μ μΉ νλ ¬μ νκ³Ό μ΄μ κ΅ννμ¬ μ»λ νλ ¬μ΄λ€. μ¦, μ£Όλκ°μ μ μΆμΌλ‘ νλ λ°μ¬ λμΉμ κ°νμ¬ μ»λ νλ ¬μ΄λ€.
static XMMATRIX InverseTranspose (CMMATRIX M)
{
XMMATRIX A = M;
A.r[3] = XMVectorSet(0.0f, 0.0f, 0.0f, 1.0f);
XMVECTOR det = XMMatrixDetermainant(A);
return XMMatrixTranspose(XMMatrixInverse(&det, A));
}
'π― game engine > β½ directX12' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[DirectX12] νλΈλ§΅ λ§λ€κΈ° / StructuredBuffer (0) | 2024.11.26 |
---|---|
[DirectX12] μ€ν μ€(stencil) κ±°μΈ λ§λ€κΈ° (0) | 2024.11.07 |
[DirectX12] μ‘°λͺ μ μ’ λ₯ (0) | 2023.12.19 |
[DirectX12] μκΈ°λ₯μ μ μ μ°κΈ°/λ λλ§ κ³Όμ μ΄ν΄νκΈ° (1) | 2023.12.12 |
[DirectX12] Direct3D μ΄κΈ°ν κ³Όμ , κ·Έλν½ νλ‘κ·Έλλ°μ CPUμ GPUμ μνΈμμ© (1) | 2023.12.06 |
μ νλ κ² λ³΄λ€ λ«κ² μ§
ν¬μ€ν μ΄ μ’μλ€λ©΄ "μ’μμβ€οΈ" λλ "ꡬλ ππ»" ν΄μ£ΌμΈμ!