Improved data streaming, KeyLine and new upgrade system
What's new:
- Smart data streaming: textures shows 64x64 mipmap (those miniatures are always loaded in memory) before fully loaded, meshes are rendered when loaded.
- Separate thread for data loading, which allows smoother data loading in the background without stalls.
- Loading queue can be controlled by a set of filesystem_* console variables.
- Improved warming up of shaders on world loading.
- manager_preload_* console variables renamed to render_manager_load_*.
- New formats of meshes: static meshes store their boundings for faster preload, plus there is a more effective data compression for both static and skinned meshes (warning: you must convert your data in order to work with this version, see notes about upgrade system below).
- meshupgrade console tool for converting all meshes into new formats.
- Fixed light masks for LightSpot sources.
- Refactoring of mathlib, some Fast* functions removed.
- Correct interpolation for negative frames in MeshSkinned (also added getFrameCurrent() function).
- Per-bone weight normalization for animation.
- New framework for plugins.
- MeshSkinned import plugins for 3dsMax and Maya.
- Contact toggle for WorldTrigger.
- Added array.find() function with two arguments in UnigineScript, returns second argument if nothing found.
- engine.splash.renderSplash() function renamed to engine.splash.renderInterface().
- Added addLayer() function for MeshSkinned without flushing data on other layers.
- Added engine.memory.* set of functions in UnigineScript library.
- Static 2D reflections (reflection_dynamic state in water_base and mesh_reflection_2d materials, static by default).
- MeshViewer shows basis and name for bones.
- Removed support of Intel compiler and MinGW.
- Quadratic exposure mode for HDR (set render_hdr console variable to "2").
- Improved class casting in UnigineScript, Foo(input).function() syntax is supported now.
- Support of Linux 64 bit with cross-compilation (use "scons cross=x86" or "scons cross=x64" depending on base platform).
- Versions of XML data (world, node, mat, prop, ui) can be different from this moment.
- New data upgrade system.
- New KeyLine system for key sequences, see "Programming / UnigineScript / Scripts / KeyLine Script" section of the manual for more information.
- Updated C++ API documentation and reference manual.
KeyLine system handles arbitrary key sequences and takes care of interpolation between key values, providing
GUI for data manipulation as well.
It is a somewhat data-driven system, meta-information is stored in the XML format.
Licensees can see how this system is used in new version of Tropics demo for dynamic environment control.
We also introduce a new one-button upgrade system, see 'scripts/Upgrade' directory in the SDK. Please note that it requires updated Unigine_Externs package installed and 'Unigine_Externs/bin' in your system's PATH variable. To perform batch meshes upgrade you should simply run "upgrade.py --target=PATH-TO-YOUR-PROJECT" from the command line.
PS: Don't forget to update your video drivers to recent ones (but be aware about some bugs in OpenGL with ATI), previous version from NVIDIA was very buggy.