Development log: December 28, 2011

Railroad simulation, C++ API improvement

Render:

  • Optimized SSDO blur filter.
  • Improved quality of HDR and glow: now it is possible to fine-tune small, medium and large-sized halos.
  • Light scattering falloff can be disabled for performance boost via render_use_scattering_falloff console command.
  • Added detection of Intel GPUs.
  • Added detection of new AMD HD7xxx GPUs.
  • A grass diffuse texture can now have an arbitrary number of columns.
  • Added two separate reflection colors (near and far) for water.
  • Particle systems are animated using a 2D texture atlas (3D textures are no longer supported). Such approach prevents mipmap artifacts and is compatible with mobile platforms.
  • Particles are rendered into the deferred and auxiliary buffers according to their alpha rather than color values.
  • No more contour artifacts for objects when against the water with AA enabled.
  • No more contour artifacts for objects when against the volumetric clouds in OpenGL and PlayStation 3.
  • Fixed AA on Mac OS X.
  • Fixed a lot of shaders for mobile platforms.
  • On PlayStation 3 skinned meshes can be skinned purely on the GPU instead of the SPU, without back-face culling. This option allows for lower memory consumption at the expense of performance and can be enabled via ps3_render_use_mesh_raw console variable.
  • Added white caps for water (an optional state).

GUI:

  • External multi-window GUI (load the Interface plugin to enable it).
  • Improved WidgetCanvas: it is possible to assign a separate texture to each polygon as well as enable texture wrapping.
  • Added new high-level widgets: Track and Line.
  • Widgets fire LEAVE and FOCUS_OUT callbacks when they are hidden or disabled.
  • Removed Qt wrapper support due to the extremely low 3D performance in its viewports.

Multi-window mode of UnigineEditor:

Multi-window mode of UnigineEditor

Physics:

  • Added BodyRail for spline-driven railroad simulation.
  • Added JointRail for train simulation.
  • JointPin is renamed into JointParticles.
  • Added several new physical samples: samples/joints/rail_00, samples/physics/train_00, samples/physics/car_03.

UnigineScript:

  • Variable scope is now saved by state saving.
  • Removed is_extern_class_function() and get_extern_class_function() functions.
  • Safe iteration of "foreach" and "foreachkey" cycles; a runtime error will be generated on invalid iterators.
  • Optimized script compilation speed.
  • Added support of Java-style anonymous class syntax: new Foo() { body };
  • Added trim() function for cutting out spaces (or other symbols) at the start and end of a string.

C++ API:

  • Added access to Unigine application window handle.
  • Added string concatenation functions.
  • Added support of network sockets.
  • Added App::set() for setting an external handler to the application.
  • Added access to DirectX device handlers.
  • Added Gui object for external windows.
  • Added functions for simulating keys and mouse buttons pressing.
  • Added Unicode convertions functions for strings.
  • App3DSurround, App3DVision, AppEyeFinity, AppSoft, AppStereo and AppWall became C++ plugins rather than stand-alone applications (and can now be found in source/plugins).
  • New C++ plugins loading policy: plugin constructor is called at the very beginning of engine initialization, before App instance is created. Plugin init() is called at the same time as before. This means, it is possible to add filesystem packages or initialize external App in the plugin constructor.

Tools:

  • Multi-window mode in UnigineEditor due to the Interface plugin.
  • Added object selection by frame in UnigineEditor (Ctrl + left mouse button).
  • Added FileServer console tool for sharing data directories with engine instances over the network.

Other changes:

  • Added support of Linux on ARM platforms with OpenGL ES (scons cross=arm opengl=0 opengles=1).
  • Refactored main applications for Android and iOS.
  • Upgrade to Android NDK r7.
  • Added world_show_transforms console command for visualization of WorldTransform.
  • Fixed OpenAL-related crashes on Mac OS X.

Mobile client application

All Unigine mobile applications (both for iOS and Android) come together with a launcher that makes iterative development and testing fast and convenient. Instead of uploading resources onto mobile devices, the data which is stored on the development machine is simply shared over the network. To enable remote access, run the FileServer console tool on the machine and start the Unigine-based mobile application with default settings.

PS: You might also be interested in how and why UNIGINE Engine has enabled Ai3D Pty Ltd to become one of the world’s most capable Realtime Visualisation companies that successfuly completed over 60 projects: read their success story.