Originally Posted by
Rob Wyatt @ Tin Giant LLC
Major changes:
Updated to DX11.1 (from DX10)
We have found great technical solutions to performance issues, resolving most of the troubles we previously had, but this necessitates the update to DX11.1.
Technical notes:
Removed texture samplers being created on the fly. Every material texture has its sampler state prebuilt and included in the material texture. This is passed all the way through the DX11.1 renderer. Textures that don’t use materials but instead use the game render state system have the samplers cached for most states Please note: there are some states that will use the old code path and create samplers on the fly. For 99% of textures, this is not the case. This removed thousands of API calls from the draw threads.
Vertex shaders have been optimized so all constants are in a single buffer, other than ones which remain in their own buffer. This makes the shaders more efficient and also means there are fewer API calls to set the constant state as we now set one buffer instead of 5-10 per draw call.
Now that vertex shader constants are set in a single block, they can be allocated from a heap in constant buffer format and set all at once. There is a single buffer at the start of the frame and the ‘UpdateSubResource’ calls per draw call have been removed. This is what requires DX11.1.
Bookmarks