Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
관리 메뉴

codingfarm

기본지식 - 텍스처 및 자료 자원 형식 본문

computer graphics/DirectX11

기본지식 - 텍스처 및 자료 자원 형식

scarecrow1992 2020. 11. 27. 22:58

2차원 텍스처는 자료 원소들의 행렬(2차원 배열)이다. 2차원 텍스처의 용도 중 하나는 2차원 이미지 자료를 저장하는 것인데, 이때 텍스처의 각 원소는 픽셀 하나의 색상을 담는다. 

 

하지만 텍스처가 꼭 이미지 자료의 저장만을 위해 사용되는 것은 아니며 훨씬 범용적으로 사용된다. 예를 들면 법선 매핑 같은 경우 텍스처에 각 원소의 색상이 아닌 3차원 벡터를 담는다. 

 

텍스처에는 아무 자료나 담을 수 있는 것은 아니다. 텍스처에는 특정 형식(format)의 자료 원소들만 담을 수 있는데, 구체적인 형식은 DXGI_FORMAT이라는 열거형으로 지정한다. 자료 원소 형식들을 나열하면 다음과 같다.

 

docs.microsoft.com/en-us/windows/win32/api/dxgiformat/ne-dxgiformat-dxgi_format

 

DXGI_FORMAT (dxgiformat.h) - Win32 apps

Resource data formats, including fully-typed and typeless formats. A list of modifiers at the bottom of the page more fully describes each format type.

docs.microsoft.com

 

위 형식들이 뜻하는 것을 확인하는 방법은 아래와 같다.

_FLOAT 실수, 32비트, 16비트
_SINT 2의 보수, 부호화 정수
_UINT 부호화 되지 않은 정수
_SNORM 부호화 정수, 정규화(Normalized)
[-1.0, +1.0]
_SRGB 표준 RGB
_TYPELESS 무형식 리소스
_UNORM 부호화 되지 않은 정수, 정규화
[0.0, 1.0]

R: Red, G: Green, B: Blue, A: Alpha, D: Depth, S: Stencil, X: Don't Care, BC: Block Compression

 

가령

DXGI_FORMAT_R8G8B8A8_UNORM

_R8G8B8A8

  • 4개 요소(Component) : RGBA
  • 각 요소는 8bit
  • 하나의 픽셀은 32bit

_UNORM

  • 각 요소는 부호화 되지 않은 정수
  • 각 요소는 정규화됨$(0, \dfrac{1}{255}, \dfrac{2}{255}, \cdots, 1.0)$
  • $000000000 \rightarrow 0$,  $000000001 \rightarrow \dfrac{1}{255}$,  $111111111 \rightarrow 1$

 

 

무형식(typeless)의 텍스처 형식도 존재하는데, 일단 메모리만 확보해두고 자료의 구체적인 해석 방식은 나중에 텍스처를 파이프라인에 묶을 때 지정하는 용도로 쓰인다.(void* 형식의 메모리를 가져와 reinterpret_cast 하여 원하는 자료형으로 형변환 하는것과 비슷하다)

 

 

 

 

 

Comments