Jump to content

Unigine SDK 2012-04-11


photo

Recommended Posts

120411-valley3_sm.jpg

 

Render:

  • Added mesh_overlay_base material (useful for creating procedural rust or moss on objects).
  • Optimized assigning of materials to object surfaces.
  • Fixed video playback in 3D stereo mode under DX11.
  • Added 'MaxShadowSplit' option for surfaces to skip rendering of high-detail shadow splits from LightWorld. (It is useful for small objects like stones, etc.)
  • Fixed crash on render_manager_reload console command.
  • Environment cube map texture is not in SRGB format from now on.
  • 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.
  • Additional noise transformation parameter for sky volume clouds.
  • Improved performance of dynamic vertex/index buffers on open-source drivers in Linux.
  • Support of vertical synchronization in Linux.
  • Renderer checks for EXT_texture_compression_s3tc extension availability on startup (a Mesa driver doesn't support it due to the legal issues).
  • A mask for ObjectGrass, ObjectMeshClutter and WorldClutter is now editable in real-time.
  • 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.
  • Increased the default values for Shadow bias and Slope parameters for all light sources.
  • Added separate diffuse and specular color multipliers.
  • Improved OpenGL ES initialization on iOS.
  • Added support of iPad 3.
  • Added support of hardware shadow maps (cast from LightProj and LightWorld sources) on mobile platforms.
  • Added a wind direction vector common for all vegetation (grass and trees).
  • Implemented OpenGL ES support in Linux.
  • 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.
  • Added a separate emission_color multiplier.
  • Improved compatibility with a new NVIDIA OpenGL driver.
  • Added 1/4, 1/2 and full (relative to the screen height) reflection map sizes for reflective materials.
  • Added mesh_lut_base material with baked lighting (highly efficient for mobile devices).
  • Added post_filter_wet post-process materials (for the effect of water trickling down the surfaces).

 

120411-valley1_sm.jpg

 

UnigineScript:

  • Correct ExternClass variables casting on inter-script calls.
  • Added inter-script calls sample: systems/system_00.
  • Added more samples on WorldExpression usage: worlds/expression_02, worlds/expression_03.
  • Configurable splash screens in core/scripts/system.h.
  • "using" keyword searches for a given namespace through all nested namespaces up to the global one instead of searching only in the global scope.
  • The number of available namespaces is increased to 65536.
  • WorldExpression calls __constructor__() and __destructor__() functions on initialization and shutdown (it can be used for proper creation and deletion of created resources).
  • EPSILON and NULL definitions are removed from Unigine::Skinner blocks.
  • Widgets::Dialog is created in the external GUI, if it's available.
  • Improved interaction of Widgets::Line and Widgets::Track.
  • Added Widgets::Time class for time manipulation.
  • Added Widgets::DialogMaterial, DialogProperty, DialogNode dialogs.
  • Improved implementation of engine.world.isNode() and other similar functions: now they can receive both the object identifier and the object pointer.

GUI:

  • ObjectGui and ObjectGuiMesh take into the account asymmetric frustum when calculating mouse coordinates.
  • 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).
  • Fixed infinite update of WidgetSpriteViewport when the iFPS value is low.
  • Fixed issue with vertical flipping for WidgetSpriteMaterial widget.
  • Fixed gradient texture calculation algorithm for Flash movies.
  • Added Widget::set[get]MouseCursor() functions for correct switching of the cursor between multiple GUI interfaces.
  • Added Widget::getParentGui() function to access a parent GUI object.
  • Fixed crashing when the scroll space in WidgetComboBox was very small.
  • Fixed texture and text arrangement for WidgetTabBox, WidgetListBox and WidgetTreeBox.

C++ API:

  • Fixed crash on multiple Unigine::removeExtern*() invocations with the same argument.
  • Added ArrayMap::Iterator class to enumerate all elements.
  • Added Variable::getTypeInfo() function which describes variable content in details.

UnigineEditor:

  • Added Tracker system (see details below).
  • Added mask editor for ObjectGrass, ObjectMeshClutter and WorldClutter.
  • Added 'Create mask' button for ObjectGrass, ObjectMeshClutter and WorldClutter objects.
  • Added a random seed for WorldCluster generator.
  • Added custom terrain brushes.
  • Automatic compression of terrain coarse textures when the source textures are placed in the "uncompressed" folder.
  • Fixed issue with the terrain lightmap grabber.
  • Added PlayerPersecutor node (it is not movable until a target is assigned for it).
  • Removed "Activate" button in PlayerDummy node. To test the camera view, open Camera window and switch to the selected player.
  • Added basic LUT texture editor (Tools -> LUT) to generate textures with baked lighting.
  • Added new icons for different nodes.
  • Changed the default world settings.

Other:

  • Added new vegetation samples optimized for flight simulators (samples/materials/leaf_02).
  • Added a city rendering sample that shows how to use occluders for optimized rendering (samples/stress/occluder_03).
  • Node::set[get]Data is renamed into Node::set[get]Variable. Old "data" is a simple string (stored in world and save files) now.
  • Changed user data path for Mac OS X projects: home_path + "Library/Application Support/" + project_name.
  • ObjectGrass, ObjectParticles, ObjectMeshCluster, ObjectMeshClutter and WorldClutter can be stored inside NodeDummy and still intersect with the parent geometry on the generation stage.
  • Fixed wrong bounding space of NavigationMesh after the world is loaded.
  • Fixed pathfinding route issues inside of a NavigationMesh.
  • Added Maya 2012 plugins.
  • Migration to new Xcode and iOS 5.1.
  • All empty XML nodes are automatically removed from the world files.

Tracker

 

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:

  • Easily create key frames for all nodes in the world, as well as in-game cameras and render settings.
  • Set up day-night shift and weather conditions change.
  • Switch between the cameras, change field-of-view on the fly and play sounds for creating stunning cinematics.
  • Animate interactive objects in the game, for example, lights, doors and platforms.
  • 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.
  • And much more.

 

120411-tracker_sm.jpg

 

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.

Read more in the documentation: UnigineScript / High-Level Scripts / Unigine::Tracker.

Valley demo preview

 

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.

The preview version also features weather animations created with Tracker system:

  • Day-night cycle with various weather conditions (cloudiness, wind, rain) is controlled in 'day_cycle_mixed' track. It combines all tracks listed below.
  • Positions of sun and moon on the horizon are set in 'sun_rotation' and 'moon_rotation' tracks.
  • 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.
  • Rain (rain particles across the screen, splashes on the ground, scattering for a downpour) is controlled in 'rain_control' track.
  • Wet surfaces post-process (render_filter_wet material) is controlled in 'rain_wet_surface_control' track.
  • Wind (the speed and direction of wind, trees sway animation) is set in 'wind_force_control' track.
  • Depth of field effect (focal distance change, different amount of blur) is controlled in 'dof_f2' and 'dof_f8' tracks.

 

120411-wet_sm.jpg

 

The preview is available for engine licensees only.

First-person shooter prototype

 

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.

 

Download links

 

All files can be found in "Downloads" section of the portal: https://developer.un...ileserver/index

  • Like 2
Link to comment

Where is preview valley for OSX ??? :)

I want to try .....

 

You can copy data/demos/valley to Mac OS X SDK to take a look now. There will be a Mac build in the final version.

Link to comment

Thanks for the Valley preview - this has already helped immedietly with how to generate loads of objects and answered a ton of other questions i had. However, i am still interested to see how large a world can be built when multiple terrain tiles of this size are used to build realistic sized simulation worlds. We seem to hit a limit of around 10 x tiles of this size before Unigine crashes. We plan to try a 64 bit build of our software to see if it helps us to generate more tiles, as they crash is not due due low memory, but being unable to allocate enough memory.

 

nice work!

Link to comment

I believe the shooter prototype is missing some files from the installer

 

Having the same issue here. Also, the double precision works!

 

Also, are you guys going to put the valley demo in the windows evaluation kit?

Link to comment

What is the error message with prototype?

 

The windows binary installer under data/prototpes/shooter only contains the file unigine.cfg. I assume it should have a lot more files here. When you try to lauch the prototype in the browser, it can't find unigine.cpp in this directory, as it doesn't exist.

Link to comment
  • 1 month later...

I have been playing around with the Track editor and Valley demo. We are looking at using this to replace the existing code (based on tropics). We do use the Time of year functionality for shadow studies how would we integrate this into the tracker system?

Link to comment
  • 2 weeks later...

We are running the tracker system with the old sun position code from Unigine::Time. It wasn't very hard to integrate. I removed the sun position data in one of the trackers XML files and setup the tracker's callbacks to update the sun position. There are a couple of other things I had to do, I would have to look at my code to say step by step, but I think Danni is smart enough to figure it out.

Link to comment

Thanks HarpSeal... I had concidered hacking the tracker system I just wanted to know if there was an easier way of doing this before I dive in.

Manguste - basically I want to migrate to the tracker system completely but I also want the sun position to be controlled by time of day and time of year. If it is not possible without hacking the tracker scripts, that capability would be a great addition to the next build

Link to comment

Manguste - basically I want to migrate to the tracker system completely but I also want the sun position to be controlled by time of day and time of year. If it is not possible without hacking the tracker scripts, that capability would be a great addition to the next build

Danni, still do not see the problem here. You can simply change (enable/disable) track tracks with sun position if you need a sequence. You can also mix these track tracks with necessary weights (for example, between a track with the highest sun in summer and the lowest one in winter). Or do I miss something you want to do?

 

 

Is there a date for the next SDK release?

Steve, the ETA is in a week if no critical bugs are found.

Link to comment

Danni, still do not see the problem here. You can simply change (enable/disable) track tracks with sun position if you need a sequence. You can also mix these track tracks with necessary weights (for example, between a track with the highest sun in summer and the lowest one in winter). Or do I miss something you want to do?

 

Most probably they want to use "real-world" sun position based on sun ephemerides for defined date/time of year (e.g. for "correct" shadows in their - really great - architectual visualizations)

Link to comment

Ulf,

Ah, Ok, thank you for the explanation.

 

Danni,

Well, this is a useful feature indeed, but i'm not sure if we can squeeze it into the development plan any time soon. Anyway, we added it to the feature requests list.

So for now, what you can do is write your own Tracker parameter that integrates Unigine::Time.

Link to comment
×
×
  • Create New...