我记得当我看到关于 DirectX 12 的最初讨论时,我认为它消除了对纹理图集的需要。但是,现在我正在浏览文档,这似乎不是一个明显的结论。
我见过的一个可以替代它的功能是 HLSL 中资源数组的动态非统一索引:
Texture2D<float4> textures[128];
SamplerState sampler;
textures[NonUniformResourceIndex(textureIndex)].Sample(sampler, uv);
另一个潜在的功能是ExecuteIndirect
,它将仍然是一堆单独的绘图和资源更改调用编码到缓冲区,并在单个 CPU 调用中一次将其提交给 GPU。
这两个都将解决纹理图集的限制(无法在图集区域上使用边界模式,有问题的 mipmapping),但我想知道性能特征或预期是否类似于纹理图集,或者该技术是否仍然合理。
我也很想知道答案是否适用于 Mantle、Vulkan 和 Metal。