볼륨 타일식 리소스(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 타일을 나타냅니다.
- Texture 3D 타일식 리소스 기본 매핑(가장 자세한 밉)
- Texture 3D 타일식 리소스 기본 매핑(두 번째로 자세한 밉)
- Texture 3D 타일식 리소스(가장 자세한 밉)
- 텍스처 3D 타일식 리소스(두 번째로 자세한 밉)
- Texture 3D 타일식 리소스(단일 타일)
- 텍스처 3D 타일식 리소스(Uniform Box)
텍스처 3D 타일식 리소스 기본 매핑(가장 자세한 밉)
타일식 3차원 리소스
텍스처 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;
3차원 텍스처
텍스처 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;
단일 타일식 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 : 바둑판형 리소스가 타일로 분할되는 방법에 대한 정보를 가져옵니다.