Table of contents: Recent news: 2017-02-06 UNIGINE 2.4: New Multi-Layered Volumetric Clouds, New Terrain, Oil Refinery Demo 2016-09-19 UNIGINE 2.3.1: Landscape Optimizations, Compute Shaders Support, Renderer Optimizations 2016-08-05 UNIGINE 2.3: Round Earth, Shoreline, New DoF and GI, HTC Vive Support 2016-04-07 UNIGINE 2.2.1: Orbits Demo, Water Improvements, Oculus CV1, and Bugfixes 2016-03-17 UNIGINE 2.2: New Geometric Water, Unified API, Geodetic Improvements 2015-12-10 UNIGINE 2.1.1: UUSL Improvements, SDK Browser Usability, and Bugfixes 2015-11-20 UNIGINE 2.1: New Sky, Increased Depth Precision, Improved AA, Optimizations, Bugfixes 2015-10-09 UNIGINE 2.0: Fully Deferred Rendering, TAA, Data Streaming Improvements, Performance Optimizations 2015-06-25 UNIGINE 2.0 Release Candidate: IDE Integration, PBR Improvements, Bugfixes 2015-04-23 UNIGINE 2.0 Beta 2: PBR Support, Renovated SDK Browser, Add-Ons System, Kinect 2 and VRPN

UNIGINE 2.1.1: UUSL Improvements, SDK Browser Usability, and Bugfixes

Key Changes

  • Added Port Angeles demo
  • Improved UUSL consistency
  • Extended C++/C# API
  • Added Grass and Clutter samples
  • Bugfixes

This is mainly a maintenance release.

Port Angeles Demo

We introduced the Port Angeles demo at SIGGRAPH Asia a year ago, and now it is available for download to all UNIGINE Pro and UNIGINE Sim customers via the SDK Browser. The demo has the following features:

  • Highly detailed terrain (2500 square kilometers) based on real geospatial data
  • Road network based on vector geodata (OSM)
  • Dynamic sky with volumetric clouds and a day-night cycle
  • Multiple interactive modes
  • Airfield illumination

We suggest the following (or better) hardware for the best experience in this demo:

  • CPU: Intel Core i5-4670 (Haswell 4th generation) or faster
  • RAM: 8 GB
  • GPU: NVIDIA GeForce GTX Titan / 780 or faster
  • VRAM: 3 GB
  • SSD disk, at least 10 GB free space

Renderer

  • Added the following console commands for better SSAO control:
    • render_ssao_resolution renders SSAO in half (0) or full (1) resolution.
    • render_ssao_cavity disables (0) or enables (1) cavity.
    • render_ssao_quality sets the SSAO quality: 0 - use 4 samples, 1 - use 8 samples, 2 - use 16 samples, 3 - use 32 samples.
  • Improved shadows performance.
  • Fixed emission compensation for sRGB.
  • Fixed fading for LightOmni and LightProj sources.
  • Removed the render_rwtextures console command, the USE_RW_TEXTURES define should be used instead (enabled by default for Windows/Linux, disabled for OS X).
  • Changed noise pattern for shadows.
  • Removed the render_optimization_cleargbuffer and render_optimization_normalbuffer console commands, these are now always enabled.
  • Fixed central screen rendering for AppSurround mode with TAA enabled.
  • Changed the render_show_textures behavior:
    • 0 - all buffers are hidden.
    • 1 - shows a few most important targets, including G-buffer, refraction, SSAO, etc.
    • 2 - shows all rendering targets.
  • Fixed water rendering in stereo mode.

UUSL Improvements

Unified UNIGINE Shader Language (UUSL) has been improved in terms of consistency and ease of use.

  • Added the ability to pass textures to functions as arguments:
  • Removed TEXTURE_DEFERRED_RECT() and TEXTURE_LOAD_ZERO() textures.
  • Removed NOISE_FLOAT() function.
  • Added a bunch of intrinsic functions:
    • getViewDirection() returns the current viewing direction.
    • min3() returns the smallest of the first three vector components.
    • min4() returns the smallest of the four vector components.
    • nrand() returns a random value within the range of [0;1].
    • nrand() returns a float2 vector with random values within the range of [0;1].
    • nrandTiled() returns a random value within the range of [0;1] divided by the tiled seed.
    • nrandTiled() returns a float2 vector with random values within the range of [0;1] divided by the tiled seed.
    • nrand2Tiled() returns a float2 vector with random values within the range of [0;1] divided by the tiled seed (For the second seed, the function shifts the vector: float2(x,y) -> float2(y,x)).
    • nrandTAA() returns a value (that is changed each frame) within the range of [0;1] divided by the tiled seed.
    • nrandTAA() returns a float2 vector with random values (that is changed each frame) within the range of [0;1] divided by the tiled seed.
    • nrand2TAA() returns a float2F vector with random values (that is changed each frame) within the range of [0;1] divided by the tiled seed (For the second seed, the function shifts the vector: float2(x,y) -> float2(y,x)).
    • nrandTemporal() returns a value (that is changed each frame) within the range of [0;1] divided by the tiled seed.
    • nrandTemporal() returns a float2 vector with random values (that is changed each frame) within the range of [0;1] divided by the tiled seed.
    • nrand2Temporal() returns a float2 vector with random values (that is changed each frame) within the range of [0;1] divided by the tiled seed (For the second seed, the function shifts the vector: float2(x,y) -> float2(y,x)).
  • Expanded the Direct3D API flow control attributes:
    • MAX_VEC4(value) -> max4(value)
    • MAX_VEC3(value) -> max3(value)
    • MAX_VEC2(value) -> max2(value)
    • MIN_VEC2(value) -> min2(value)
    • POW_2(value) -> pow2(value)
    • ANY(value) -> any(value)
    • ATAN2(value) -> atan2(value)
    • ABS_NOISE_FLOAT(float2 seed) -> nrand(float2 seed)
    • dot_fixed(V0,V1) -> dotFixed(V0,V1)
    • lerp_fixed(V0,V1,FACTOR) -> lerpFixed(V0,V1,FACTOR)
    • BRANCH -> branch
    • LOOP -> loop
    • UNROLL -> unroll
    • FLATTEN -> flatten
    • EARLYDEPTHSTENCIL -> earlydepthstencil
  • Changed the input and output structures semantics:
    • IN_POS -> IN_POSITION
    • IN_VEC(NUM) -> IN_DATA(NUM)
    • IN_GEOM_VEC(NUM,INDEX) -> IN_GEOM_DATA(NUM,INDEX)
    • INIT_OUT_COLOR -> INIT_COLOR(TYPE)
    • INIT_OUT_DATA(TYPE,NUM) -> INIT_MRT(TYPE,NUM)
    • INIT_OUT_DEPTH -> INIT_DEPTH
    • OUT_VEC(NUM) -> OUT_DATA(NUM)
    • OUT_DATA(NUM) -> OUT_MRT(NUM)
    • OUT_GEOM_VEC(NUM) -> OUT_GEOM_DATA(NUM)
  • Added functions for scattering adjustments:
    • hazeScattering() calculates the haze in the scattering mode.
    • hazeForward() calculates the haze in the forward mode.
    • hazeAlpha() calculates the haze transparency.
    • hazeSolid() calculates the haze in the solid mode.
    • hazeForwardSimple() calculates the haze for objects rendered in the forward mode, can be used in the vertex shader, turns objects to transparency.
  • Removed the s_time() parameter.
  • Added the s_perspective (the perspective camera), s_orthographic (the orthographic camera), s_frame (the current frame number) and s_taa_offset (TAA jittering) parameters.

C++ and C# API

  • Added basic access to physics: Body, BodyDummy and PhysicalTrigger interfaces.
  • Added set/getNormal() method to ObjectBillboards that enables orienting a specific billboard (works only if the billboards_impostor_base material is assigned).
  • Added isFlipped() method to the Render class. Old Texture::isRenderFlipped() method has been removed.

UnigineScript

  • Added set/getNormal() method to ObjectBillboards that enables orienting a specific billboard (works only if the billboards_impostor_base material is assigned).
  • Added set/getSSAOBlur() method to the engine.render class that sets/returns the SSAO blur value.
  • Added set/getSSAOCavityScale() method to the engine.render class that sets/returns the SSAO cavity intensity.
  • Added set/getMotionBlurDepthFalloff() method to the engine.render class that sets/returns the value of the motion blur effect depending on the fragments depth (takes effect only if render_motion_blur_quality is set to 1).

SDK Browser

  • Added "Remember me" option on the login.
  • Added "Off","TAA", and "FXAA" antialiasing options for projects in 2.1+ SDKs.
  • Better support for OS X El Capitan.
  • Added "Video Debug" option that enables the debug context for OpenGL or DirectX 11.
  • Improved offline license activation usability.
  • Improved behavior in case of a unstable internet connection.
  • Only add-ons compatible with the default SDK will be displayed.
  • Various bugfixes.

Samples

Added more samples on built-in objects to the Samples demo.

Grass:

Clutter:

Documentation

Other Changes

  • Improved data streaming on extremely complex projects.
  • Added Drop to ground to ObjectBillboards GUI allowing you to automatically place billboards onto the surface.
  • Added adjustable Up direction for ObjectBillboards.
  • Fixed the ObjectText crash on video_restart.
  • Fixed crashes on very fast movements over detailed terrains.
  • Added support for importing both morph targets and skinned mesh animations from FBX files.
  • Reduced memory allocations and fragmentation.
  • Fixed GLAppSDL sample for OS X.
  • Fixed copy and paste in engine console on Linux.
  • Reduced Syncker UDP packet size to 1 Kb.
  • Changed the way of ObjectMeshSkinned synchronization via Syncker. Transformations specified in the code and physics applied to the bones won't be synchronized, only the animation frames will. You must have a single file containing all the animations and specify the path to it via setAnimName().
  • Various bugfixes.