Unigine SDK 2012-06-14


photo

Recommended Posts

Render:

  • Added billboards_cloud_base material for ObjectBillboards to create scattered clouds that interact with the environment and lighting (see a picture below).
  • Improved volumetric clouds turbulence and added a Z-axis noise mask transformation to create higher-detailed, swirly volumetric clouds.
  • Added hardware support of a custom mouse cursor for Windows, Linux and Mac OS X.
  • Improved performance of DirectX 11 shaders.
  • Removed Direct3D10 support.
  • Added DirectX 11 renderer of DirectX 9 feature level (Direct3D119). This mode is set by engine if a graphics card is compatible only with DirectX 9. It will be mostly used for next-generation mobile devices, i.e. with Windows 8 on ARM processors. Shadows are not supported due to hardware limitations.
  • OpenGL ES is no longer supported for default shaders (it's still supported for simplified shaders though).
  • Simple shaders are automatically loaded if OpenGL ES or Direct3D119 renderers are used.
  • Impostors were completely removed.
  • Added separate Scale parameters for all HDR flares to avoid overexposure.
  • Added render_manager_create_dummy_textures/meshes console commands. If set to 1 (by default), downsized textures and dummy meshes (without any vertex data, only surfaces are listed) are pre-loaded first at high speed. Full-sized textures and meshes with all geometry data are loaded only on demand, when they get into the view. This makes the world start-up much faster.
  • Console command render_manager_list now prints a texture format name (it's useful for debugging).
  • Added orthographic projection support for Widget manipulators.
  • ObjectMeshClutter and ObjectMeshCluster are even faster for meshes with multiple surfaces.

ObjectBillboards with billboards_cloud_base material can be used to create foggy clouds that interact with environment and hide mountain peaks. As the sun changes it position, clouds are lit differently.

 

120613-clouds_sm.jpg

 

Mobile Platforms:

  • Added full support of more mobile GPUs:
    • Qualcomm Adreno 220 and 225
    • Imagination Technologies SGX530, SGX531, SGX535, SGX540, SGX545
    • ARM Mali 400

    [*]Added access to the hardware depth buffer and screen buffers.

    [*]Added full support of Qualcomm compressed image formats: ATC1, ATC3 and ATC5.

    [*]Added support of GL_NV_depth_nonlinear extension (a depth texture format supported on NVIDIA Tegra).

    [*]Added a simple and fast water material into a set of simplified shaders for mobile devices.

    [*]Improved Android application lifecycle: when Home button is pressed and the application goes into the sleep state, there is no battery consumption.

    [*]Added support of Android lifetime functions into the system script: you can call resume(), pause() and stop() to control application when activity state changes.

    [*]Added gles_render_flush_transparent console command for OpenGL ES renderer. It forces to flush GPU depth buffer between rendering opaque and transparent objects for synchronization purposes. For example, it is used to render water on some mobile devices.

    [*]The system script sets filesystem modifiers for hardware-specific texture compression formats (PVR, ETC or ATC) based on the detected mobile GPU. It means the engine will automatically select a texture with hardware-supported compression, if appropriate files are found. For example, on Qualcomm devices, texture.atc.dds will be used rather than texture.dds (with regular DXT compression); while on Imagination Technologies devices, it will be texture.pvr.dds.

    [*]Added Horizontal and Vertical stereo modes used for glass-free MasterImage 3D displays on mobile devices. They are enabled via extern defines RENDER_STEREO_HORIZONTAL and RENDER_STEREO_VERTICAL without any performance decrease. The same mode is selected in the graphics chip driver.

UnigineScript:

  • Engine controls are now cleared on every world reload.
  • Keyword using is now in the global namespace.
  • Added save/restore state functions for Materials and Properties.
  • Added a function to set a namespace name for Expression, making it possible to call Expression methods from the outside.
  • Splash screens can use an image instance, making it possible to create and change splashes dynamically.
  • Added full access to Unigine::Widgets font parameters.
  • Added functions to get information on ObjectMeshSkinned vertices and indices.
  • Added functions to preallocate vertex and index buffers for ObjectMeshDynamic (allocateVertex() and allocateIndices()) and ObjectBillboards (allocateBillboards()), which make object creation faster.
  • Added color clamping for visualizer primitives (see engine.visualizer.render*() functions with color argument).
  • New parser option: it is possible to use assignment operator for #define (DEFINE1=DEFINE2) and set it via include directive (#include DEFINE1, by which DEFINE2 will be actually used).

C++ API:

UnigineEditor:

  • Added Stars generator based on ObjectBillboards (ObjectBillboards node -> Stars tab). It uses FK5 stars catalog format; see a new billboards_03 sample.
  • Fixed a bug with cancelling of NodeReference changes in the editing mode.
  • Added an option to change the root of the NodeReference.
  • Added ObjectSky tracks into Tracker.
  • Added shadow map size and translucent map size tracks for light sources into Tracker.
  • Added a new track that allows for modifying a NodeReference root node in Tracker.
  • Fixed issues with nested tracks in Tracker.
  • Added an option to grab a screenshot of the scene only (no GUI, messages or the profiler) via F11 button.
  • Removed SpeedTree plugin support.
  • The application main window position is saved and restored after relaunching.
  • Fixed an issue with restored Interface plugin windows on the engine startup.
  • Fixed an issue with environment cube map calculation. Environment lighting coefficients are now normalized. Because of this, LightProb sources need to be re-baked (you can use Tools -> Batch option for that). If environment cubemaps are used in Tracker, they need to be reopened.
  • Added seamless filtering for cube images in Tools -> Grabber.

A new stars generator in action:

 

120613-stars_sm.jpg

 

Tools:

  • ImageDDS utilizes all available CPUs in a batch mode for faster texture compression (when multiple images are specified or imagedds.py is used).
  • ImageDDS can scale images while preserving the minimum possible texture size (-ms option). It can be used for batch processing of images.
  • Removed OpenCL and alpha-tested textures support from ImageDDS.
  • FileServer can receive directory names as arguments to work only with selected folders (-d option).
  • TerrainMesh generates a correct hight map even if there are overlapping polygons.

Other:

  • Added support of Visual Studio version 11.0.
  • Added a fast batch mode for Visual Studio (it is enabled by default; to disable it use scons batch=0 option).
  • All console log messages are now shown in the VisualStudio debugger.
  • Improved stability of file queries (archived and non-archived files are read in the same order).
  • Much faster loading of resources over the network.
  • File system modifiers can be used for directories. For example, you can create textures.atc and textures.pvr folders to store textures for different mobile devices (depending on the hardware-supported compression); or localization.en and localization.fr folders to store English and French localized files. After that, in scripts a directory can be specified simply as textures or localization and the engine will automatically select the one with an appropriate modifier.
  • Added systems/socket_00 sample to test Socket class functionality: an HTTP request is sent to google.com and the answer is received.
  • Fixed a bug with parsing of command line parameters in AppWall plugin.
  • ObjectGrass, ObjectMeshClutter and WorldClutter can now intersect with a root node of the parent NodeReference.
  • It's easy to add custom shaders now: every base vertex shader can include an external file set via VERTEX_SHADER definition.

Documentation:

Flash:

 

WidgetFlash implementation is now at least two times faster! As tested on Oil Rush, the engine can easily handle even complex interfaces at higher speed. Moreover, you will find:

  • Massive memory management refactoring for optimized performance.
  • Extended support of ActionScript 2.0 functionality (see below).
  • Built-in garbage collector for Flash objects: if unused, objects will be removed automatically.
  • New function for WidgetFlash to set/get bitmap images to/from a Flash file.
  • Fixed incorrect mouse intersection with movie clips.
  • Added 9-slice grid scaling support for movie clips and buttons. (See widgets/flash_03 sample.)

In detail, ActionScript 2.0 support has been extended to access:

  • Stage object and its width and height properties.
  • MovieClip methods loadMovie(), createEmptyMovieClip(), duplicateMovieClip(), removeMovieClip(), attachMovie(), hitTest(), getNextHighestDepth().
  • Array method splice() and property length.
  • String property length.
  • Engine functions systemSet(), worldSet(), editorSet().

An example of Flash-based GUI:

 

120613-oilrush_flash_sm.jpg

 

Editor plugin system:

 

From now on, customizing the Unigine editor for project-specific needs is very easy. After a script with custom functionality is coded, adding new tabs into the default windows or new editor modules, as well as changing a set of editor features for different projects is just a few clicks away.

Editor plugins are loaded via Tools -> Plugins -> Add option. They are saved and automatically loaded on the next application start-up.

  • A plugin is any *.cpp file in UnigineScript language (see the attachment).
  • It should contain getName() function that returns a namespace name for the plugin (use this namespace for created GUI elements and callbacks).
  • If necessary, you can also implement init(), shutdown() and update() functions for your editor plugin.

PS: Wow, that was quite an impressive list of changes. Stay tuned, there are a couple of big announcements to come later this summer!

editor_plugin_sample.cpp

Edited by manguste
Attached Editor plugin sample
  • Like 1
Link to post

Flash for GUI ? Does it mean I have to get Adobe Flash to create GUI elements or there is a choice between old way and new Flash way?

Link to post

Removed dx10... does this means unigine will have a full multithreaded rendering system?

 

It's easy to add custom shaders now: every base vertex shader can include an external file set via VERTEX_SHADER definition.

 

this is good, but we still need information about unigine's shader architecture.

 

BTW, GOOD WORK!!

Link to post

Will the SDK for MAC be available this week?

 

Nice job BTW!!

Link to post
Will the SDK for MAC be available this week? Nice job BTW!!

 

It's already available.

Link to post
Removed dx10... does this means unigine will have a full multithreaded rendering system?

 

We are reducing amount of redundant code to be able to introduce pure DX11 render while being able to maintain DX9 render for legacy systems/projects.

Link to post
Documentation:

 

Very good article. For avoidance of stars clipping the hint 'stars radius smaller far clipping plane' possibly should be extended with a small note that the ObjectBillboards node itself should be 'attached' to the player position to avoid clipping while moving through the world.

Link to post

I guess one of the big announcements is scaleform, right :(

Link to post

Good job,

 

We are waiting for more updates!

 

Will be add any tutorials?

 

Milad.

Link to post

Good job !

 

Do you plan to add demo with your new billboard objects and other features ? Or a demo from where the mountain screenshot is taken from ?

 

That sounds really good =)

 

Romain

Link to post
Very good article. For avoidance of stars clipping the hint 'stars radius smaller far clipping plane' possibly should be extended with a small note that the ObjectBillboards node itself should be 'attached' to the player position to avoid clipping while moving through the world.

Thank you, Ulf. A good note, I've added it to the article.

 

 

I guess one of the big announcements is scaleform, right :ph34r:

Steve, just wait a bit and see :)

 

 

Good job, We are waiting for more updates! Will be add any tutorials?

Usually it takes shorter time to release an update, there simply were a lot of features in this one.

Of course. For example, to the next update we plan to add a tutorial on creating billboards clouds with billboards_cloud_base.

 

 

Good job ! Do you plan to add demo with your new billboard objects and other features ? Or a demo from where the mountain screenshot is taken from ? That sounds really good =)

A screenshot is taken from Valley demo (a preview version was released during the last update).

Link to post

Hello,

 

I didn't see anything related to the Valley demo in the last SDK version, am I looking in the wrong place ? =)

 

Regards,

Link to post

Sorry, it's a preview version so only licensees with a binary/source SDK have access to it.

Link to post

Ok that's normal ;)

 

Thank you !

Link to post
  • Added orthographic projection support for Widget manipulators

 

 

Much appreciated.

Link to post

Carl, you are welcome :)

Link to post

The new plugin system is pretty cool. I would also like a clear way to add ui controls to a node based on the Property of the node.

Link to post
  • 2 weeks later...

The new plugin system is pretty cool.

NIce! :)

 

I would also like a clear way to add ui controls to a node based on the Property of the node.

Sorry, could you elaborate a bit more? Can't get your idea.

Link to post

NIce! :)

 

 

Sorry, could you elaborate a bit more? Can't get your idea.

 

hopefully this explains the idea. Basically having the node property part of the node editor modal is a huge pain in the arse. I would much rather either be able to add custom controls per node type as described in the picture or be to place the states and properties as tabs in the main dialogs (so that these controls can be accessed in a non modal way).

 

PS. step two in the diagram is only necessary if the node doesn't already have a Property.

post-48-0-29879600-1342084828_thumb.jpeg

Link to post

HI Unigine team, have you any date of the next sdk release ??

Link to post

I looked a bit at the oil rush code and couldn't find with a grep -R WidgetFlash data/ any usage of this widget.

How was flashed used there? (too there are no swf, flv files anywhere in the project)

Link to post

maybe they haven't put the newer version of oil rush to the web site for us to download.

 

And, I want to know when the next release sdk will be available, as far as I know, there is many bugs have been fixed in last version.

Link to post

Anthony and Steve,

SDK will be released in a day, max in 2 days)

Link to post

Danni,

 

Ok, now it's clear. That's a pretty sound idea, but I doubt we'll implement it in the current version of the editor. But we'll mind it for the future. For now, you can use non-modal Properties editor.

Link to post

Manuel,

 

Yep, no Flash files in Oil Rush assets, since in the version that is available for downloading on the portal Flash is not used. If you want an example of Flash-based interface, you can take a look at Shooter prototype.

Link to post