Prepar3D v2.0 Developer Blog – DirectX11

As many of you are aware, since the release of Prepar3D v1.4, and even earlier actually, parts of our development team have been working on Prepar3D v2.0. With Prepar3D v2.0 coming out later this year, it has many new and exciting features which we will begin to highlight in developer blogs, and the spotlight of this first developer blog will be on Directx11.
The core rendering engine in Prepar3D has been completely overhauled and updated from DirectX9 to DirectX11. The biggest benefit to this is that now Prepar3D is able to better take advantage of modern graphics hardware. In a nutshell, upgrading your graphics card will now increase either your performance or the fidelity of what you are able to see in the simulation. It also allows us to implement new and modern rendering features.
Regarding performance, I’ll briefly talk about some of the features of DirectX11 and how taking advantage of them in Prepar3D v2.0 will allow for a better simulation, training or learning experience.
Object Instancing
Instancing allows the rendering system to have graphics cards draw multiple copies of the same object at once. This is most noticeable where many of the same objects are displayed multiple times. A great example of this is in the autogen trees. With the right video card, be ready to max out those autogen sliders with much less impact to performance. Not only do trees perform better, they also transition in smoothly rather than popping in. The system can actually instance model parts such as wheels and switches too.

Tessellated Terrain on the Graphics Card
The previous work being done to generate the terrain and its mesh is now able to be done dynamically on the graphics card. This allows two very noticeable differences, the ability for fully dynamic day and night cycles, and greatly improved terrain paging performance.
With the terrain lighting now able to be done dynamically on the card, shadows and lighting are updated in real-time, whereas previous shadows and lighting had to be baked into the textures and reloaded as the time of day changed.
Multi-Threading Support
Multi-threading essentially allows more work to be done on background threads as opposed to the main processing thread. In Prepar3D v2.0 we are now able to do optimization in parallel on background threads, as well as perform shader compilation on background threads which in addition to the tessellated terrain helps to greatly reduce those stutters so many people were seeing in the legacy engine as the CPU tried to page in all that terrain and all those textures.

GPU Particle and Effect System
Effects are now simulated on the graphics card. Training scenarios with many more effects rendered in the scene are now possible.
As I mentioned before , with more of the work being done now on your graphics card, we are able to open up new rendering features for v2.0. In the future with each point release we can now more rapidly and easily update and add new visual features as well.
Real-Time Shadows and Lighting
Prepar3D v2.0 now has support for fully dynamic variance cascaded shadow maps. The Prepar3D shadow system is fully customizable, including configuration
of the number of shadow cascades, their draw distances, and their logarithmic spacing. We of course simplify all of these things into a handy slider, but the options to tweak the shadow system to your heart’s content is there. Some of the other shadow system features we are excited about include full support for object self-occlusion,

including virtual cockpit self-shadowing, the terrain being able to receive and cast shadows in real-time, as well as day and night and weather support. Seeing the moon or lightning affect the shadows in the virtual cockpit really adds to the immersion. Regarding everyone’s favorite request for cloud shadows, we are working on them, and if they don’t make it in for v2.0 we will get them in for v2.1, but we’re hopeful to have them in for v2.0.
Regarding lighting, one of the biggest features we have implemented is the support for specular terrain lighting. What that means is that land classes now support specular values that will affect how they reflect light (snow and roads now reflect light differently, snow is shinier, etc.). Another lighting feature is a redone bloom system and a new HDR lighting system which better simulates the effects of lights on your eyes as you train. The new HDR system includes both a more realistic bloom model, as well as dynamic tone mapping, which adjusts the color palette of the screen based on the overall brightness. This means that when you are in a virtual cockpit the outside will appear much brighter than the relatively dark cockpit.
3-D Waves and Water Surface
While in v1.0 of Prepar3D we added the bathymetry feature to allow users to simulate and train under the water surface, our water surface was still flat. We now have support for a vibrant new 3D living water surface. Dynamic 3D waves are based on weather conditions and wind speed. SimObjects like boats and planes have more options to calculate their normal so with a little updating they will be able to realistically flow and rock on the waves.




Volumetric Fog

The fog and cloud system also got a new feature with the ability to now have volumetric fog. This greatly improves the appearance of flying through fog.
While these are only a few of the highlights of moving the legacy rendering engine to DirectX11, upgrading the platform so that it can scale to take advantage of modern graphics hardware is a big milestone for the platform, and one we are very excited about.
As always, thanks for your interest in and support of Prepar3D. Our development team actively monitors our support forums for feedback and feature requests.
I have also created a thread on our forums, where you can discuss this developer blog and interact with Beau Hollis, our Rendering Engine Lead and his very talented development team. We have a lot of features and fixes we are still working on for v2.0, so give them some time to respond if you have questions.
Wesley Bard
Software Manager, Prepar3D Development Team
Oh, and one more thing…
