The code is far from finished at the time of writing. But the direction where we’re heading to is already quite clear.
You can even glimpse a bit of what’s coming:
uniform sampler2DArray texDiffuseMap; uniform sampler2DArray texNormalMap; uniform sampler2DArray texSpecularMap; uniform samplerCubeArray texEnvProbeMap;
Yeah, we’re going bindless in 2.0.
The HLMS is being developed (High Level Material System) will generate shader code for you based on a template. You can create your own templates or modify existing ones; though probably the less experienced users will just not change it as the default template we’ll be embedding uses Cook Torrance, reflection probes, energy conserving, and in linear space (Physically Based Shading, or PBS for short).
In other words the defaults will look really pretty.
But so far the biggest problem holding us back is DirectX 9. I’m strongly considering on dropping it. Ogre 2.0 is already targetting DX 10 hardware for DX9 (i.e. rely on good VTF support). GL 3.3 support is very decent by now, and it is supported in Windows XP; whereas you can choose between DX11 & GL 3+ in Windows Vista/7.
But DX9 doesn’t support texture arrays, which can cause a huge API bottleneck (not to mention more advanced features). Having to support 3 APIs is very time consuming. Specially when one of them largely differs from the other two.
Supporting ES 2.0 is not a big headache because it’s already constrained in many ways, so using non-array textures isn’t that big of a deal. The template shaders for ES 2.0 will also probably be much smaller.
So that’s why. DX9 will probably not make it to 2.0