Requested Features and Enhancements Implemented in Prepar3D v2.2
At a very high level, the Prepar3D v2.2 update has the following updates and addresses the following issues:
- Autogen out of memory crashes
- The inclusion of the v2.1 panels 'hotfix' that reverted changes to the ContentErrorLogging system that caused previously compatible aircraft to not work
- New cloud shadows feature as well as several new shadow system optimizations
- A new sample for the Prepar3D Development Kit (PDK) API - Oculus Rift integration
- Native radar support for Prepar3D developers
- A redesign and refactor of the legacy Flight Recorder system
- A new FlightInstructor mode for SimDirector, as well as several other SimDirector enhancements
- Several other community and developer issues resolved
Autogen Re-ArchitectureThe instancing system for trees was given a massive overhaul to improve memory usage, to increase performance, and to reduce stutters. The system (VAS) memory footprint per tree was reduced from 276 bytes to 16 bytes (that is a 17x reduction in system memory per tree). Some of the work previously done each frame was completely eliminated while other work was reduced or moved onto background threads and the GPU (graphics card). Visually, trees can now LOD (Level of Detail) in progressively while still scaling in to prevent popping. Random rotation of trees was also fixed, which means that trees will be more varied looking and will again load in at the full density near the camera. A max autogen default flight has had it's system memory reduced by over 550 megabytes!
Cloud Shadows and Shadow System ImprovementsThe biggest challenge we faced in shadow mapping the clouds is similar to the challenges we face with ground shadows. It stems from Prepar3D having very large viewing distances and the requirement to cover that view distance with enough shadow map texture coverage. It becomes a balancing act of performance and memory sacrifices to achieve acceptable visual fidelity. One big challenge of clouds in particular is clouds were not created with shadow mapping in mind and they rely on being blended into the image without writing depth. However, most modern shadow mapping techniques rely on the depth information to resolve if an object at a given depth is in shadow or not inside the pixel shader. These techniques require bounding volumes to be created around shadow receivers that project the range of these depth values between zero and one in DirectX applications. This could not be done easily for clouds, due to optimizations that are being done for the ground shadows bounding volumes, without losing quality on the ground shadows. So we're required to use a multiple channel resource to determine things like the depth and alpha of the current cloud per pixel inside the bounding volumes. We've found ways of reducing ground shadow only memory and having cloud shadows on will be equivalent memory usage to before v2.2. Cloud shadows do come with increased GPU work, which comes from having to render the clouds into multiple shadow maps and evaluating that information per pixel for the scene. Because of this, cloud shadows may cause a FPS hit on lower end graphics cards, which may already be pixel shader bound, but should perform well on most modern graphics cards.
See the Lighting Settings page for more information about cloud shadows and how to enable them.
A New Recording and Playback SystemThe new recording and playback system was developed around the idea of giving instructors, developers, and users the power to record and playback data that is relevant to their training scenario. The goal was to convert the traditional flight recorder into a tool that could be used as an after action review of training scenarios. With that goal in mind, the flight recorder was overhauled and updated. It is now a full simulation recorder. The new system will record and playback more capabilities and interactions; no longer is it just the user's flight position. For instance, the new record and playback system has support for mission features, air traffic, boats, ground vehicles, weather, weapons, and a swath of other simulation capabilities. The user will be able to specify what simulation variables, along with what gauge variables, to record and playback. A new playback control window has been developed that displays relevant recording information. It allows users to play/pause, change simulation speed, and select bookmarks. Bookmarks are a completely new feature that allows seeking to a specific location of a recording. They can be inserted in recordings by creating checkpoints (AutoSaving) in missions.
See the Simulation Recording and Playback section for more information about the new Simulation Recorder.
Oculus Rift Development Kit Integration SDK Code SamplePrepar3D v2 introduced a very powerful interface for developers, the Prepar3D Development Kit (PDK) API. The Prepar3D Development Kit (PDK) API is a service provider for obtaining services to the Prepar3D platform. The PDK functions similarly to SimConnect but is tied into Prepar3D at a lower level, which allows better performance and more direct interaction. Unlike SimConnect, there is not a network interface for PDK plug-ins as they must be developed as in-process dlls. Data can be injected into and received from the simulation by interfacing with a user-written .dll. Uses for the PDK include creating custom SimObjects, adding custom textures and post-processes, and modifying cameras. We have added a new sample to the SDK to show the power of the new PDK API by integrating Oculus Rift support through the new PDK. This example and code sample is available in the v2.2 SDK and allows those users with Oculus Rift Development Kits to use them with Prepar3D v2.2.
Native Radar Support for Content DevelopersPrepar3D now provides an air-to-ground radar simulation and visualization. Because every radar system is different, it is provided as a highly configurable service which can be controlled via C++ plug-ins and XML gauges. Some examples of controllable parameters are Range, Sweep Angle, Sweep Rate, Zoom Level, Image, and Data resolution. Some of the advanced capabilities of the Prepar3D radar include accurate radar shadows, far-shore-enhancement, and Doppler-beam-sharpening. Also, we developed the radar service entirely through our SDK to showcase the power and flexibility that 3rd party developers have when developing content specifically for Prepar3D v2.
See the Radar Simulation and Visualization Service page for more information.
A New FlightInstructor Mode for SimDirectorWith the SimDirector mission creation tool introduced in Prepar3D v2, instructors and trainees both could rapidly create rich training content faster than ever in Prepar3D. The virtual instructor modes allowed the creation of in-cockpit learning and training scenarios, but it was hard to create graded maneuvers and graded flight segments. SimDirector's new FlightInstructor mode now makes it easier than ever to rapidly create graded flight segments, so that instructors and trainees can create, grade, and debrief flight segments and flying maneuvers in real-time. If you haven't looked into the extremely powerful, yet easy to use, SimDirector mission planning tool in Prepar3D v2 yet, access SimDirector from your Flights menu to see what you've been missing out on. SimDirector is included in every copy of Prepar3D v2.
Other issues resolved:
- Resolved an issue where force feedback joysticks would not continue to rumble after an initial vehicle crash
- Resolved a backwards compatibility issue where DTX 5 vegetation would flicker in several Orbx add-ons
- Resolved a backwards compatibility issue with the airport lighting in Aerosoft airport add-ons
- Resolved an issue where aircraft labels were not being drawn at the distance that was expected
- Resolved an issue where ground visibility was limited to 50 miles
- Resolved a crash where constantly spamming the pause and unpause in certain add-on aircraft could crash the Prepar3D sound system
- Resolved an issue where AI aircraft could swap texture sets
- Resolved an issue certain stock airports were not rendering their taxiways
- Resolved an issue where the modeling tools would not respond to EventID and CallbackJumpDragging tags
- Threaded out several jobs to help prevent stutters in rendering the autogen systems
- Resolved an issue where trees would render in and out with the camera rotating
- Resolved a legacy issue with setting brake SimVars via SimConnect would not work as documented
- Resolved an issue where render to texture views were not scaling correctly in 2D panels
- Resolved an issue where IR views showed the sun as large squares
- Disabled AA on clouds, particles and faded edges
- Added additional sliders to the lighting settings page to independently control terrain and shadow draw distances