DirectX12

[DirectX12] 4) Texture Mapping

GiveZero 2023. 1. 15. 20:59

Texture : 2D Image

Mapping : 하나의 값을 다른 값으로 대응시키는 것

 

수많은 폴리곤을 실시간으로 처리하는데에 성능상의 문제로 인해 적정수의 폴리곤을 이용하며 사실적인 영상을 만들어 내는 방법

즉, 속성을 모델링 하는 기법중 하나이다.

 

Texture Mapping 순서

1. 물체의 공간 좌표를 계산한다.
2. 매핑 공간을 (u, v)와 같은 매개변수로 표현할 수 있도록 투영 함수를 사용한다.
3. 원하는 텍스처 픽셀(텍셀, texel)을 찾기 위해 대응자 함수를 사용한다.
4. 텍셀에 접근하여 텍셀의 화소값(pixel value)을 얻는다.
5. 필요하다면 수식이나 단편값을 이용하여 화소값을 보정한다.


CD3DX12_DESCRIPTOR_RANGE(D3D12_DESCRIPTOR_RANGE_TYPE_SRV, SRV_REGISTER_COUNT, 0), // t0~t4

=> t0~t4까지의 ShaderResourceView에 Texture VIew에 밀어넣음 (RootSignature에서 정의)

Texture Shader
// [Texture Shader]
// g_tex_0 : Output Texture
// AlphaBlend : true
struct VS_TEX_IN
{
    float3 pos : POSITION;
    float2 uv : TEXCOORD;
};

struct VS_TEX_OUT
{
    float4 pos : SV_Position;
    float2 uv : TEXCOORD;
};

VS_TEX_OUT VS_Tex(VS_TEX_IN input)
{
    VS_TEX_OUT output = (VS_TEX_OUT)0;

    output.pos = mul(float4(input.pos, 1.f), g_matWVP);
    output.uv = input.uv;

    return output;
}

float4 PS_Tex(VS_TEX_OUT input) : SV_Target
{
    float4 color = float4(1.f, 1.f, 1.f, 1.f);
    if (g_tex_on_0)
        color = g_tex_0.Sample(g_sam_0, input.uv);

    return color;
}

#endif