I remember when I saw the initial talks on DirectX 12, I thought that it eliminated the need for texture atlasing. However it doesn't seem as obvious a conclusion now that I'm going through the documentation.
One feature I have seen that could replace it is dynamic non-uniform indexing of resource arrays in HLSL:
Texture2D<float4> textures[128];
SamplerState sampler;
textures[NonUniformResourceIndex(textureIndex)].Sample(sampler, uv);
Another potential feature is ExecuteIndirect
, which encodes what still are a bunch of separate draw and resource changes calls to a buffer and submits it to the GPU at once, in a single CPU call.
Both of these would address the limitations of texture atlases (inability to use border modes on atlas regions, problematic mipmapping), but I'm wondering if the performance characteristics or expected to be similar to texture atlasing or if that technique is still justified.
I'm also curious to know if the answer generalizes to Mantle, Vulkan and Metal.