GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • protobuf
  • client
  • RPG Game
  • c++
  • Direct3D
  • Other Character
  • Direct11
  • Network Worker
  • Destination Move Packet
  • session
  • core
  • Player State
  • Game Server
  • UE5
  • Game Room
  • server
  • GAME Client
  • job queue
  • Player Move Packet
  • Algorithm Strategies

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 17. Direct3D Texture - Filter & Mode
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 17. Direct3D Texture - Filter & Mode

2023. 6. 16. 20:25

1. Direct3D Texture

1.1 Filter

1.1.1 Magnification

 - 모니터의 해상도가 1024 ✕ 1024, Texture의 해상도가 256 ✕ 256인 경우 Texture로 부터 확대가 일어남

   - 적은 수의 텍셀들로 더 많은 수의 픽셀들을 채워야 함

     - 각 픽셀에는 정점 Texture 좌표를 삼각형을 따라 보간해서 결정된 고유한 Texture 좌표가 부여

       - 텍셀 점과 정호가히 일치하지 않는 Texture 좌표를 가진 픽셀들이 존재

         - 따라서 픽셀 부근에 있는 텍셀들의 색들을 보간해야하는데 그것을 상수 보간 & 선형 보간이라 부름

1.1.2 Minification

 - 너무 많은 텍셀들이 너무 적은 픽셀들에 사상되는 것

   - 위의 예시와 반대로 설정되게 된다면 픽셀의 Texture  좌표가 Texture Map의 어떤 텍셀 점과도 일치X

     - 상수 보간 필터링 & 선형 보간 필터링 적용

   - 위 필터링 이외의 처리가 가능

     - 256 ✕ 256 텍셀 크기의 맵을 평균 하향표본화를 통해 더 작은 맵으로 줄일 수 있음

       - 축소를 효율적으로 하지만 메모리는 조금 더 사용하는 밉매핑 방식 사용 (렌더링 이전에 미리 수행)

1.1.3 Anisotropic

 - 다각형의 법선 벡터와 카메라의 시선 벡터 사이의 각도가 클 때 발생하는 왜곡 현상이 완화

   - 비용이 크지만 왜곡에 의한 결함을 제거함으로써 품질이 크게 향상

1.2 Mode

 - 함수의 정의역 바깥의 좌표가 주어졌을 때의 처리방식 - 좌표 지정 모드(Address Mode)

   - Wrap, Border Color, Clamp, Mirror 4가지 존재

1.2.1 Wrap

 - 이미지가 정수 경계마다 반복

   - Texture를 일정한 표면에 반복해서 깔 수 있음, 타일링이라는 기법 사용

     - 추가적인 자료 없이 Texture의 해상도를 높이는 효과, Texture의 이음매가 없도록 하는 것

SamplerState samTriLinear { Filter = MIN_MAG_MIP_LINEAR; AddressU = WRAP; AddressV = WRAP; }

1.2.2 Border Color

 - 바깥의 Texture 좌표가 입력되면 Texture 함수는 프로그래머가 지정한 색을 사용

SamplerState samTriLinear { Filter = MIN_MAG_MIP_LINEAR AddressU = BORDER; AddressV = BORDER; }

1.2.3 Clamp

 - Texture 함수는 바깥의 좌표에 대해 색을 돌려줌

SamplerState samTriLinear { Filter = MIN_MAG_MIP_LINEAR AddressU = CLAMP; AddressV = CLAMP; }

1.2.4 Mirror

 - 이미지가 각 정수 경계마다 반사, 즉 반대 방향으로 반복

SamplerState samTriLinear { Filter = MIN_MAG_MIP_LINEAR AddressU = MIRROR; AddressV = MIRROR; }

1.3 Sampler State

1.3.1 Fixel Shader

 - 위에서 설명한 내용을 토대로 필터들을 적용하기 위해 사용

   - 축소, 확대, 밉맵에 대해 선형 필터링 적용

SamplerState mySamplerO { Filter = MIN_MAG_MIP_LINEAR; }

   - 축소에 대해 선형 필터링, 확대와 밉맵에 대해 점 필터링 사용

SamplerState mySamplerl { Filter = MIN_LINEAR_MAG_MIP_POINT; }

   - 축소 및 밉맵에 대해 점 필터링, 확대에 대해 선형 필터링

SamplerState mySampler2 { Filter = MIN_POINT_MAG_LINEAR_MIP_POINT; }

   - 축소, 확대, 밉맵에 대해 비등방 필터링 사용

SamplerState mySampler3 { Filter = ANISOTROPIC; MaxAnisotropy = 4; }

 - 픽셀 셰이더에서 주어진 픽셀 Texture 좌표를 이용하여 Texture로 부터 하나의 표본을 추출

   - 적절한 표본추출기 선언과 함수 호출이 필요

     - 2차원 Texture를 추출할 때 Sample 함수를 사용

       - 주어진 Sampler State 객체에 지정된 필터링 방법을 이용, Texture 맵의 점에서 추출, 보간한 색상 값을 돌려줌

float4 PS(VertexOut pin, uniform int gLightCount) : SV_Target
{ float4 texColor = gDiffuseMap.Sample(samAnisotropic, pin.Tex); }

 - Texture를 재질과 조명 시스템과 통합할 경우 주변광과 분산광으로 변조하되 반영광으로 변조X

저작자표시 (새창열림)

'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글

[Direct11] 19. Direct3D Blending  (0) 2023.06.17
[Direct11] 18. EX App Program - Texture Box  (0) 2023.06.16
[Direct11] 16. Direct3D Texture  (0) 2023.06.16
[Direct11] 15. EX App Program - Light System  (0) 2023.06.15
[Direct11] 14. Lighting System - Directional & Point & Spot Light  (0) 2023.06.15
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 19. Direct3D Blending
    • [Direct11] 18. EX App Program - Texture Box
    • [Direct11] 16. Direct3D Texture
    • [Direct11] 15. EX App Program - Light System
    GameChoi
    GameChoi

    티스토리툴바