Key Changes Better configurator for nonlinear image warping and edge blending.

More robust multi-channel rendering with remote projection configuration.

Improved CIGI protocol support.

Improved generation of grass and clutters, increased performance, runtime modification.

Added distributed terrain generation for Landscape tool.

Improved UnigineEditor 2.

Overall engine improvements and bugfixes.

More C++ samples. This is mainly a maintenance release, consisting mostly of fixes and improvements, however, it introduces some new features. These improvements were showcased in the new 3-channel firefighting flight simulator demonstrated at I/ITSEC 2017 in Orlando, USA:

AppProjection

The AppProjection plugin has evolved with support for adaptive grid, complex-shaped masks, blend maps and C++ API. Configuration of nonlinear image warping and edge blending for multi-projector setups has become an easier task.

The complete list of improvements includes the following:

Support for adaptive grid, now it is possible to set an arbitrary number of control points.

Improved visual editor offers flexible tuning of warping parameters for each control point.

It is now possible to create and edit masks to cut certain regions out.

Added C++ API and a set of new methods (The complete list of API changes is available in the API Migration Guide).

You can see the updated AppProjection in action in 3-channel flight simulator demonstrated at I/ITSEC 2017 in Orlando, USA.

The interface of Projection Configurator has transformed and became more convenient, all settings are now displayed on different tabs.

Warp tab contains geometry correction settings. New adaptive grid lets you set an arbitrary number of control points along horizontal and vertical axes. Precise positioning and flexible tuning of warping parameters for each control point, provided by the improved visual editor, give you full control over the image geometry to fit the required screen configuration. You can also use the Render Debug option to temporarily set individual colors for different projections. This helps to visualize overlapping regions for different projections and facilitates the setup process.

Color tab contains color correction settings. Here you can set up color intensity, and adjust color balance for the selected projection

Blend & Mask tab allows you to configure edge blending and create complex-shaped masks to cut certain regions out. You can create and modify multiple masks using visual editor.

Current projection configuration can be saved to a *.proj file.

Syncker

After a huge revamp introduced in the previous release the Syncker plugin continues to evolve. Syncker options can now be changed via the Plugins tab of the system menu, displayed when the Esc button is pressed.

GUI View Configuration

Introducing new GUI view configuration for Syncker, making it possible to set up projections remotely on a Slave computer.

You can create any setup for your project by adding and adjusting views to be displayed by the Master and Slaves. For each view you can use a display or projector. After creating views you can set up required image warping and edge blending parameters for each of them. All changes are transferred over the network and applied automatically.

To configure projections on the Master or a Slave, open the system menu by pressing Esc, go to Plugins tab and enable Show projections configuration option.

For more information on setting up view configuration for Syncker please refer to the Configuring Projections for Syncker article.

The list of other features includes:

Improved integration with the AppProjection plugin.

Increased UDP read buffer capacity.

Removed ZLIB compression and added compression-free mode for packages.

Renamed the loadViewMesh() method to loadViewConfig(). View configuration file format has changed to *.sync .

. Added setSkipWorldMessages()/setSkipUserMessages() methods to block incoming packets on a slave.

CIGI Client

Improved CIGI protocol support with the following features:

Improved integration with the Syncker plugin.

Automatic synchronization of particles and skinned meshes inside an Entity.

Improved naming for new created Entities and Views.

Improved Generation of Grass and Clutters

Generation of ObjectGrass, ObjectMeshClutter and WorldClutter objects has improved, with the use of multithreading and other performance optimizations. Overall performance has increased significantly. Now it is possible to modify grass and clutters at runtime (cut trees and stamp the grass flat) via API.

The complete list of improvements includes the following:

Clutter generation is now performed in separate threads.

Optimized grass / clutter generation performance and improved update logic (no more jitter on parameter change).

Added new invalidate() methods for regeneration of grass / clutter cells.

Added bend parameter for ObjectGrass, that allows you to create bent grass.

parameter for ObjectGrass, that allows you to create bent grass. Added ObjectMeshClutter::getClutterTransforms() method, that makes it possible to obtain transformations for all clutter meshes. The precision flag indicates whether clutter transformations will be collected for meshes within bounds,or within clutter cells.

Added ObjectMeshClutter::setClutterExclude() method,that allows you to remove all the cells within certain area and skip their generation.

Added world_spawn_list console command to monitor generation requests for ObjectGrass and ObjectMeshClutter nodes.

Removed excessive ObjectGrass updates when a node is not visible.

Landscape Tool

The evolution of the Landscape Tool brings a number of new features and improvements.

Terrain generation is a complex task and may require a substantial amount of time depending on the area size and data resolution. Landscape Tool now enables you to use the advantages of distributed computing in the process of terrain generation. Generation time for large terrains can be significantly reduced, as the performance increases linearly for certain tasks.

For more information on distributed terrain generation please refer to the Distributed Computing article.

Roads generation has also become better. Terrain heights and masks can be adjusted for generated roads to provide better alignment and prevent vegetation from growing on the roads. This can be done in one click by simply selecting the Adjust terrain masks and heights option when setting up road generation parameters.

The complete list of improvements includes the following:

Added distributed generation (several PCs within the same network can work in parallel in order to speed up the process).

Improved roads generation. Terrain heights are now adjusted to generated roads.

Added billboards placement on the basis of vector data. This option can be used, for example, to simulate lights along the roads.

Added manual terrain LOD management mode, that allows you to edit the parameters of all terrain LODs, as well as to add new LODs or remove existing ones.

Added LZ4 compression for landcover masks to reduce disk space required for data storage.

Added multi-selection editing for landcover filters.

Improved precision of landcover masks to ensure correct vegetation positioning.

Removed landcover masks duplication, when objects use the same tag.

Fixed bugs with vector data source filters.

Fixed bug with assignment of landcover masks in cases when multiple grass/clutter objects are generated.

Fixed bug with generation of detail masks using multiple tags.

Editor 2

We continue our work on improving the new UnigineEditor 2 to make it even more convenient and powerful tool. The following improvements were made for this release:

Added support for per-node property modification.

Improved assets validation time. All *.asset files will have to be re-committed once , as hash values for all files will change.

files will have to be re-committed , as hash values for all files will change. Added progress bars for assets validation and reimporting at startup.

Improved GUI performance on operations with multiple objects.

Improved organization of UI elements in the Parameters window with a new Accordion widget. You can now collapse and expand groups of UI elements.

Improved structure and added tooltips for states, textures and parameters of the core base materials displayed in the Parameters window.

Overridden property and material parameters are now highlighted in green.

Fixed various issues with FBX support.

Added support for OBJ, 3DS and DAE (COLLADA) formats.

Added a Merge similar materials import option, that allows you to merge multiple identical materials with different names into a single one. This option is very useful for importing complex models from various CAD systems.

import option, that allows you to merge multiple identical materials with different names into a single one. This option is very useful for importing complex models from various CAD systems. Extended the set of supported image formats and added point filtering for imported textures.

Added support for rotation and scale to the Randomizer tool.

All assets in the Asset Browser are now sorted by name.

Asset names are now displayed in the fields of the Parameters window instead of the names of runtime files.

The contents of the NodeReference tab of the Parameters window are now merged into the Node tab.

NodeReference content is now automatically selected when Edit button is clicked.

Fixed applying changes to nested NodeReferences.

Improved usability of the FieldHeight attenuation slider.

Added undo/redo for grass and clutters mask editing.

Fixed incorrect object movement with snapping enabled.

Editor configuration file is now stored in the following folder: C:/Users/<USER>AppData/Local/Unigine/Editor/ (Windows) ~/.config/Unigine/Editor/ (Linux)

Other bugfixes and UI improvements.

Editor1

This is the last release with Editor1 support, it is considered obsolete and will be removed in the next release. The following fixes were made for the old Editor:

Fixed wrong behavior of height picker in terrain brushes with chunk step values higher than 1.

Added support for new materials to the Node Export plugin.

Samples and Demos

Added the following samples into Samples 2 suite: Unlit materials. Clouds coverage texture. Field weather.

suite: Oil Refinery Demo: Improved UI. Added new quality presets.

Oil Platform Demo: Added cinematic demo mode. Improved UI. Added new quality presets.



TerrainGlobal

Improved intersection detection. Added ObjectTerrainGlobal::setForceIntersection() method, that enables/disables forced loading of necessary terrain tiles to ensure correct intersection detection. When enabled, this option may significantly reduce performance. Thus, it is recommended to enable it, perform intersection check, and disable it again.

Now it is possible to add new LODs atop of the most detailed one. This feature can be used for creating high-detail insets with brushes or via API.

Improved Brushes UX.

Asset system now supports terrain detail arrays.

Fixed crashes with LODs removal in cases when vegetation objects present on the terrain.

Fixed incorrect brushes projection when viewport camera is locked.

Fixed bug when terrain mask list was not refreshed after terrain re-generation with the Landscape Tool.

Renderer

Improved the billboards_base material, now it is possible to use billboards to simulate various types of specialized lights. The list of key improvements includes the following:

Added geometry inflation allowing the user to limit minimum billboard screen size (in pixels) to a fixed value in order to provide visibility from far distances.

Added billboard size scale.

Added horizontal and vertical angle limits (negative Y axis will be selected as forward axis) for angle-dependent visibility.

Added haze support for emission pass.

Other changes:

Fixed instanced omni lights in OpenGL.

No more driver crashes on shader errors.

More robust shader cache generation.

Removed various shader warnings.

File System

Added support for all package types (ung, zip, custom) for the extern_package startup argument.

Improved paths stored in guids.db (they are now relative to data path).

(they are now relative to data path). Improved GUID error logging.

Improved path resolution for Linux.

Fixed crash caused by an empty .ulink file.

file. Fixed AsyncQueue crash on the world shutdown.

Other Improvements

Fixed camera update order and speed.

Fixed Visualizer, now it works in all App* plugins.

Improved RenderManager and WorldManager performance.

Increased the limit for the number of field objects, that can be added to the world up to 512.

Added *_base_error materials for different Node types to highlight them in red, when their material was not loaded for some reason.

materials for different Node types to highlight them in red, when their material was not loaded for some reason. Added support for float formats to Image::blend() method.

Added support for color and indexed 16-bit TGA images.

Added an 'unknown world script' warning for a missing world script file.

Added a "Screenshot" C++ sample: source/samples/Api/Render/Screenshot

API

Added missing getParameterSliderLog10() method and a set of new ones to the Property class.

Added getFocusedAxis() and isFocusAxis() methods to the WidgetManipulator class

Added setSegmentEndTangent(), setSegmentStartTangent(), setSegmentEndUpVector(), and setSegmentStartUpVector() methods to the WorldSplineGraph class to simplify spline management.

Added itos() and stoi() functions performing int to scalar and scalar to in conversion to math common functions.

The complete list of API changes is available in the API Migration Guide

SDK Browser

Running your project via the SDK Browser with the Editor loaded has changed.

Clicking Edit Content will only launch the Editor, you will have to load the world manually via the console or via the File -> Open World in the main menu of the UnigineEditor.

Documentation