코가손의 블로그
[DirectX12] 텍스처 형식 본문
텍스처의 원소는 픽셀 하나의 색상을 담는 역할을 하거나 법선 매핑이라고 하는 고급 기법에서 쓰이는 3차원 벡터를 담는 용도로도 쓰인다. 2차원 텍스처는 2차원 배열, 3차원 텍스처는 3차원 배열에 해당한다.
텍스처는 단순한 자료 배열인 것이 아니다. GPU는 필터링, 다중 표본화 등의 특별한 연산을 텍스처에 적용할 수 있다.
텍스처에는 아무 자료형이나 담을 수 있는 것은 아니고 특별한 형식이 있다. DXGI_FORMAT이라는 열거형으로 형식을 지정하며 다음은 텍스처에 담을 수 있는 형식들의 예이다.
1. DXGI_FORMAT_R32G32B32_FLOAT : 각 원소는 32비트 부동소수점 성분 세 개로 이루어진다.
2. DXGI_FORMAT_R16G16B16A16_UNORM : 각 원소는 [0, 1] 구간으로 사상되는 16비트 성분 네 개로 이루어진다.
3. DXGI_FORMAT_R32G32_UINT : 각 원소는 부호 없는 32비트 정수 성분 두 개로 이루어진다.
4. DXGI_FORMAT_R8G8B8A8_UNORM : 각 원소는 [0, 1] 구간으로 사상되는 부호 없는 8비트 성분 네 개로 이루어진다.
5. DXGI_FORMAT_R8G8B8A8_SNORM : 각 원소는 [-1, 1] 구간으로 사상되는 부호 있는 8비트 성분 네 개로 이루어진다.
6. DXGI_FORMAT_R8G8N8A8_SINT : 각 원소는 [-128, 127] 구간으로 사상되는 부호 있는 8비트 성분 네 개로 이루어진다.
7. DXGI_FORMAT_R8G8B8A8_UINT : 각 원소는 [0, 255] 구간으로 사상되는 부호 없는 8비트 정수 성분 네 개로 이루어진다.
여기서 R, G, B, A는 각각 Red, Green, Blue, Alpha(투명도)를 뜻한다.
RGBA의 위치에 반드시 색상이 담겨야 하는 것은 아니다.
다음과 같이 임의의 3차원 벡터를 담을 수 있다.
DXGI_FORMAT_R32G32B32_FLOAT
그리고 무형식(typeless) 텍스처들도 있는데, 이런 텍스처는 메모리만 확보해 두고 자료의 해석은 나중에 텍스처를 파이프라인에 묶을 때 지정하는 용도로 쓰인다. 무형식 텍스처는 다음과 같다.
DXGI_FORMAT_R16G16B16A16_TYPELESS
마지막으로 DXGI_FORMAT 열거형은 정점 자료 형식과 색인 자료 형식을 서술할 때에도 쓰인다.
'GameDev > DirectX12' 카테고리의 다른 글
[DirectX12] 렌더링 파이프라인 (0) | 2021.11.23 |
---|---|
[DirectX12] COM(Component Object Model) (0) | 2021.11.15 |