Created new backwards-compatible Direct3D11 Renderer in default branch - replaces all existing Direct3D Renderers
Submitted by Lukas_M on
After some fundamental changes and overall refactoring of the rendering system of CEGUI during my last year's GSOC 2013, it was necessary to update all Renderers. Only the OpenGL and OpenGL3 Renderers were functional during the Google Summer of Code in my development branch. Afterwards I started working on the existing CEGUI Direct3D11 Renderer (which was not written by any core members) on the default branch of CEGUI and looked for general improvements of it. As previously announced in the forum I planned on removing the Direct 3D9 and Direct3D 10 Renderers. This decision was made after an excessive discussion with user "SomeDude". When I started working on the Direct3D Renderers I noticed that they contain a lot of boilerplate code and also I was very unhappy with the Effects library. A solution for this would have been to create our own Effects library which would solve a lot of issues for users. However, I realised I do not even need this and can just work with the low-level Direct3D commands and build up a similar setup as I have in the OpenGL Renderers. In the end I had a fully functional Renderer without any extra dependencies, light-weight and effective and also it is backwards compatible to Direct3D9 and Direct3D10. This means that although we only have the Direct3D11 Renderer in the default branch, we still fully support older hardware! The only downside is that you need to have Direct3D11 installed which is only possible on Windows Vista or higher. However, since the Windows' XP support officially ran out a while ago, we don't expect to have any XP users once CEGUI default branch will be released as the next major version of CEGUI - therefore we don't expect any issues. And we won't need the annoying Effects library in the future anymore, which could have potentially broken our setup in the future, and which users often had difficulties with!
TLDR: I removed D3D10 and D3D9 from default branch and made D3D11 backwards compatible up to feature set 9_1 ( "ps_4_0_level_9_1" and "vs_4_0_level_9_1" ). As a side-note: at this feature-set the max tex size (width and height) is 2048 so an imageset loaded may not be bigger than that. 9_3 allows up to 4096, so that works with all our current datafiles. CEGUI hardware support stays unchanged this way, but the Direct3D11 Renderer is required therefore Vista or higher is necessary.
- Lukas M. (Ident)