<?xml version="1.0"?>
<rss xmlns:rss="http://purl.org/rss/1.0/" version="2.0">
	<channel>
		<title>Unigine development log</title>
		<link>http://unigine.com</link>
		<description>Unigine is an engine of virtual worlds</description>
		<language>en-us</language>
		<copyright>Copyright 2005-2012 Unigine Corp.</copyright>
		<webMaster>webmaster@unigine.com</webMaster>
		
		<item>
			<title>Introducing Unigine::Tracker</title>
			<link>http://unigine.com/devlog/2012/04/11/98</link>
			<author>binstream@unigine.com</author>
			<pubDate>Wed, 11 Apr 2012 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<a href="/devlog/120411-valley3.jpg"><img class="shadowed" src="/devlog/120411-valley3_sm.jpg" width="650" height="366" alt="Valley demo preview" title="Valley demo preview"/></a><h3>Render:</h3><ul><li>Added mesh_overlay_base material (useful for creating procedural rust or moss on objects).</li><li>Optimized assigning of materials to object surfaces.</li><li>Fixed video playback in 3D stereo mode under DX11.</li><li>Added 'MaxShadowSplit' option for surfaces to skip rendering of high-detail shadow splits from LightWorld. (It is useful for small objects like stones, etc.)</li><li>Fixed crash on render_manager_reload console command.</li><li>Environment cube map texture is not in SRGB format from now on.</li><li>Added the following modes for terrain detail materials: "skip" (not rendered), "overlay" (the old blended one) and "overlap" (without blending, the spread of such material can be additionally tweaked using "Value" and "Threshold" parameters). Overlap terrain material cannot be used together with triplanar mapping.</li><li>Additional noise transformation parameter for sky volume clouds.</li><li>Improved performance of dynamic vertex/index buffers on open-source drivers in Linux.</li><li>Support of vertical synchronization in Linux.</li><li>Renderer checks for EXT_texture_compression_s3tc extension availability on startup (a Mesa driver doesn't support it due to the legal issues).</li><li>A mask for ObjectGrass, ObjectMeshClutter and WorldClutter is now editable in real-time.</li><li>Fade color for fade post-process is now a normal color that is blended by the alpha component: zero alpha value means no fading, while the alpha value of one results in a solid-color screen.</li><li>Increased the default values for Shadow bias and Slope parameters for all light sources.</li><li>Added separate diffuse and specular color multipliers.</li><li>Improved OpenGL ES initialization on iOS.</li><li>Added support of iPad 3.</li><li>Added support of hardware shadow maps (cast from LightProj and LightWorld sources) on mobile platforms.</li><li>Added a wind direction vector common for all vegetation (grass and trees).</li><li>Implemented OpenGL ES support in Linux.</li><li>New way to generate procedural textures directly on the GPU. It allows for simulation of various visual effects; see new samples in data/samples/shaders: fire_00, water_00, bombing_00.</li><li>Added a separate emission_color multiplier.</li><li>Improved compatibility with a new NVIDIA OpenGL driver.</li><li>Added 1/4, 1/2 and full (relative to the screen height) reflection map sizes for reflective materials.</li><li>Added mesh_lut_base material with baked lighting (highly efficient for mobile devices).</li><li>Added post_filter_wet post-process materials (for the effect of water trickling down the surfaces).</li></ul><p><a href="/devlog/120411-valley1.jpg"><img class="shadowed" src="/devlog/120411-valley1_sm.jpg" width="650" height="366" alt="Valley demo preview" title="Valley demo preview"/></a></p><h3>UnigineScript:</h3><ul><li>Correct ExternClass variables casting on inter-script calls.</li><li>Added inter-script calls sample: systems/system_00.</li><li>Added more samples on WorldExpression usage: worlds/expression_02, worlds/expression_03.</li><li>Configurable splash screens in core/scripts/system.h.</li><li>"using" keyword searches for a given namespace through all nested namespaces up to the global one instead of searching only in the global scope.</li><li>The number of available namespaces is increased to 65536.</li><li>WorldExpression calls __constructor__() and __destructor__() functions on initialization and shutdown (it can be used for proper creation and deletion of created resources).</li><li>EPSILON and NULL definitions are removed from Unigine::Skinner blocks.</li><li>Widgets::Dialog is created in the external GUI, if it's available.</li><li>Improved interaction of Widgets::Line and Widgets::Track.</li><li>Added Widgets::Time class for time manipulation.</li><li>Added Widgets::DialogMaterial, DialogProperty, DialogNode dialogs.</li><li>Improved implementation of engine.world.isNode() and other similar functions: now they can receive both the object identifier and the object pointer.</li></ul><h3>GUI:</h3><ul><li>ObjectGui and ObjectGuiMesh take into the account asymmetric frustum when calculating mouse coordinates.</li><li>Default iFPS value for WidgetSpriteViewport and WidgetSpriteNode is changed to 0 (so it is updated at the rendering frame rate rather than a lowered one).</li><li>Fixed infinite update of WidgetSpriteViewport when the iFPS value is low.</li><li>Fixed issue with vertical flipping for WidgetSpriteMaterial widget.</li><li>Fixed gradient texture calculation algorithm for Flash movies.</li><li>Added Widget::set[get]MouseCursor() functions for correct switching of the cursor between multiple GUI interfaces.</li><li>Added Widget::getParentGui() function to access a parent GUI object.</li><li>Fixed crashing when the scroll space in WidgetComboBox was very small.</li><li>Fixed texture and text arrangement for WidgetTabBox, WidgetListBox and WidgetTreeBox.</li></ul><h3>C++ API:</h3><ul><li>Fixed crash on multiple Unigine::removeExtern*() invocations with the same argument.</li><li>Added ArrayMap::Iterator class to enumerate all elements.</li><li>Added Variable::getTypeInfo() function which describes variable content in details.</li></ul><h3>UnigineEditor:</h3><ul><li>Added Tracker system (see details below).</li><li>Added mask editor for ObjectGrass, ObjectMeshClutter and WorldClutter.</li><li>Added 'Create mask' button for ObjectGrass, ObjectMeshClutter and WorldClutter objects.</li><li>Added a random seed for WorldCluster generator.</li><li>Added custom terrain brushes.</li><li>Automatic compression of terrain coarse textures when the source textures are placed in the "uncompressed" folder.</li><li>Fixed issue with the terrain lightmap grabber.</li><li>Added PlayerPersecutor node (it is not movable until a target is assigned for it).</li><li>Removed "Activate" button in PlayerDummy node. To test the camera view, open Camera window and switch to the selected player.</li><li>Added basic LUT texture editor (Tools -&gt; LUT) to generate textures with baked lighting.</li><li>Added new icons for different nodes.</li><li>Changed the default world settings.</li></ul><h3>Other:</h3><ul><li>Added new vegetation samples optimized for flight simulators (samples/materials/leaf_02).</li><li>Added a city rendering sample that shows how to use occluders for optimized rendering (samples/stress/occluder_03).</li><li>Node::set[get]Data is renamed into Node::set[get]Variable. Old "data" is a simple string (stored in world and save files) now.</li><li>Changed user data path for Mac OS X projects: home_path + "Library/Application Support/" + project_name.</li><li>ObjectGrass, ObjectParticles, ObjectMeshCluster, ObjectMeshClutter and WorldClutter can be stored inside NodeDummy and still intersect with the parent geometry on the generation stage.</li><li>Fixed wrong bounding space of NavigationMesh after the world is loaded.</li><li>Fixed pathfinding route issues inside of a NavigationMesh.</li><li>Added Maya 2012 plugins.</li><li>Migration to new Xcode and iOS 5.1.</li><li>All empty XML nodes are automatically removed from the world files.</li></ul><h3>Tracker</h3><p>
Tracker is a keyframe-based tool for creating sequences animated over time. It is used for adding dynamic gameplay elements or making in-game cinematic cutscenes. With Tracker you can:
<ul><li>Easily create key frames for all nodes in the world, as well as in-game cameras and render settings.</li><li>Set up day-night shift and weather conditions change.</li><li>Switch between the cameras, change field-of-view on the fly and play sounds for creating stunning cinematics.</li><li>Animate interactive objects in the game, for example, lights, doors and platforms.</li><li>Apply post-processing effects such as depth of field, HDR, motion blur and color filtering. All these effects can be fine-tuned for each camera view.</li><li>And much more.</li></ul>
<p><p><a href="/devlog/120411-tracker.jpg"><img class="shadowed" src="/devlog/120411-tracker_sm.jpg" width="650" height="366" alt="Tracker" title="Tracker"/></a></p></p>
Moreover, Tracker interface supports for saving and loading of created tracks, custom loop ranges, key cloning and snapping, as well as playback speed control. After the node has been manipulated in the editor, creating a key is as easy as a single mouse click.
</p><p>
	Read more in the documentation: <a href="https://developer.unigine.com/docs/code/scripting/scripts/systems/unigine_tracker/">UnigineScript / High-Level Scripts / Unigine::Tracker</a>.
</p><h3>Valley demo preview</h3><p>
Valley is an interactive demo that demonstrates optimized rendering of terrain with landscapes varying from grassy vales to snowy mountains. It comes complete with various vegetation (trees, bushes, different plants, grass) and rocks on mountain sides.
</p><p>
The preview version also features weather animations created with Tracker system:
<ul><li>Day-night cycle with various weather conditions (cloudiness, wind, rain) is controlled in 'day_cycle_mixed' track. It combines all tracks listed below.</li><li>Positions of sun and moon on the horizon are set in 'sun_rotation' and 'moon_rotation' tracks.</li><li>Change of light conditions to create sunny and cloudy weather (animated light parameters, scattering, fog) are set in 'day_cycle_sunny' and 'day_cycle_cloudy' tracks.</li><li>Rain (rain particles across the screen, splashes on the ground, scattering for a downpour) is controlled in 'rain_control' track.</li><li>Wet surfaces post-process (render_filter_wet material) is controlled in 'rain_wet_surface_control' track.</li><li>Wind (the speed and direction of wind, trees sway animation) is set in 'wind_force_control' track.</li><li>Depth of field effect (focal distance change, different amount of blur) is controlled in 'dof_f2' and 'dof_f8' tracks.</li></ul>
</p><p><a href="/devlog/120411-wet.jpg"><img class="shadowed" src="/devlog/120411-wet_sm.jpg" width="650" height="366" alt="Wet material" title="Wet material"/></a></p><p>
The preview is available for engine licensees only.
</p><h3>First-person shooter prototype</h3><p>
A Shooter project is a single-player first-person shooter that can be used to get your own prototype up and running extremely quickly. If features all aspects essential for this type of core mechanics, so you can focus on implementing and testing of custom features, as well as creating new game levels.
A Shooter project can be found under data/prototypes/shooter folder.
</p>
			]]></description>
		</item>
		
		<item>
			<title>Render performance improvements; ObjectMeshClutter, ObjectMeshCluster</title>
			<link>http://unigine.com/devlog/2012/02/27/97</link>
			<author>binstream@unigine.com</author>
			<pubDate>Mon, 27 Feb 2012 00:00:00 GMT</pubDate>
			<description><![CDATA[
				<h3>Render:</h3><ul><li>Added ObjectMeshCluster. Mesh Cluster is a highly optimized way to render a great number of identical meshes with the same material in the world. These meshes are baked and managed as one object, which substantially speeds up rendering.</li><li>Added ObjectMeshClutter. Mesh Clutter scatters identical meshes across the world or terrain and speeds up their rendering. Meshes can not only be scaled, but also randomly scaled and oriented (but not moved), if necessary. Mesh Clutter scatters objects procedurally, and renders them only around the camera. It allows to render even a large number of meshes while keeping performance high.</li><li>Added ObjectBillboards object suitable for fast rendering of groups of billboards (stars, clouds and so on).</li><li>Fixed WorldCluster save/restore system.</li><li>Improved GPU detection in Mac OS X.</li><li>Restored gamma value control in Linux.</li><li>Improved support of NVIDIA 3DVision.</li><li>Improved support of Intel HD 3000 GPU.</li><li>Fixed skinned mesh instancing in Direct3D10/11.</li><li>Added a new mesh_layer_base material. It allows for selective blending of two materials: it operates on two sets of textures that show through according to a mask.</li><li>Added a new mesh_triplanar_base material. It allows to texture meshes without using UV texture coordinates. Textures are simply projected onto a mesh along three axes.</li><li>Added an optional material option to animate grass when 'Clutter' shape is used for it.</li><li>Fixed non-square mipmaps compression issue.</li><li>Added 'auto' value for 'video_app' console variable (the engine sets the best of available APIs).</li><li>Fixed disappearing of shadows in stereo 3D mode.</li><li>Better detection of GLX_ARB_create_context extension support (improved MESA compatibility on Linux).</li><li>Added vertical and horizontal flip functions for Image.</li><li>Safer way to restore fullscreen video mode after focus change in Windows.</li><li>Fixed issue with non-attached deflector position for particle systems.</li><li>Added 'Angle fade' option for mesh_leaf_base material to hide polygons wich are currently perpendicular to the screen plane.</li><li>Adjustable number of generated cells for grass and clutter objects.</li><li>Improved fullscreen mode setting in Linux and Mac OS X.</li><li>Added 'Shadow radius' parameter to terrain, grass, cluster nodes. It controls the distance outside the view frustum used to render polygons to avoid disappearing shadows. It is 0 by default ('radius' parameter in WorldCluster is now gone, please set up this one instead).</li><li>More configurable render_composite material: you can render non-blurred objects by mask with DOF or motion blur enabled using the Auxiliary buffer.</li><li>Fixed rendering of two-sided objects into deferred buffer.</li><li>Removed render_use_specular console variable.</li><li>Added 'spherical' flag for sky (the sky is a full sphere mesh instead of a hemi-sphere, if enabled).</li><li>Improved light scattering when used together with a background cubemap.</li><li>Added render_use_shadow_kernel console variable (set it to 0 to improve shadow rendering performance).</li><li>Improved shadows quality on 'high' shaders profile.</li></ul><h3>Terrain:</h3><ul><li>Per-surface control of flatness threshold for terrain.</li><li>Changed format of terrain files (.ter); please use utils/Upgrade/terrain.usc script for conversion (USC interpreter is required, see below).</li><li>Removed tesselated terrain material.</li><li>Optional ambient lighting for terrain which allows to disable a world light pass and render terrain in a single ambient pass. No shadows can be cast on the terrain in this case, though.</li><li>Fixed triplanar shading for terrain.</li><li>Optimized terrain shading.</li></ul><h3>GUI:</h3><ul><li>Added a scroll bar in WidgetComboBox.</li><li>Reduced TTF atlas texture size.</li><li>Added IME support into the Interface plugin.</li><li>Reduced memory consumption by widgets to a small degree.</li><li>Added 'dynamic' flag for WidgetSprite images that are frequently updated in runtime.</li><li>Faster video playback.</li><li>Added 'changed' callback for paned containers and WidgetScrollBox.</li><li>Added setMouseEnable() function to control rendering of the mouse.</li></ul><h3>Physics:</h3><ul><li>Fixed continuous collision response.</li><li>Added CCD for PhysicalTrigger, BodyParticles, BodyCloth and BodyRope.</li></ul><h3>Sound:</h3><ul><li>Fixed seeking on WAV files.</li><li>Fixed bug in libvorbis library for Mac OS X.</li><li>Added 'auto' value for 'sound_app' console variable (the engine sets the best available API).</li><li>Correct playback of short streamed sounds.</li></ul><h3>UnigineScript:</h3><ul><li>Stack size is increased to 2048 elements.</li><li>Added '#pragma no_optimize' support.</li><li>Support of up to 6 arguments for console commands called from a script.</li></ul><h3>Other:</h3><ul><li>Fixed path to cache directory.</li><li>Updated Xcode project for iOS.</li><li>Added clipboard support in Mac OS X.</li><li>Added filesystem_mmap console variable (set to 0 to disable memory-mapped files).</li><li>Added file name modifiers system. Read <a href="http://altdevblogaday.com/2011/12/22/platform-specific-resources/">the original idea</a>.</li><li>Added a new NodeTrigger node type. It fires callbacks when enabled/disabled or moved, which is useful to control objects inside of WorldClutter and WorldCluster).</li><li>Added memory_save console command for dumping memory pools (useful for offline analysis).</li><li>Added 'compaction' flag for meshes that prevents a mesh copy from being stored in system memory (making no intersection or collision possible with it). This option is highly useful for PlayStation 3.</li></ul><h3>Tools:</h3><ul><li>Added toggling of channels in ImageView (R, G, B, A hotkeys).</li><li>Added one-way NodeReference collector into WorldCluster (very useful for final content optimization). See "Collector" tab in WorldCluster node.</li><li>File name for SoundSource is now displayed in UnigineEditor.</li><li>Added standalone UnigineScript interpreter (USC tool, see below).</li><li>Added AlphaMapper tool into ResourceEditor for baking high-quality alpha test textures based on high-poly mesh geometry.</li><li>Fixed mesh overlapping visualization in ResourceEditor.</li><li>Fixed MD5B mesh format import.</li><li>Improved terrain creation in UnigineEditor.</li><li>Support of the normal map import for terrain.</li><li>Added optional Y-axis texture flipping on terrain data import.</li><li>Added baking of objects into diffuse, normal or lightmap textures for terrain. See "Grabber" tab in ObjectTerrain node.</li><li>Tools/Interface tab in UnigineEditor is moved into Tools/Common.</li><li>Backup of a NodeRefence file is now stored in UnigineEditor when edited.</li><li>Added world profiler (shows node, body and joint count), 'show_profiler 3' console command.</li></ul><h3>Standalone UnigineScript interpreter (USC tool)</h3><p>
The stand-alone interpreter (called USC due to its script file extension) allows for making Unigine scripts into executable programs that are run directly from the environment or from the command-line. As the interpreter works independently, it offers an easy way for developers to extend the functionality and solve the specific or recurring tasks for which it is not necessary to create a separate executable application.
</p><p>
The tool supports the following:
<ul><li>Everything from the Core library of UnigineScript (can be used to read/write files, parse XML files, handle images, perform mathematical calculations, etc).</li><li>Meshes. Load and save a mesh, modify or clear all its data. You can add and set transformation to mesh surfaces, as well as change position, normal vectors and texture coordinates for separate vertices.</li><li>Skinned meshes. Just like in case with simple meshes, you can get access and modify surface and vertex data for skinned meshes. Data on bones of the rig is also exposed.</li><li>Support of multiple CLI arguments.</li></ul>
</p><p>
Source code of the stand-alone interpreter can be found under source/tools/Interpreter, it is included into ToolsPack.
</p><a href="/devlog/120227-oilrush1.jpg"><img class="shadowed" src="/devlog/120227-oilrush1_sm.jpg" width="650" height="366" alt="Oil Rush" title="Oil Rush"/></a><p><strong>PS:</strong> Unigine-powered <a href="http://oilrush-game.com/">Oil Rush</a> naval strategy game has been released for Windows, Linux and Mac OS X. Its sources are available for Unigine customers as a reference project.
</p><a href="/devlog/120227-oilrush2.jpg"><img class="shadowed" src="/devlog/120227-oilrush2_sm.jpg" width="650" height="366" alt="Oil Rush" title="Oil Rush"/></a>
			]]></description>
		</item>
		
		<item>
			<title>Railroad simulation, C++ API improvement</title>
			<link>http://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://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://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>
		
	</channel>
</rss>
