Sub-surface scattering, Qt integration, SpeedTree plugin
2011-05-30
Render:
- Added a screenspace sub-surface scattering postprocess.
- Support of a custom iris texture for DOF.
- Separate near and far focal ranges for DOF.
- Improved quality of bokeh (lens) DOF.
- Added a fullscreen DOF mode with per-pixel accuracy (very performance demanding): to activate, use "render_dof 3" console command.
- Support of a custom color texture for HDR lens.
- Different blending modes for the mask in mesh_noise_base material.
- Renamed states in sky material (use upgrade.py to upgrade your project files).
- All postprocesses are now applied as materials in the following order: as RenderMaterials (a pass after geometry is drawn and before any other postprocess, such as HDR, DOF, etc. is applied) or PostMaterials (the very last pass after all other postprocess; it is rendered after the Composite shader composes the viewport image).
- Obsolete render_antialiasing filter is now avalable as postprocesses material.
- Reduced memory consumption by meshes (if they are not used in physics or intersection calculations).
- Texture, vertex and index buffers are merged into a single one on PlayStation 3 (to reduce system memory consumption).
- Fixed the leaf shader in OpenGL (billboard leafs were not reflected properly).
- Added support of PVR4 image format (compression is performed via Daubechies6 wavelet).
- Refactored a set of "simple" shaders.
- Performance optimizations for PowerVR SGX mobile GPUs.
- Fixed LOD fading in reflections.
Sub-surface scattering in action on a character fromOil Rush strategy
game:
UnigineScript:
- Added get_function() that returns a unique script function ID (which can be used as an argument to call(), making it almost as fast as a direct function call).
- Correct checking for UserArray bounds.
- Added a "quat_identity" constant.
- Added a single-argument append() method for maps (only a key needs to be specified).
- Support of nested namespaces (namespace Foo::Bar::Baz {}).
- Fixed the incorrect behaviour of "+=" operators for array elements in some cases.
Sound:
- Added "Source" and "Reverb" masks for sounds and players.
- Added a 32-channel sound mixer: it can change the volume per sound group (determined by each bit of "Source" mask) and set the maximum limit of audible sources in a group.
GUI:
- Added the alpha version of Qt4 C++ plugin (it is currently in development, see below).
- VScroll and HScroll widgets are merged into Scroll.
- VSlider and HSlider widgets are merged into Slider.
- VSpacer and HSpacer widgets are merged into Spacer.
- Added intersections with primitives inside of WidgetCanvas.
- Correct parsing of XML entities in FontRich formatted text.
- Support of font alignment in Flash.
- Support of bold and italic fonts in Flash.
- Added namespace prefix as a parameter for UI loading.
Qt plugin at present supports almost all widgets. It can freely use both Unigine UIs and Qt ones:
- engine.interface.addUserInterface("unigine.ui")
- engine.interface.addNativeInterface("qt.ui")
The main purpose of the Qt plugin is to revamp and implement a new version of UnigineEditor with improved usability and the extended feature set.
Here is an example of a multi-window Unigine application with Qt4 widgets:
Tools:
- Added plugins for 3ds Max 2012.
- Fixed handling of NodeLayer in UnigineEditor.
- Improved validator in UnigineEditor (all referenced materials and meshes are checked for actual usage, added scanning of folders for unused resource files).
- New CLI options in imagedds.py: -ios (for compression of all necessary textures into PVR4 format) and -d (for changing the working directory).
- Restored export of nodes together with their materials in ResourceEditor.
- UnigineEditor saves its settings into a dedicated config (-editor_config CLI option).
- All postprocessing materials can be edited via UnigineEditor.
- Correct reloading of rope and cloth meshes in UnigineEditor.
- Added Tools->Plugins window in UnigineEditor.
Other:
- Added SpeedTree C++ plugin (import of meshes, auto-generation of materials). It can be used via Tools->Plugins window in UnigineEditor. To use it, you need to rebuild the plugin with your SpeedTree license key.
- Removed a "shift" particle emitter type; use a new "emitter shift" option instead (works with all types of emitters).
- "Random" particle emitter spawns particles from the polygon surface now, particles are emitted along the direction of polygon's normal.
- Refactored a "Passage" demo for mobile platforms.
- Extended a set of lookup functions in C++ API: isSystemVariable(), isSystemFunction(), isWorldVariable(), isWorldFunction(), isEditorVariable(), isEditorFunction().
- Added length2() method for C++ API vectors.
- Added C++ API functions for removing UnigineScript extensions.
- Added ObjectParticles::clear() method for clearing spawned particles.
- Fixed stalls on non-block sockets in Windows.
- Added a multi-threaded CPU framework (it can potentially replace EngineThreads in the future).
- Updated SDK installer for Windows.
Documentation:
- Online version of up-to-date documentation is available for customers via Unigine Developer Community from now on.
- Added description of Unigine::Ffp and Unigine::FileSystem classes in C++ API documentation.
- Updated "Execution Sequence" article; added information how to efficiently use world update() and flush() functions.
- Updated "Physics simulation" article.
- Updated documentation on Network Module (API and usage sample).
- Updated information on new DOF parameters ("Render Settings" article -> DOF).
- Added description of mesh_noise_base material.
- Added documentation on all postprocessing materials and how to apply them.
- Updated "Mesh File Formats" article.