<?xml version="1.0"?>
<rss xmlns:rss="http://purl.org/rss/1.0/" version="2.0">
	<channel>
		<title>Unigine development log</title>
		<link>http://www.unigine.com</link>
		<description>Unigine is an engine of virtual worlds</description>
		<language>en-us</language>
		<copyright>Copyright 2005-20011 Unigine Corp.</copyright>
		<webMaster>webmaster@unigine.com</webMaster>
		
		<item>
			<title>Railroad simulation, C++ API improvement</title>
			<link>http://www.unigine.com/devlog/2011/12/28/96</link>
			<author>binstream@unigine.com</author>
			<pubDate>Wed, 28 Dec 2011 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<h3>Render:</h3><ul><li>Optimized SSDO blur filter.</li><li>Improved quality of HDR and glow: now it is possible to fine-tune small, medium and large-sized halos.</li><li>Light scattering falloff can be disabled for performance boost via render_use_scattering_falloff console command.</li><li>Added detection of Intel GPUs.</li><li>Added detection of new AMD HD7xxx GPUs.</li><li>A grass diffuse texture can now have an arbitrary number of columns.</li><li>Added two separate reflection colors (near and far) for water.</li><li>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.</li><li>Particles are rendered into the deferred and auxiliary buffers according to their alpha rather than color values.</li><li>No more contour artifacts for objects when against the water with AA enabled.</li><li>No more contour artifacts for objects when against the volumetric clouds in OpenGL and PlayStation 3.</li><li>Fixed AA on Mac OS X.</li><li>Fixed a lot of shaders for mobile platforms.</li><li>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.</li><li>Added white caps for water (an optional state).</li></ul><h3>GUI:</h3><ul><li>External multi-window GUI (load the Interface plugin to enable it).</li><li>Improved WidgetCanvas: it is possible to assign a separate texture to each polygon as well as enable texture wrapping.</li><li>Added new high-level widgets: Track and Line.</li><li>Widgets fire LEAVE and FOCUS_OUT callbacks when they are hidden or disabled.</li><li>Removed Qt wrapper support due to the extremely low 3D performance in its viewports.</li></ul><p>
Multi-window mode of UnigineEditor:
</p><p><a href="/devlog/111228-editor.jpg"><img src="/devlog/111228-editor_sm.jpg" alt="Multi-window mode of UnigineEditor" title="Multi-window mode of UnigineEditor"/></a></p><h3>Physics:</h3><ul><li>Added BodyRail for spline-driven railroad simulation.</li><li>Added JointRail for train simulation.</li><li>JointPin is renamed into JointParticles.</li><li>Added several new physical samples: samples/joints/rail_00, samples/physics/train_00, samples/physics/car_03.</li></ul><h3>UnigineScript:</h3><ul><li>Variable scope is now saved by state saving.</li><li>Removed is_extern_class_function() and get_extern_class_function() functions.</li><li>Safe iteration of "foreach" and "foreachkey" cycles; a runtime error will be generated on invalid iterators.</li><li>Optimized script compilation speed.</li><li>Added support of Java-style anonymous class syntax: new Foo() { body };</li><li>Added trim() function for cutting out spaces (or other symbols) at the start and end of a string.</li></ul><h3>C++ API:</h3><ul><li>Added access to Unigine application window handle.</li><li>Added string concatenation functions.</li><li>Added support of network sockets.</li><li>Added App::set() for setting an external handler to the application.</li><li>Added access to DirectX device handlers.</li><li>Added Gui object for external windows.</li><li>Added functions for simulating keys and mouse buttons pressing.</li><li>Added Unicode convertions functions for strings.</li><li>App3DSurround, App3DVision, AppEyeFinity, AppSoft, AppStereo and AppWall became C++ plugins rather than stand-alone applications (and can now be found in source/plugins).</li><li>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.</li></ul><h3>Tools:</h3><ul><li>Multi-window mode in UnigineEditor due to the Interface plugin.</li><li>Added object selection by frame in UnigineEditor (Ctrl + left mouse button).</li><li>Added FileServer console tool for sharing data directories with engine instances over the network.</li></ul><h3>Other changes:</h3><ul><li>Added support of Linux on ARM platforms with OpenGL ES (scons cross=arm opengl=0 opengles=1).</li><li>Refactored main applications for Android and iOS.</li><li>Upgrade to Android NDK r7.</li><li>Added world_show_transforms console command for visualization of WorldTransform.</li><li>Fixed OpenAL-related crashes on Mac OS X.</li></ul><h3>Mobile client application</h3><p>
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.
</p><p><strong>PS:</strong> You might also be interested in how and why <a href="/products/unigine/">UNIGINE Engine</a> has enabled Ai3D Pty Ltd to become one of the world&#8217;s most capable Realtime Visualisation companies that successfuly completed over 60 projects: <a href="/products/unigine/success/ai3d/">read their success story</a>.
</p>
			]]></description>
		</item>
		
		<item>
			<title>Zone-based background streaming</title>
			<link>http://www.unigine.com/devlog/2011/11/18/95</link>
			<author>binstream@unigine.com</author>
			<pubDate>Fri, 18 Nov 2011 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<h3>Improved streaming</h3><p>
Added a new NodeSector object that allows for background streaming of zone-based resources on demand.
It is used to control asynchronous loading of all masks images, meshes and textures that are used by child nodes of the NodeSector.
It requires the world to be divided into sectors of nodes based on their location.
Please refer to the documentation (UnigineScript / Engine Library / Node-Related Classes / NodeSector Class) for more details.
</p><p>
Improved asynchronous resource loading; no more stalls on loading large masks for ObjectGrass and WorldClutter.
Added new console commands that list loaded resources: render_manager_list, sound_manager_list and world_manager_list.
</p><h3>Other changes:</h3><ul><li>Added access to ObjectMesh vertex data into C++ API.</li><li>Added a custom shader example (data/samples/shaders) with NVIDIA FXAA 3.11 implementation.</li><li>Added rgb2rgbl shader into core materials (it is used together with post_filter_fxaa postprocess material).</li><li>Terrain tool is renamed into TerrainMesh.</li><li>Added new TerrainRelax tool to bake the flattened height map (allows for proper intersection with grass and WorldClutter).</li><li>New lerp() function for vectors for fast interpolation of vector values.</li><li>UnigineScript arrays now copy external arrays passed as constructor arguments instead of assigning them.</li><li>Added a new RPPost counter to the performance profiler to report the postprocess rendering time.</li><li>Hotkeys don't clear button states for disabled widgets and callbacks.</li><li>Fixed handling of '[', ']' and '\' symbols for non-English keybord layout.</li><li>Updated documentation on Skinner and Schemer systems.</li><li>Added the gradient editor draft.</li></ul>
			]]></description>
		</item>
		
		<item>
			<title>Introducing Schemer and Skinner</title>
			<link>http://www.unigine.com/devlog/2011/11/11/94</link>
			<author>binstream@unigine.com</author>
			<pubDate>Fri, 11 Nov 2011 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<h3>Schemer (preview)</h3><p>
Schemer is a visual scripting system that allows creation of complex sequences of gameplay events without having to script them manually. This way the artists can add interactivity to the world without the help of a programmer. By connecting paths in a flow graph, it is possible to script cutscenes, switches, timers, changes in lighting and much more.
</p><a href="/devlog/111111-schemer.png"><img src="/devlog/111111-schemer_sm.png" alt="Unigine::Schemer" title="Unigine::Schemer"/></a><p>
Schemer is written in UnigineScript, its files can be found under data/core/systems/schemer folder.
At the moment it's in the alpha stage, which isn't recommended for production use.
</p><h3>Skinner (preview)</h3><p>
Skinner is a visual scripting system for animations. It allows blending different animations together to create complex movements of skinned characters. It also possible to include the physical ragdoll into played animation (for the whole the character or per bone).
</p><a href="/devlog/111111-skinner.png"><img src="/devlog/111111-skinner_sm.png" alt="Unigine::Skinner" title="Unigine::Skinner"/></a><p>
The Skinner is based on Unigine::Schemer. Skinner scripts can be found under data/core/systems/skinner folder.
The predefined Skinner blocks that are available by default are contained in the data/core/systems/skinner/blocks/skinner.blocks file.
</p><a href="/devlog/111111-skinner2.png"><img src="/devlog/111111-skinner2_sm.png" alt="Unigine::Skinner" title="Unigine::Skinner"/></a><p>
Both Schemer and Skinner systems are parts of upcoming UnigineEditor 2.0, they can work with internal Unigine GUI and external one (Qt-based).
</p><h3>Scratch project</h3><p>
A Scratch project will help you get started with your own Unigine-based game in no time. Tweak and play all using the same application: change settings on-the-fly, see the coded behavior in effect or quit the Editor to go into in-game mode and test how your game feels like. No compilation is required: simply add your models, replace the GUI interface and run the launcher.
</p><p>
A Scratch project can be found in UnigineSDK/scratch folder, read more in the documentation. It is available only for Windows and Linux platforms.
</p><h3>Render:</h3><ul><li>Added AppEyeFinity application for enabling AMD Eyefinity technology (multi-monitor rendering with arbitrary projections for each monitor).</li><li>Added <a href="http://timothylottes.blogspot.com/2011/04/nvidia-fxaa-ii-for-console.html">NVIDIA FXAA</a> post-processing material (changed implementation of post_filter_antialiasing material).</li><li>Decals can set texture coordinates (so it's possible to use texture atlases for them).</li><li>Changed texture transformations for billboards: sx,sy,tx,ty instead of old x0,y0-x1,y1.</li><li>Increased terrain loading speed.</li><li>Fixed wrong number of emitted particles for "spark" emitters.</li><li>Fixed alpha-test issue on iOS 5.</li><li>Color-fading (can be used as a simple alpha-fading also) instead of decreasing particle count by distance.</li></ul><p>
Work in progress, upcoming Unigine-powered demo:
</p><p><object width="640" height="360"><param name="movie" value="http://www.youtube.com/v/-y4bJvFEtHI?version=3&amp;hl=en_US&amp;rel=0"/><param name="allowFullScreen" value="true"/><param name="allowscriptaccess" value="always"/><embed src="http://www.youtube.com/v/-y4bJvFEtHI?version=3&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"/></object></p><h3>UnigineScript:</h3><ul><li>Support of script caching for faster load (cache file name is the second argument of world_load command, no caching by default).</li><li>Added "using" keyword for extending current scope to other namespaces.</li><li>Support of #if preprocessor instruction.</li><li>Added extern class member call by ID (useful for faster callbacks).</li><li>Added functions support to Expression.</li><li>Added new base functions: is_variable(), set_variable(), get_variable(), is_extern_class_function() and get_extern_class_function().</li><li>Removed Expression::runFunction() methods, use call(getFunction()) instead.</li><li>Added left() and right() methods for vectors.</li><li>Added new constructors for matrices: mat4(quat,vec3) and dmat4(quat,dvec3).</li><li>More verbose error messages for extern classes.</li><li>Adde npot() (nearest power of two) and udiv() (integer division with rounding up) functions.</li><li>Updated function library documentation.</li></ul><h3>GUI:</h3><ul><li>Fixed callback processing order on mobile platforms.</li><li>Refactored WidgetCanvas.</li><li>Added hide/show methods for virtual keyboard on mobile platforms.</li><li>Added RELEASED callback.</li><li>Wide mask for PRESSED callback of Button and Icon (includes 4 auxiliary buttons).</li><li>Fixed TabBox expanding.</li><li>Reduced texture fonts (non-TTF ones) to 128 characters (latin only).</li><li>Added ImageTTF tool for conversion of TTF font into a texture for FontTexture.</li><li>32 bit TTF symbols for better support of Chineese.</li><li>Improved integration with Qt widgets.</li><li>Added a set of Unigine::Widget* classes, which can be switched between internal (Unigine widgets) and external (Qt-based) implementations (they can be found in data/core/systems/widgets folder).</li></ul><h3>Physics:</h3><ul><li>Added Exclusion masks for collision shapes and PhysicalTrigger.</li><li>Fixed inertia tensor calculation bug for small objects.</li><li>Fixed sliding of non-physical PlayerActor on slope surfaces.</li><li>Particles with "length" emitter are collided as capsules.</li></ul><h3>Other:</h3><ul><li>Added FileSystem C++ plugin: it can handle up to 16 external directories (they must be specified by multiple "-file_path PATH" CLI options; they are saved into the engine config after that).</li><li>Increased speed of XML parser.</li><li>Added support of iOS 5 (no more NEON support due to llvm restrictions).</li><li>Added vec3 and vec4 Property types.</li><li>Added functions for creation of buffers and files out of streams into C++ API.</li><li>Implemented correct yuv2rgb color space tranformation for video playback via Ogg Theora.</li><li>Command line parameters and engine config are now accessible via C++ API.</li><li>Fixed "HeapChunk"-related crashes.</li><li>Fixed bug with saving multi-surface ObjectMeshDynamic into a file.</li><li>Correct handling of ;/+-,. symbols on non-English keyboard layout.</li><li>New policy for Node ID: old IDs aren't changed, NodeReference contents get random IDs.</li><li>Fixed binding clutter objects to parent ones.</li><li>Updated documentation on custom GUI skin.</li><li>Updated documentation on particle systems.</li><li>Added "Tools / Performance Profiler" article.</li></ul><p><strong>PS:</strong> Here is a new pre-release gameplay video from Unigine-powered <a href="http://oilrush-game.com/">Oil Rush naval strategy game</a>:
</p><p><object width="640" height="360"><param name="movie" value="http://www.youtube.com/v/zR0jJFu1Xp4?version=3&amp;hl=en_US&amp;rel=0"/><param name="allowFullScreen" value="true"/><param name="allowscriptaccess" value="always"/><embed src="http://www.youtube.com/v/zR0jJFu1Xp4?version=3&amp;hl=en_US&amp;rel=0" type="application/x-shockwave-flash" width="640" height="360" allowscriptaccess="always" allowfullscreen="true"/></object></p><p><strong>PPS:</strong> We have expanded to Europe, <a href="/press-releases/111027-unigine-europe/">new Unigine office is opened in Prague, Czech Republic</a>.
Anton Ravin joins the company as the head of European branch after seven years at NVIDIA, welcome aboard!
</p>
			]]></description>
		</item>
		
		<item>
			<title>GUI fixes, SDK improvements, indie licenses</title>
			<link>http://www.unigine.com/devlog/2011/10/05/93</link>
			<author>binstream@unigine.com</author>
			<pubDate>Wed, 05 Oct 2011 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<h3>SDK:</h3><ul><li>Added binary SDKs for iOS and Android.</li><li>Added XCode projects for Apple platforms:
	<ul><li>Mac OS X (source/app/main/main_x64.xcodeproj and source/engine/libUnigine_x64.xcodeproj)</li><li>iOS (source/app/iOS/main_arm.xcodeproj and source/engine/libUnigine_arm.xcodeproj)</li></ul>
</li><li>Added Visual Studio C++ 2010 project files in VCXProj format (source/app/main/main_vc2010.vcxproj and source/engine/unigine_vc2010.vcxproj).</li><li>Updated Visual Studio C++ 2008 project files.</li><li>Improved Unigine SDK browser UI.</li></ul><h3>GUI:</h3><ul><li>Added samples of Direct3D9/10/11 context initialization with Qt wrapper (see source/samples/App directory).</li><li>Added "video_resizable" console option (disabled by default; if enabled, a window size can be changed on the fly, without having to restart).</li><li>Console activation key can now be re-defined via "console_key" config option (the default value is 96, an ASCII code for '`' character).</li><li>Fixed special character input with Alt/Ctrl buttons pressed.</li><li>Fixed ObjectGui intersection.</li></ul><h3>Other:</h3><ul><li>Fixed fog rendering in ortho projections.</li><li>Fixed visual artifacts on physical objects with motion blur enabled.</li><li>Added 'simd' SCons flag, possible values are 'none', 'sse', 'sse2', 'altivec', 'neon' and 'default' (stands for the default platform-specific setting).</li><li>Added isInt()...isControls() methods for Variable class into C++ API.</li><li>Fixed CPU count detection on Android.</li><li>Removed Description field from materials and properties.</li><li>Ogg Theora library is upgraded to ARM-optimized version (1.2.0alpha1) for mobile devices.</li><li>Project name can be passed via '-project' CLI option (if set, it forces the engine to store all changing data, such as a log file, cache files and the config, in the user profile rather than in a directory with binaries).</li><li>Added documentation on inheritance of UnigineScript user classes from base engine and extern C++ classes.</li><li>Added documentation on 'post_filter_reflection' post-processing material:</li></ul><a href="/devlog/111005-post_filter_reflection.jpg"><img class="shadowed" src="/devlog/111005-post_filter_reflection_sm.jpg" width="650" height="366" alt="post_filter_reflection" title="post_filter_reflection"/></a><h3>Editor in progress:</h3><p>
If you have not yet heard of it, a new version of UnigineEditor is fully underway. As the plan goes, its main features are:
<ul><li>Multi-window interface with standard widgets based on Qt library</li><li>Asset database with platform-specific settings</li><li>Live edit on target platforms (mobile, PS3...)</li><li>Sequence editor (for cut-scenes)</li><li>Flowgraph editor (for "visual scripting")</li><li>Animation tree editor</li><li>Automated deployment to target platforms</li><li>Plug-in system</li></ul>
The alpha version will be available approximately in 3 months.
</p><h3>Indie deal:</h3><p>
Time-limited indie licensing options are available until November 30, <a href="/products/unigine/licensing/">starting from $1299</a>.
Read more in the <a href="/press-releases/111005-indie-deal/">press-release</a>.
</p>
			]]></description>
		</item>
		
		<item>
			<title>Huge speed-up of UnigineScript</title>
			<link>http://www.unigine.com/devlog/2011/09/12/92</link>
			<author>binstream@unigine.com</author>
			<pubDate>Mon, 12 Sep 2011 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<p>
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.
</p><h3>UnigineScript:</h3><ul><li>Huge speed-up of the virtual machine.</li><li>Added inheritance from external classes.</li><li>Base constructor can be called in C++ syntax.</li><li>Added typeid() function for quick type checking.</li><li>Added step-by-step debugging mode ('n' command in the built-in debugger).</li></ul><p>
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).
</p><img src="/devlog/110913-uniginescript_benchmark.gif" alt="Scripting languages performance: UnigineScript, Lua, Perl, Python"/><p>
All tests were performed on Intel Core2 Duo E6750 @ 2.66 GHz / Ubuntu Linux 10.10 (64-bit).
</p><p>
The following tests were made:
<ul><li><strong>Array</strong> - simple math operations and array elements access</li><li><strong>Branching</strong> - conditional branching</li><li><strong>Loop</strong> - a loop with variable increment inside</li><li><strong>Loops</strong> - six nested loops with 16 iterations per each loop, variable increment inside</li><li><strong>Matrix</strong> - 128x128 matrices multiplication</li><li><strong>Random</strong> - simple random number generator, a loop with a function call running 20,000,000 iterations</li><li><strong>Sort</strong> - quick sort and buble sort algorithms (no external C functions, only pure bytecode)</li><li><strong>Statistics</strong> - simple Gaussian random number generator and Gaussian distribution calculation</li><li><strong>Vectors</strong> - simple math operations with 3D vectors and 4x4 matrices</li></ul>
</p><p>
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.
</p><h3>Render:</h3><ul><li>Fixed rendering artifacts on Mac OS X (10.7+ required).</li><li>New App3DSurround application for 3-monitor stereo rendering atop of <a href="http://www.nvidia.com/object/3d-vision-surround-technology.html">NVIDIA 3D Vision Surround</a> technology. (It is a completely native solution that gives full control over cameras configuration).</li><li>AppWall automatically detects the display configuration and creates a corresponding number of windows. (The default number can be overridden with console arguments).</li><li>Added a lot of automatically supported display configurations (1x1, 1x2, 2x1, 2x2, 3x1, 3x2, 4x1, 5x1) for AppWall into the wall.h script.</li><li>Fixed bug with incorrect vertical asymmetric projections distortion in DirectX.</li><li>Correct planar reflections with asymmetric frustum projections.</li><li>Correct near LOD fade distance for volume objects.</li><li>ObjectClutter and ObjectGrass prevent their mask from being unloaded (allows to avoid rendering stalls).</li><li>Fixed crashing on simultaneously changing both the video mode mode and render settings.</li><li>OpenGL ES render now supports Render::renderImage2D() and Render::renderImageCube() functions.</li><li>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).</li><li>Fixed texture coordinates problem with billboards in Direct3D10/11.</li><li>Added two viewport rendering samples: data/samples/render/image_00 and data/samples/render/viewport_00.</li><li>Added stereo viewport rendering functions into C++ API.</li></ul><h3>Other:</h3><ul><li>Added NavigationMesh object.</li><li>SSE2 is required by default now (use "scons simd=sse" to build without this requirement).</li><li>Support of additional control keys by Telnet server.</li><li>Once loaded, material/property libraries are not unloaded from the set of world libraries (huge loading speed-up for worlds with shared resources).</li><li>Multi-threaded culling of ObjectSurface.</li><li>Fixed cone sound errors (caused by incorrect OpenAL implementation) on iOS.</li><li>Added al_sound_skip_errors console variable to skip error messages from OpenAL library.</li><li>Improved detection of CPU cores.</li><li>Added support of icons for tab boxes in GUI.</li><li>Fixed calculation of PhysicalTrigger bounds.</li><li>ImageDDS can now utilize multiple CPUs running in parallel.</li><li>Updated "Stereo rendering" article, now it includes the information on 3D Surround mode customization.</li><li>Added "Multi-Monitor Rendering with AppWall" article.</li><li>Updated documentaion on sky object and its material.</li></ul>
			]]></description>
		</item>
		
	</channel>
</rss>
