Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

For me

[DirectX12] 14) Normal Mapping 본문

DirectX12

[DirectX12] 14) Normal Mapping

GiveZero 2023. 1. 18. 01:07

Normal Mapping (Bump Mapping)

Normal Mapping을 사용하지 않을 때

Vertex Shader에서 정해준 각 정점의 값의 법선벡터로 내부의 점의 노말값을 보간

 

Normal Mapping을 사용하지 않고 Vertex 값을 무수히 늘릴 때

다양한 색 처리가 가능해짐. 하지만 프로그램 실행속도가 현저하게 느려지고, 연산량도 기하급수적으로 늘어남

 

Normal Texture

u,v 좌표에 해당하는 각각의 픽셀에 Normal 값을 전달해주는 역할

 

Normal Texture은 local 좌표계를 사용하지 않고, 별도의 좌표계를 사용함.

그 이유는 Mesh 자체는 local 기준으로 지속적으로 변화하고, Normal Texture은 tangent Space(접하는 평면)을 사용

좌표 자체를 tangent Space로 만들었기 때문에 노말벡터인 N 으로 나타나기 때문에 파란색으로 보임.


Shader

더보기
    float3 viewNormal = input.viewNormal;
    if (g_tex_on_1)
    {
        // [0,255] 범위에서 [0,1]로 변환
        float3 tangentSpaceNormal = g_tex_1.Sample(g_sam_0, input.uv).xyz;

        // [0,1] 범위에서 [-1,1]로 변환
        tangentSpaceNormal = (tangentSpaceNormal - 0.5f) * 2.f;

        float3x3 matTBN = { input.viewTangent, input.viewBinormal, input.viewNormal };
        viewNormal = normalize(mul(tangentSpaceNormal, matTBN));
    }

 

'DirectX12' 카테고리의 다른 글

[DirectX12] 16) Quaternion  (0) 2023.01.19
[DirectX12] 15) SkyBox  (0) 2023.01.18
[DirectX12] 13) Shadow  (0) 2023.01.17
[DirectX12] 12) Light - 2  (0) 2023.01.17
[DirectX12] 11) Light - 1 (이론)  (1) 2023.01.17