Unigine SDK 2011-07-21


photo

Recommended Posts

From now on Unigine can handle as large worlds as required. In addition to effective data streaming the engine supports double precision of coordinates instead of float data type.

 

It's possible to create virtually unlimited worlds with the highest level of details (maximum coordinates are effectively 536,870,912 times larger). If a single precision world compares to an Earth range, double precision allows to create the whole Solar System and beyond. This feature can be very helpful for some VR/simulation applications, e.g. for flight simulators.

 

World management:

 

* Added support of double precision coordinates (requires replacing standard engine libraries with special ones; use "scons double=1" to rebuild).

* All objects are rendered in camera space.

* All nodes works in relative space.

* All functions that deal with world coordinates use special define-controlled data types (Scalar, Vec2, Vec3, Vec4, Mat4), which are replaced with float or double precision types depending on a build type.

* Removed Node::isWorldBounds() and Object::isWorldRender() functions.

* engine.world.getIntersection(), engine.world.getCollision() and similar functions can only work if provided arguments are of the specific data type: vec3 and float, dvec3 and double, vec3 and vec3, dvec3 and dvec3, mat4 and mat4, dmat4 and dmat4. Arguments with different precision can't be mixed together.

* Increased the maximum number of possible node children.

* Decals do not use world space transformations any more. Instead, they are attached to ObjectSurface they are projected onto and are rendered using object transformations. ObjectDecal is always a child of its target Object. (All decals stored in world files need to be re-generated: UnigineEditor -> Tools -> Batch -> Update decals).

 

Render:

 

* Fixed smooth interpolation for shift particles by low FPS values.

* Particles can cast volumetric shadows (not compatible with MSAA).

* Visualizer functions take arguments in the different order: first transformation and then color.

* Added renderMessage2D() and renderMessage3D() functions into the visualizer.

* Billboard orientation can now be fixed along X or Z axis.

* All shaders got rid of modelview matrices.

* Added render_use_rgb10a2 console variable: use RGB10A2 (by default) or RGBA8 texture format for the screen buffer.

* Added render_use_vertex_float console variable for increased Z-axis precision of static meshes (if used, expect memory consumption increase and performance drop).

* Added render_use_directional_lightmaps console variable to enable directional lightmaps (2*2 tiles) instead of simple ones. If you use external lightmapping tool, disable this option.

* Removed the limit for maximum cell count of grass.

* Added reflection_power parameter for 2D reflections (to increase reflection distortion with the distance).

 

UnigineScript:

 

* Added dmat4 data type of double precision (a matrix of 12 double components). This is a 4x4 affine transformation matrix with the last row not stored. Instead, the last row is always of the form "0 0 0 1" and its values cannot be written, only read.

* Added render() function into the world script. It's called after states of all nodes were updated and before rendering and physics simulation have started. It can be used to create attachments to bones, blend skinned mesh animation with ragdolls, etc.

* Added check for division by integer zero.

* Added float data type support support by % operator.

* Added new automatically substituted types (to use, include data/core/unigine.h): Scalar, Vec3, Vec4, Mat4, Vec3_zero, Vec4_zero, Vec3_one, Vec4_one, Vec3_epsilon, Vec4_epsilon, Vec3_infinity, Vec4_infinity, Mat4_identity. (Their precision depends on USE_DOUBLE define).

* Added Unigine::getScreenPosition() helper function that translates world space coordinates into screen space ones.

 

Physics:

 

* Fixed crash on multiple sequential runs of the engine.

* Added SkinnedMesh::getFrame() function that copies the final updated bone transformation on a given layer (useful for blending animation with physically driven transformations). Usage example can be found in data/samples/physics/ragdoll_13 sample.

* Added "Continuous" flag for shapes (allows to disable continuous collision detection for spheres and capsules).

 

Other:

 

* Added Unigine Mac OS X SDK.

* Added Unigine iOS SDK.

* Added support of NEON instruction set for ARM platforms (available for iOS only; not supported for Android due to GCC bug).

* Added OpenAL support for Android.

* Added dmat4 data type of double precision into C++ API.

* Added C++ API defines: UNIGINE_SCALAR, UNIGINE_VEC3, UNIGINE_VEC4, UNIGINE_MAT4 (their precision depends on UNIGINE_DOUBLE define).

* Changed console variables controlling multi-threading behavior: physics_threaded (instead of physics_num_threads), world_threaded (instead of world_num_threads) and pathfind_threaded (instead of pathfind_num_threads).

* Export of node names in UnigineMenu.ms script for 3ds Max.

* Added Unigine::Ffp C++ API sample.

* Added "Features" string into the log file; lists all built-in optional features.

* Added functions to remove decals projected onto objects.

* Fixed a file search bug with icase option enabled.

* *_inf variables are renamed to *_infinity (it's equal to 1e+9 now); *_eps variables are renamed to *_epsilon.

* Memory manager deallocates its pools on engine shutdown, if possible.

* Migration to android-ndk-r6.

* Fixed numpad keys handling in Linux.

* Added samples on handling animation.

* Added samples on ragdoll attachments.

* Added a sample on assigning a custom GUI skin.

* Added samples of random and noise generators.

* All samples were refactored to support double precision of coordinates.

* Added Unigine::App::get() function into C++ API to control the current application.

 

Documentation:

 

* Updated information on ImageDDS.

* Added a new "Development for Different Platforms" section: updated articles on Windows and Linux application development.

* Added Mac OS X Application Development article.

* Added iOS Application Development article.

* Added Manual Compilation via SCons article.

* Added Project Optimization for Mobile Devices article.

* Updated information on Build script.

* Added Double Precision Coordinates article.

* Updated UnigineScript function library.

 

Download links

 

All files can be found in "Downloads" section of the portal: https://developer.unigine.com/fileserver/index

Link to post

thanks for the update, any plan to next update? Can I expected navmesh in it?

Link to post

Could you please add the latest iOS sample apps?

Link to post

Getting the following problem launching browser here

./browser_x64.sh 
Cannot mix incompatible Qt library (version 0x1040702) with this library (version 0x40702)
./browser_x64.sh: line 4:  5886 Aborted                 ./browser_x64 -config ./../browser/browser.xml

 

I already tried building the libraries as per last time around as a workaround.

Link to post

Could you please add the latest iOS sample apps?

iOS and Android apps are available in the corresponding SDKs now.

Link to post

Is the problem with impostors on leaves fixed?

Link to post

Is the problem with impostors on leaves fixed?

yep.

Link to post

Awesome and thankyou very much by the way.

Link to post

Getting the following problem launching browser here

./browser_x64.sh 
Cannot mix incompatible Qt library (version 0x1040702) with this library (version 0x40702)
./browser_x64.sh: line 4:  5886 Aborted                 ./browser_x64 -config ./../browser/browser.xml

 

I already tried building the libraries as per last time around as a workaround.

We are aware of Qt libs mess in Linux, it will be fixed soon.

Link to post

thanks for the update, any plan to next update? Can I expected navmesh in it?

Next update will be available in a month approximately. It will likely bring navmesh support.

Link to post

Next update will be available in a month approximately. It will likely bring navmesh support.

 

wow, good news, this is a critical feature to us, thanks

Link to post

We are aware of Qt libs mess in Linux, it will be fixed soon.

The x86 version is working for me here at least. I tried using LD_PRELOAD but that failed.

Link to post

if anybody is interested here is a file you can use to get syntax highlighting in a C++ editor. It's a cleaned up version of extern_info.h.

add

-extern_define NOBUILTIN

to your launch config to exclude it from your code when Unigine is being run.

uniginescript.h

Link to post

if anybody is interested here is a file you can use to get syntax highlighting in a C++ editor. It's a cleaned up version of extern_info.h.

add

-extern_define NOBUILTIN

to your launch config to exclude it from your code when Unigine is being run.

 

Thanks a lot!

Link to post

I define #define EXPORT_EXTERN in my custom unigine.cpp file, but extern_info.h didn't create... Is there any changes? How I could generate latest extern_info.h file? Thanks

Link to post

I define #define EXPORT_EXTERN in my custom unigine.cpp file, but extern_info.h didn't create... Is there any changes? How I could generate latest extern_info.h file? Thanks

 

It's run from inside the data/core/scripts/system.h file. Have a look at that file for how to do it.

Link to post

strange... I uncomment #define EXPORT_EXTERN in data/core/scripts/system.h file, launching my project, sample projects, editor... extern_info.h didn't appear in any sub-folder of Unigine folder :(

Link to post

strange... I uncomment #define EXPORT_EXTERN in data/core/scripts/system.h file, launching my project, sample projects, editor... extern_info.h didn't appear in any sub-folder of Unigine folder :(

it shows up in [unigine]/bin

When in doubt though check the console window or the log file.

Link to post

And what is wrote in log file about this situation?

I modify system.h like this:

//#define MOUSE_USER
//#define MOUSE_SOFT
//#define EXPORT_LOCALE
#define EXPORT_EXTERN
//#define RENDER_SIMPLE

and get this log file:

16:09:57 Loading "D:/Project/Unigine/bin/unigine.cfg"...
16:09:57 Loading "d3d9.dll"...
16:09:57 Loading "openal32.dll"...
16:09:58 Set 1280x720 windowed video mode
16:09:58 Set 1.00 gamma value
16:09:58 Unigine engine http://unigine.com/
16:09:58 Binary: Windows 64bit Visual C++ 1600 Debug Jul 21 2011 r7184
16:09:58 Features: OpenGL Direct3D9 Direct3D10 Direct3D11 OpenAL XPad360 Joystick Editor
16:09:58 App path: D:/Project/Unigine/bin/
16:09:58 Data path: D:/Project/Unigine/data/
16:09:58 Save path: D:/Project/Unigine/bin/
16:09:58
16:09:58 ---- System ----
16:09:58 System: Windows 7 (build 7601, Service Pack 1) 64bit
16:09:58 CPU: Intel(R) Core(TM) i3 CPU 550 @ 3.20GHz 3199MHz MMX SSE SSE2 SSE3 SSSE3 SSE41 SSE42 HTT x4
16:09:58 GPU: NVIDIA GeForce GT 240 8.17.12.6658 x1
16:09:58 System memory: 3959 Mb
16:09:58 Video memory: 1024 Mb
16:09:58 Sync threads: 1
16:09:58 Async threads: 1
16:09:58
16:09:58 ---- MathLib ----
16:09:58 Set SSE simd processor
16:09:58
16:09:58 ---- Sound ----
16:09:58 Renderer: Generic Software
16:09:58 OpenAL vendor: Creative Labs Inc.
16:09:58 OpenAL renderer: Software
16:09:58 OpenAL version: 1.1
16:09:58 Found AL_EXT_LINEAR_DISTANCE
16:09:58 Found AL_EXT_OFFSET
16:09:58 Found ALC_EXT_EFX
16:09:58 Found EFX Filter
16:09:58 Found EFX Reverb
16:09:58 Found EAX Reverb
16:09:58 Found QUAD16 format
16:09:58 Found 51CHN16 format
16:09:58 Found 61CHN16 format
16:09:58 Found 71CHN16 format
16:09:58 Maximum sources: 256
16:09:58 Maximum effect slots: 1
16:09:58 Maximum auxiliary sends: 1
16:09:58
16:09:58 ---- Render ----
16:09:58 Renderer: NVIDIA NV50 1024Mb
16:09:58 Direct3D9 desc: NVIDIA GeForce GT 240
16:09:58 Direct3D9 driver: nvd3dumx.dll
16:09:58 Found required D3DPTEXTURECAPS_CUBEMAP
16:09:58 Found required D3DPTEXTURECAPS_VOLUMEMAP
16:09:58 Found required D3DPTADDRESSCAPS_WRAP
16:09:58 Found required D3DPTADDRESSCAPS_CLAMP
16:09:58 Found required D3DCAPS2_CANAUTOGENMIPMAP
16:09:58 Found optional D3DPMISCCAPS_INDEPENDENTWRITEMASKS
16:09:58 Found optional Vertex shader 3.0
16:09:58 Found optional Pixel shader 3.0
16:09:58 Found optional Vertex texture fetch
16:09:58 Found optional HDR blending
16:09:58 Found optional HDR filtering
16:09:58 Found optional NULL texture
16:09:58 Found optional RGB10A2 texture
16:09:58 Found optional DXT texture compression
16:09:58 Found optional ATI texture compression 1
16:09:58 Found optional ATI texture compression 2
16:09:58 Found optional NVIDIA hardware shadow
16:09:58 Found optional NVIDIA alpha to coverage
16:09:58 Vertex instructions: 4096
16:09:58 Pixel instructions: 4096
16:09:58 Maximum texture size: 8192
16:09:58 Maximum texture units: 16
16:09:58 Maximum texture renders: 4
16:09:58
16:09:58 ---- Physics ----
16:09:58 Physics: Multi-threaded
16:09:58
16:09:58 ---- PathFind ----
16:09:58 PathFind: Multi-threaded
16:09:58
16:09:58 Unigine~# world_load source/main
16:09:58 ---- Interpreter ----
16:09:58 Version: 2.41
16:09:58
16:09:58 Loading "source/unigine.cpp" 64ms
16:09:58 Loading "core/materials/default/unigine_post.mat" 15 materials 21 shaders 0ms
16:09:58 Loading "core/materials/default/unigine_render.mat" 37 materials 311 shaders 6ms
16:09:58 Loading "core/materials/default/unigine_meshes.mat" 18 materials 11031 shaders 66ms
16:09:58 Loading "core/materials/default/unigine_terrains.mat" 2 materials 432 shaders 1ms
16:09:58 Loading "core/materials/default/unigine_grass.mat" 1 material 69 shaders 2ms
16:09:58 Loading "core/materials/default/unigine_particles.mat" 1 material 47 shaders 2ms
16:09:58 Loading "core/materials/default/unigine_billboards.mat" 1 material 51 shaders 2ms
16:09:58 Loading "core/materials/default/unigine_volumes.mat" 6 materials 45 shaders 4ms
16:09:58 Loading "core/materials/default/unigine_guis.mat" 1 material 82 shaders 1ms
16:09:58 Loading "core/materials/default/unigine_water.mat" 1 material 117 shaders 6ms
16:09:58 Loading "core/materials/default/unigine_skies.mat" 1 material 13 shaders 4ms
16:09:58 Loading "core/materials/default/unigine_decals.mat" 1 material 99 shaders 1ms
16:09:58 Loading "core/properties/unigine.prop" 2 properties 0ms
16:09:58 Unigine~# render_manager_load_shaders 0
16:09:58 Unigine~# render_manager_load_meshes 1
16:09:58 Unigine~# render_manager_load_textures 1
16:09:58 Unigine~# render_manager_warm_shaders 1
16:09:59 Loading "source/main.cpp" 1101ms
16:10:00 Loading "source/materials/base_materials.mat" 122 materials 655ms
16:10:00 Loading "source/materials/characters.mat" 3 materials 4ms
16:10:00 MaterialManager::load(): "robot" material is already defined
16:10:00 MaterialManager::load(): "robot_eye" material is already defined
16:10:00 Loading "source/materials/source.mat" 5 materials 3ms
16:10:00 Loading "source/properties/objects.prop" 19 properties 0ms
16:10:00 Loading "source/properties/player.prop" 1 property 0ms
16:10:00 Loading "source/properties/triggers.prop" 4 properties 0ms
16:10:00 Image::load_dds(): can't open "source/textures/environment/environment_light_night.dds" file
16:10:00 Render::setEnvironmentTextureName(): can't load "source/textures/environment/environment_light_night.dds" file
16:10:00 Loading "source/properties/surfaces.prop" 2 properties 0ms
16:10:00 Object::loadWorld(): different surface names "clouds" "volume"
16:10:00 Object::loadWorld(): can't find "clouds" surface
16:10:01 Loading "source/main.world" 2448ms
16:10:01 Xml::printUnusedData(): unused argument "property=surface_base" in "surface" node in "source/main.world" file
16:10:01 
16:10:01 ---- Game Source ----
16:10:01 Version: 0.3
16:10:01
16:10:01 Source::WorldBase::init()

Link to post

Your right... I must have looked at the source code. I appologise

Link to post

Your right... I must have looked at the source code. I appologise

Maybe you could attach your extern_info.h file? Thanks :)

Link to post

Maybe you could attach your extern_info.h file? Thanks :)

see uniginescript.h attached on the last page. It's that file but I added public qualifiers to the classes.

and turned engine and log based classes to actual classes.

:)

Link to post

see uniginescript.h attached on the last page. It's that file but I added public qualifiers to the classes.

and turned engine and log based classes to actual classes.

:)

Great work!Thanks! And how you use it, for examle, engineConsole::setInt()? Unigint script provide engine.console.setInt() syntax only, does not?

Link to post

iOS and Android apps are available in the corresponding SDKs now.

 

the iOS samples app is not our version of the iOS SDK. Can these be added?

Link to post

the iOS samples app is not our version of the iOS SDK. Can these be added?

 

Actually, our problem is mostly that the executables in the SDK are _x86 which appear to be used only with the simulator. The release executables are the ones we need.

Link to post