binstream Posted July 21, 2011 Share Posted July 21, 2011 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 comment
qyli Posted July 21, 2011 Share Posted July 21, 2011 thanks for the update, any plan to next update? Can I expected navmesh in it? Link to comment
ken.mayfield Posted July 21, 2011 Share Posted July 21, 2011 Could you please add the latest iOS sample apps? Link to comment
danni.coy Posted July 21, 2011 Share Posted July 21, 2011 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 comment
binstream Posted July 22, 2011 Author Share Posted July 22, 2011 Could you please add the latest iOS sample apps? iOS and Android apps are available in the corresponding SDKs now. Link to comment
timur.omelchak Posted July 22, 2011 Share Posted July 22, 2011 Is the problem with impostors on leaves fixed? Link to comment
frustum Posted July 22, 2011 Share Posted July 22, 2011 Is the problem with impostors on leaves fixed? yep. Link to comment
danni.coy Posted July 22, 2011 Share Posted July 22, 2011 Awesome and thankyou very much by the way. Link to comment
binstream Posted July 22, 2011 Author Share Posted July 22, 2011 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 comment
binstream Posted July 22, 2011 Author Share Posted July 22, 2011 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 comment
qyli Posted July 22, 2011 Share Posted July 22, 2011 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 comment
danni.coy Posted July 22, 2011 Share Posted July 22, 2011 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 comment
danni.coy Posted July 22, 2011 Share Posted July 22, 2011 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 comment
manuel.gysin Posted July 22, 2011 Share Posted July 22, 2011 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 comment
eugene.litvinov Posted July 26, 2011 Share Posted July 26, 2011 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 comment
danni.coy Posted July 26, 2011 Share Posted July 26, 2011 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 comment
eugene.litvinov Posted July 26, 2011 Share Posted July 26, 2011 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 comment
danni.coy Posted July 27, 2011 Share Posted July 27, 2011 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 comment
eugene.litvinov Posted July 29, 2011 Share Posted July 29, 2011 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 comment
danni.coy Posted July 29, 2011 Share Posted July 29, 2011 Your right... I must have looked at the source code. I appologise Link to comment
eugene.litvinov Posted August 1, 2011 Share Posted August 1, 2011 Your right... I must have looked at the source code. I appologise Maybe you could attach your extern_info.h file? Thanks :) Link to comment
danni.coy Posted August 1, 2011 Share Posted August 1, 2011 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 comment
eugene.litvinov Posted August 1, 2011 Share Posted August 1, 2011 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 comment
ken.mayfield Posted August 1, 2011 Share Posted August 1, 2011 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 comment
ken.mayfield Posted August 1, 2011 Share Posted August 1, 2011 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 comment
Recommended Posts