The SilverLining Sky, 3D Cloud, and Weather SDK now includes experimental Direct3D 11.1 support in version 4.027. This means applications targeting DirectX 11.1 (requiring Windows 7 or newer) can use SilverLining without introducing dependencies on the June 2010 DirectX SDK or on the D3DCompile DLL’s for runtime shader compilation.
Using the DirectX 11.1 API’s does require at a minimum Windows 7 and the Windows 8.1 SDK. In SilverLining, all you need to do is specify DIRECTX11_1 as the renderer when calling Atmosphere::Initialize().
Although SilverLining has supported DirectX 11 for many years, supporting 11.1 required substantial code changes. As such, we consider this support experimental for now – we’ve tested it as well as we can, but there may be quirks we haven’t yet discovered. If you do run into any trouble, please let us know at email@example.com.
Moving to D3D 11.1 required us to:
- Eliminate dependencies on the DirectX 11 Effects framework, forcing us to re-write all of our .fx shaders as individual .hlsl shaders
- Eliminate run-time shader compilation, forcing us to write a “DirectXShaderAnalyzer” application internally to compile our .hlsl shaders to .cso files, and write out associated files mapping uniform names in the shaders to their offsets and sizes within each shader’s constant buffer, which SilverLining uses at runtime.
- Eliminate all calls to D3DX interfaces and replace them with alternate calls from the DirectXMath framework
- Explicitly set up sampler state objects for each shader, instead of relying on the Effects framework to do that for us
It was a lot of work, but it enables us to eliminate any runtime dependencies other than what comes out of the box in modern Windows installations.
Of course DirectX 12 is available now as well; for now, it is possible to run DirectX 11 code within a DirectX 12 environment, so SilverLining can still operate within a DX12 application. If you are using DirectX 12 however, please let us know – it will help us figure out the right priority for developing native DirectX 12 support.