Huge speed-up of UnigineScript
We continue to improve support of multi-monitor configurations and stereo 3D: both technologies become more and more wide-used for gaming, not to mention industrial simulation and visualization.
UnigineScript:
- Huge speed-up of the virtual machine.
- Added inheritance from external classes.
- Base constructor can be called in C++ syntax.
- Added typeid() function for quick type checking.
- Added step-by-step debugging mode ('n' command in the built-in debugger).
Here is the performance comparison chart for UnigineScript 2.46, Lua 5.1.4, Perl 5.10.1 and Python 2.6.6 (higher values stand for higher performance).
All tests were performed on Intel Core2 Duo E6750 @ 2.66 GHz / Ubuntu Linux 10.10 (64-bit).
The following tests were made:
- Array - simple math operations and array elements access
- Branching - conditional branching
- Loop - a loop with variable increment inside
- Loops - six nested loops with 16 iterations per each loop, variable increment inside
- Matrix - 128x128 matrices multiplication
- Random - simple random number generator, a loop with a function call running 20,000,000 iterations
- Sort - quick sort and buble sort algorithms (no external C functions, only pure bytecode)
- Statistics - simple Gaussian random number generator and Gaussian distribution calculation
- Vectors - simple math operations with 3D vectors and 4x4 matrices
According to these tests, UnigineScript has proven to be the fastest scripting language, especially optimized for 3D-specific tasks with its built-in support of 3D math. It is a mature object-oriented solution with zero learning time syntax (similar to C++/C#) featuring a rich function library available out-of-the box.
Render:
- Fixed rendering artifacts on Mac OS X (10.7+ required).
- New App3DSurround application for 3-monitor stereo rendering atop of NVIDIA 3D Vision Surround technology. (It is a completely native solution that gives full control over cameras configuration).
- AppWall automatically detects the display configuration and creates a corresponding number of windows. (The default number can be overridden with console arguments).
- Added a lot of automatically supported display configurations (1x1, 1x2, 2x1, 2x2, 3x1, 3x2, 4x1, 5x1) for AppWall into the wall.h script.
- Fixed bug with incorrect vertical asymmetric projections distortion in DirectX.
- Correct planar reflections with asymmetric frustum projections.
- Correct near LOD fade distance for volume objects.
- ObjectClutter and ObjectGrass prevent their mask from being unloaded (allows to avoid rendering stalls).
- Fixed crashing on simultaneously changing both the video mode mode and render settings.
- OpenGL ES render now supports Render::renderImage2D() and Render::renderImageCube() functions.
- Stereo 3D settings are available by default when one of stereo defines (STEREO_SEPARATE, STEREO_ANAGLYPH, STEREO_3D_VISION, STEREO_3D_SURROUND, STEREO_IZ3D) is passed (stereo.h is included into the default system script).
- Fixed texture coordinates problem with billboards in Direct3D10/11.
- Added two viewport rendering samples: data/samples/render/image_00 and data/samples/render/viewport_00.
- Added stereo viewport rendering functions into C++ API.
Other:
- Added NavigationMesh object.
- SSE2 is required by default now (use "scons simd=sse" to build without this requirement).
- Support of additional control keys by Telnet server.
- Once loaded, material/property libraries are not unloaded from the set of world libraries (huge loading speed-up for worlds with shared resources).
- Multi-threaded culling of ObjectSurface.
- Fixed cone sound errors (caused by incorrect OpenAL implementation) on iOS.
- Added al_sound_skip_errors console variable to skip error messages from OpenAL library.
- Improved detection of CPU cores.
- Added support of icons for tab boxes in GUI.
- Fixed calculation of PhysicalTrigger bounds.
- ImageDDS can now utilize multiple CPUs running in parallel.
- Updated "Stereo rendering" article, now it includes the information on 3D Surround mode customization.
- Added "Multi-Monitor Rendering with AppWall" article.
- Updated documentaion on sky object and its material.