The latest update brings improved voxel GI, forced shaders compilation, water performance optimizations, stabilization, and more.
UNIGINE 2.7.1 has been released! The latest update brings improved voxel GI, forced shaders compilation, water performance optimizations, stabilization, and more. Let’s study it in detail.
Below you can find a breakdown of the update from UNIGINE team:
- Forced shaders compilation
- Improved voxel GI
- Water performance optimizations
- Improved support for large-scale models
- Improved editor UI
- Experimental HLA protocol support
- Added support for HTC Vive Pro
- Overall engine improvements and bugfixes
Although this release is mainly a maintenance one, it also introduces some new features.
Forced Shaders Compilation
Precompilation of all shaders is an important feature that guarantees, that at the time your project is completed and final builds are ready to be handed over to customers, you will have a complete shader cache. This significantly reduces the number of freezes in the final release build and smooths your application’s framerate.
You can use it in one of the following ways:
Constant background precompilation
When this button is enabled, each time you create a new material, you’ll see the following message on shader compilation in the viewport:
This option guarantees, that you always have a complete shader cache for the selected graphics API.
Precompilation on demand
Sometimes constant background compilation of shaders may disturb and slow down your work, this is typical for some engines. UNIGINE lets you disable shaders precompilation. You can enable it just before measuring performance of your final build. This mode is recommended for graphics programmers to save time on recompilation when changing states of materials.
For more detailed information please refer to the Forced Shader Compilation article.
The option described above required some other changes to be made.
- Some rendering settings parameters (gbuffer, shading quality, render parallax) affected global shader defines which resulted in re-compilation of all shaders. We removed such parameters from rendering settings to make shaders globally world-independent.
- Removed all toggles for buffers from the Rendering -> Buffers menu (except for Auxiliary and Color16f)
- Shadows options via Rendering -> Shadows menu now affect only opaque objects. All corresponding shadows settings for transparent objects (such as Soft Shadows, Lerp Cascades, Omni Jitter etc.) are now adjusted per-material via the new Shadows group in the mesh_base material, which becomes available as you make your material transparent. Transparent objects are rather resource consuming, thus, having an ability to tune them separately enables you to squeeze more performance from your project (gives you more room for performance optimization)
Improved Voxel GI
Voxel Probe lights now support additive blending mode. This option offers more flexibility in lighting control. You can use it to blend lighting of several voxel probes together and control them separately (e.g. make a separate voxel probe for an indoor emissive light source and blend it with another voxel probe with lighting baked from the sky, having the ability to enable and disable them separately).
Please note, that Voxel probes with additive blending enabled cannot be used as insets to add lighting details (e.g. creating a small high-detail voxel probe inside a large low-detail one). Such probes do not replace each other, as they are blended instead.
You can also use Voxel Probes to bake lights for illuminating your scene at night time instead of using standard light sources. This approach significantly improves performance and was used in the updated Oil Platform and Oil Refinery demos.
Added an ability to control baking of all types of light sources (World, Omni, Proj, Voxel Probe and Environment Probe) as well as lighting from the sky and emissive materials into a Voxel Probe. This feature is available via the corresponding visibility options, which can be used together with additive blending to provide more flexibility in light baking. Thus, you can make voxel probes independent of each other and combine them to produce some sort of dynamic GI effect. E.g. you create a room with several lights inside and light coming from the outdoor environment, being able to turn them on and off individually in any combination.
Improved Sun Color Influence
Improved logic of the UseSunColor option. To bake lighting from the sky separately, it is recommended to enable baking visibility for the sky only, while disabling it for other light sources.
Improved Support for Large-Scale Models
As UNIGINE supports huge worlds, large-scale models are often imported (e.g. a road network or a city represented as a single mesh). While UNIGINE works with 64-bit coordinate precision for placing objects, each individual mesh uses 32-bit precision for coordinates of its own vertices (starting from a local origin, pivot point). To compensate that, a set of new useful options for geometry import was added.
Split by Grid
Very large meshes (more than 10000 units) can be splitted into multiple separate ones. To do so, just enable the Split by Grid option and set the size of the grid cell to be used for mesh splitting. Note, that this option does not split surfaces, they are always treated as a whole.
Repivot to Center
The same types of artefacts (jitter, etc.) can be eliminated for meshes having their geometry located too far from their pivot. Use the Repivot to Center option to place the pivot point of the generated mesh to its center.
Skip Empty Nodes
Complex CAD models may contain a lot of empty nodes, resulting in an overloaded world hierarchy. You can enable the Skip Empty Nodes option to ignore them.
Water Performance Optimizations
We refactored water and improved overall performance giving you more options to tweak it even more. Calculation of normals was improved and became 25% faster.
Optimized Field Shoreline, now it is more performance-friendly.
Water performance tuning has become more flexible with a set of new states of the water_global_base material, which can be disabled where possible to gain performance:
- rendering of wave geometry available via the Normals and Geometry states
- smoothing of caustics available via the Caustic Distortion state
- rendering of foam for shoreline areasavailable via the Foam state
- improved interpolation between the adjacent pixels of the shoreline texture used to reduce stepping artifacts when looking at the waterline available via the High Precision state
Thus, you can simulate shoreline areas, viewed from a plane, by just enabling the foam effect while disabling geometry, caustics and improved interpolation as they are hardly noticeable with a significant increase of performance.
AppProjection Configuration Improvements
Advanced Warping Control
Projection setup has become more convenient. Now you can simply connect a laptop computer to a complex multi-projection setup and configure projections in just a several minutes using your keyboard only.
This is possible as we added keyboard control for warping settings. Now you can switch between control points using arrow keys and move them with the Ctrl key pressed. Adjustable screen parameters enable you to control each point of your projection with a pixel accuracy. You can also increase and decrease displacement amount to be used when moving points with arrow keys via A and Z keys respectively. Points are now moved in screen space coordinates regardless of image orientation (whether it is flipped or not), this means if you press left arrow – the point always goes left.
Added visualization of warping grid on the screen which significantly facilitates the process of debugging configuration of a multi-projector setup, this option is available via the Show Grid button.
You can now choose whether to display certain blend mask or not or change mask color, this can be used to configure overlapping regions and perform some color and brightness corrections while monitoring the final result.
Improved the structure of sections in the Settings window and added a lot of functions that were previously available from the console only to UI. Updated description of all available parameters and options including new ones is available in the Settings and Preferences section of UnigineEditor documentation.
Finding your assets has become much easier with a new Search option in the Asset Browser, just start typing its name, all matching assets will be displayed as you type.
The list of other improvements includes the following ones:
- Improved content validation time for project with large number of objects (30k+)
- FBX import:
- If you have an FBX file containing skeletal animation without any geometry, you can now import it to your UNIGINE project and use generated .anim files.
- Non-skinned bones can now be imported. Often it is necessary to use non-skinned bones stored in an FBX file just to attach other objects to them and animate these objects via bones, now it is possible via the Import Bones Without Skin option. Updated Soldier demo can serve as an example demonstrating this feature: the rifle is attached to the soldier via the WorldTransformBone node attached to a bone having no bindings to any skin vertex.
- Added the Correct Triangulation option that enables correct triangulation of meshes, NURBS and patches. Disabling this option decreases import time, but may lead to triangulation errors resulting in incorrect geometry.
- Fixed importing of FBX assets with mesh names containing reserved characters.
- Fixed updating of Node Reference instances in real time. Now, if you change an instance, other ones will be updated automatically without reloading a world.
- Improved Terrain Global UI – now you can enable/disable LODs and Details.
- Extended the list of objects that can be used by Randomizer: you can specify .node or .mesh files produced by FBX assets or FBX assets themselves. In the latter case, the .node files generated for the specified FBX assets will be used.
- Added the Visualizer Mode option to the Helpers panel. It allows switching between 3 modes of the visualizer via UnigineEditor interface.
- Improved primitive creators: increased decimal places for parameters values, the minimum value is set to 0.001.
- Fixed resetting of node selection when selecting files in the Asset Browser. Now, if you select a node or a surface and then select an asset in the Asset Browser (for example, a material to drag and drop to the selected node), the node/surface remain selected.
- Maximum texture size for which a preview will be generated in the Asset Browser is now limited to 257 MB.
- Fixed issue with replacing mesh in the ObjectMeshStatic/Skinned/Dynamic nodes. Now the list of surfaces is updated automatically after replacing the mesh.
- Fixed crash when specifying incorrect mesh name for ObjectMeshSkinned node.
- Fixed viewport controls freeze after node deletion.
- Improved assets importing: the last opened folder will be shown in the file browser window after clicking Import.
- Various minor bugfixes and improvements.
A number of features was added to the Landscape Tool making it more convenient.
The UNIGINE Team
You can find the full breakdown here.