볼륨 타일식 리소스(Direct3D 12)
볼륨(3D) 질감은 타일식 리소스로 사용할 수 있으며 타일 해상도는 3차원입니다.
개요
타일식 리소스는 Direct3D 리소스 개체를 지원 메모리와 분리합니다(과거의 리소스는 지원 메모리와 1:1 관계가 있었습니다). 이렇게 하면 질감 데이터의 스트리밍 및 메모리 사용 다시 사용 또는 감소와 같은 다양하고 흥미로운 시나리오가 가능해집니다.
2D 텍스처 타일식 리소스는 Direct3D 11.2에서 지원됩니다. 3D 타일 텍스처에 대한 선택적 지원은 Direct3D 12 및 Direct3D 11.3( D3D12_TILED_RESOURCES_TIER 참조)에 사용할 수 있습니다.
타일 방식에서 사용되는 일반적인 리소스 크기는 2D 질감의 경우 4 x 4 타일이고, 3D 질감의 경우 4 x 4 x 4 타일입니다.
비트/픽셀(1샘플/픽셀) | 타일 크기(픽셀, w x h x d) |
---|---|
8 | 64x32x32 |
16 | 32x32x32 |
32 | 32x32x16 |
64 | 32x16x16 |
128 | 16x16x16 |
BC 1,4 | 128x64x16 |
BC 2,3,5,6,7 | 64x64x16 |
타일형 리소스에는 96bpp 형식, 비디오 형식, R1_UNORM, R8G8_B8G8_UNORM, R8R8_G8B8_UNORM 형식이 지원되지 않습니다.
아래 다이어그램에서 진한 회색은 NULL 타일을 나타냅니다.
- 질감 3D 타일식 리소스 기본 매핑(가장 자세한 mip)
- 질감 3D 타일식 리소스 기본 매핑(두 번째로 가장 자세한 mip)
- 질감 3D 타일식 리소스(가장 자세한 mip)
- 질감 3D 타일식 리소스(두 번째로 가장 자세한 mip)
- 질감 3D 타일식 리소스(단일 타일)
- 질감 3D 타일식 리소스(균일한 상자)
텍스처 3D 타일 리소스 기본 매핑(가장 자세한 밉)
텍스처 3D 타일 리소스 기본 매핑(가장 자세한 두 번째 밉)
텍스처 3D 타일 리소스(가장 자세한 밉)
다음 코드는 가장 자세한 밉에서 3D 타일 리소스를 설정합니다.
D3D12_TILED_RESOURCE_COORDINATE trCoord{};
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize{};
trSize.bUseBox = false;
trSize.NumTiles = 63;
텍스처 3D 타일 리소스(두 번째로 자세한 밉)
다음 코드는 3D 타일 리소스와 두 번째로 자세한 밉을 설정합니다.
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 0;
trCoord.Z = 0;
trCoord.Subresource = 1;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = false;
trSize.NumTiles = 6;
텍스처 3D 타일 리소스(단일 타일)
다음 코드는 단일 타일 리소스를 설정합니다.
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 1;
trCoord.Y = 1;
trCoord.Z = 1;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
텍스처 3D 타일 리소스(균일 상자)
다음 코드는 균일한 상자 타일 리소스를 설정합니다(문 참고). trSize.bUseBox = true;) :
D3D12_TILED_RESOURCE_COORDINATE trCoord;
trCoord.X = 0;
trCoord.Y = 1;
trCoord.Z = 0;
trCoord.Subresource = 0;
D3D12_TILE_REGION_SIZE trSize;
trSize.bUseBox = true;
trSize.NumTiles = 27;
trSize.Width = 3;
trSize.Height = 3;
trSize.Depth = 3;
타일형 리소스 API
동일한 API 호출은 2D 및 3D 타일 리소스 모두에 사용됩니다.
열거형
- D3D12_TILED_RESOURCES_TIER : 타일형 리소스 지원 수준을 결정합니다.
- D3D12_FORMAT_SUPPORT2 : 타일형 리소스 지원을 테스트하는 데 사용됩니다.
- D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS : 다중 샘플링 리소스에서 타일식 리소스 지원을 결정합니다.
- D3D12_TILE_COPY_FLAGS : 스위즐된 타일형 리소스 및 선형 버퍼에서 복사하기 위한 플래그를 보유합니다.
구조체
- D3D12_TILED_RESOURCE_COORDINATE : x, y 및 z 조정 및 하위 리소스 참조를 보유합니다. 도우미 구조는 CD3DX12_TILED_RESOURCE_COORDINATE.
- D3D12_TILE_REGION_SIZE : 타일 영역의 크기 및 타일 수를 지정합니다.
- D3D12_TILE_SHAPE : 타일 셰이프를 텍셀의 너비, 높이 및 깊이로 지정합니다.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : 지원되는 타일 리소스 계층 수준을 유지하고 볼륨 타일 리소스가 지원되는지 여부를 나타내는 부울 VolumeTiledResourcesSupported를 보유합니다.
메서드
- ID3D12Device::CheckFeatureSupport: 현재 하드웨어에서 지원되는 기능 및 계층을 확인하는 데 사용됩니다.
- ID3D12GraphicsCommandList::CopyTiles : 타일을 버퍼에서 바둑판형 리소스로 복사하거나 그 반대로 복사합니다.
- ID3D12CommandQueue::UpdateTileMappings: 리소스 힙의 메모리 위치에 대한 타일식 리소스의 타일 위치 매핑을 업데이트합니다.
- ID3D12CommandQueue::CopyTileMappings: 원본 타일식 리소스에서 대상 타일식 리소스로 매핑을 복사합니다.
- ID3D12Device::GetResourceTiling : 타일식 리소스를 타일로 분할하는 방법에 대한 정보를 가져옵니다.