Jump to content

Unigine SDK 2011-05-30


photo

Recommended Posts

Render:

 

* Added a screenspace sub-surface scattering postprocess.

* Support of a custom iris texture for DOF.

* Separate near and far focal ranges for DOF.

* Improved quality of bokeh (lens) DOF.

* Added a fullscreen DOF mode with per-pixel accuracy (very performance demanding): to activate, use "render_dof 3" console command.

* Support of a custom color texture for HDR lens.

* Different blending modes for the mask in mesh_noise_base material.

* Renamed states in sky material (use upgrade.py to upgrade your project files).

* All postprocesses are now applied as materials in the following order: as RenderMaterials (a pass after geometry is drawn and before any other postprocess, such as HDR, DOF, etc. is applied) or PostMaterials (the very last pass after all other postprocess; it is rendered after the Composite shader composes the viewport image).

* Obsolete render_antialiasing filter is now avalable as postprocesses material.

* Reduced memory consumption by meshes (if they are not used in physics or intersection calculations).

* Texture, vertex and index buffers are merged into a single one on PlayStation 3 (to reduce system memory consumption).

* Fixed the leaf shader in OpenGL (billboard leafs were not reflected properly).

* Added support of PVR4 image format (compression is performed via Daubechies6 wavelet).

* Refactored a set of "simple" shaders.

* Performance optimizations for PowerVR SGX mobile GPUs.

* Fixed LOD fading in reflections.

 

110530-sss_sm.jpg

 

UnigineScript:

 

* Added get_function() that returns a unique script function ID (which can be used as an argument to call(), making it almost as fast as a direct function call).

* Correct checking for UserArray bounds.

* Added a "quat_identity" constant.

* Added a single-argument append() method for maps (only a key needs to be specified).

* Support of nested namespaces (namespace Foo::Bar::Baz {}).

* Fixed the incorrect behaviour of "+=" operators for array elements in some cases.

 

Sound:

 

* Added "Source" and "Reverb" masks for sounds and players.

* Added a 32-channel sound mixer: it can change the volume per sound group (determined by each bit of "Source" mask) and set the maximum limit of audible sources in a group.

 

GUI:

 

* Added the alpha version of Qt4 C++ plugin (it is currently in development, see below).

* VScroll and HScroll widgets are merged into Scroll.

* VSlider and HSlider widgets are merged into Slider.

* VSpacer and HSpacer widgets are merged into Spacer.

* Added intersections with primitives inside of WidgetCanvas.

* Correct parsing of XML entities in FontRich formatted text.

* Support of font alignment in Flash.

* Support of bold and italic fonts in Flash.

* Added namespace prefix as a parameter for UI loading.

 

Qt plugin at present supports almost all widgets. It can freely use both Unigine UIs and Qt ones:

 

* engine.interface.addUserInterface("unigine.ui")

* engine.interface.addNativeInterface("qt.ui")

 

The main purpose of the Qt plugin is to revamp and implement a new version of UnigineEditor with improved usability and the extended feature set.

 

110530-unigine-qt_sm.jpg

 

Tools:

 

* Added plugins for 3ds Max 2012.

* Fixed handling of NodeLayer in UnigineEditor.

* Improved validator in UnigineEditor (all referenced materials and meshes are checked for actual usage, added scanning of folders for unused resource files).

* New CLI options in imagedds.py: -ios (for compression of all necessary textures into PVR4 format) and -d (for changing the working directory).

* Restored export of nodes together with their materials in ResourceEditor.

* UnigineEditor saves its settings into a dedicated config (-editor_config CLI option).

* All postprocessing materials can be edited via UnigineEditor.

* Correct reloading of rope and cloth meshes in UnigineEditor.

* Added Tools->Plugins window in UnigineEditor.

 

Other:

 

* Added SpeedTree C++ plugin (import of meshes, auto-generation of materials). It can be used via Tools->Plugins window in UnigineEditor. To use it, you need to rebuild the plugin with your SpeedTree license key.

* Removed a "shift" particle emitter type; use a new "emitter shift" option instead (works with all types of emitters).

* "Random" particle emitter spawns particles from the polygon surface now, particles are emitted along the direction of polygon's normal.

* Refactored a "Passage" demo for mobile platforms.

* Extended a set of lookup functions in C++ API: isSystemVariable(), isSystemFunction(), isWorldVariable(), isWorldFunction(), isEditorVariable(), isEditorFunction().

* Added length2() method for C++ API vectors.

* Added C++ API functions for removing UnigineScript extensions.

* Added ObjectParticles::clear() method for clearing spawned particles.

* Fixed stalls on non-block sockets in Windows.

* Added a multi-threaded CPU framework (it can potentially replace EngineThreads in the future).

* Updated SDK installer for Windows.

 

Documentation:

 

* Online version of up-to-date documentation is available for customers via Unigine Developer Community from now on.

* Added description of Unigine::Ffp and Unigine::FileSystem classes in C++ API documentation.

* Updated "Execution Sequence" article; added information how to efficiently use world update() and flush() functions.

* Updated "Physics simulation" article.

* Updated documentation on Network Module (API and usage sample).

* Updated information on new DOF parameters.

* Added description of mesh_noise_base material.

* Added documentation on all postprocessing materials and how to apply them.

* Updated "Mesh File Formats" article.

 

Download links

 

All files can be found in "Downloads" section of the portal: https://developer.unigine.com/fileserver/index

Link to comment
  • Replies 51
  • Created
  • Last Reply

Top Posters In This Topic

Does this mean we can use QT Designer to build the interface for Unigine?

 

As a side note :- I have taken to using a gui extension for unigine ui files since KDevelop assumes that a ui file is a qt ui file and tries to load the qt visual editor component.

We were also hoping for large world support this time around.

Link to comment

Hi Denis, nice update, but what about deadly awaited large world support (large coordinates and background node file streaming) ? Thought this would be priority for this SDK update ?

 

June is a hard deadline for that feature.

Link to comment

Does this mean we can use QT Designer to build the interface for Unigine?

 

As a side note :- I have taken to using a gui extension for unigine ui files since KDevelop assumes that a ui file is a qt ui file and tries to load the qt visual editor component.

We were also hoping for large world support this time around.

 

Yes, we can use Qt designer for UI creation.

engine.interface.addNativeInterface("qt.ui") loads Qt interface, binds widgets, creates callbacks (based on widget and callback name).

The workflow is the same as working with Unigine UI files.

 

Large coordinates support will be available until July.

Link to comment

thanks for the update, but what time to support navmesh?

 

Navigation meshes will be available only after large coordinates. Approximately at July.

Link to comment

Large coordinates support will be available until July.

 

Hi Alexander, thanks for the info ! Will this also include background node file streaming ?

Link to comment

for the ios / osx / android version how download the new version :blink:

We are working on that right now. I guess mobile SDKs will be available for download in 1-2 days, as well as documentation on them.

Link to comment

can't find the speedtree plugin where is it?

You need a license for SpeedTree in order to get it. Please contact licensing@unigine.com if you have one.

Link to comment

Yes, we can use Qt designer for UI creation.

engine.interface.addNativeInterface("qt.ui") loads Qt interface, binds widgets, creates callbacks (based on widget and callback name).

The workflow is the same as working with Unigine UI files.

I am getting

Interpreter::parse(): unknown token "engine.interface"

when I try to use engine.interface.addNativeInterface("qt.ui"). I tried gui instead of interface but this does not seem to have the function in it either.

can somebody test this for me?

Link to comment

I am getting

Interpreter::parse(): unknown token "engine.interface"

when I try to use engine.interface.addNativeInterface("qt.ui"). I tried gui instead of interface but this does not seem to have the function in it either.

can somebody test this for me?

You should build Interface plugin from source/plugins/ directory.

Or use own one for x86 binary.

Interface_x86d.zip

Link to comment

You should build Interface plugin from source/plugins/ directory.

Or use own one for x86 binary.

 

Ok I managed to get the plugin to build for X64 Linux. Attached is my modified qmake project file for 64 bits. I have the libInterface_x64d.so but none of the other libraries. I noticed that the Linux build is packaged with qt libraries for X86 but not X64... What next?

 

[update - updated scons file with extra flags to build on Ubuntu 11.4]

Interface.pro.zip

SConstruct.zip

Link to comment

Ok I managed to get the plugin to build for X64 Linux. Attached is my modified qmake project file for 64 bits. I have the libInterface_x64d.so but none of the other libraries. I noticed that the Linux build is packaged with qt libraries for X86 but not X64... What next?

 

[update - updated scons file with extra flags to build on Ubuntu 11.4]

 

Run the engine with following command line parameters:

-extern_plugin Interface -console_command "world_load test_interface"

 

You need only libInterface_x64d.so file in case of using system Qt libraries.

 

We use custom built Qt. You can find build scripts in externs/qt4/ directory.

To build Qt you should download qt-everywhere-opensource-src-4.7.2 and libpng-1.5.2.

After that just run qt-linux-x64.sh and perform "make install" from qt directory.

 

We can't provide pre-compiled Qt libraries because of qmake restriction.

qmake has hard compiled directory paths relative to system root inside it and can't be relocated into the different directory.

 

There is another problem under linux... Sometimes engine crushes on exit because of engine and Qt freetype libraries conflict.

Link to comment

 

We use custom built Qt. You can find build scripts in externs/qt4/ directory.

To build Qt you should download qt-everywhere-opensource-src-4.7.2 and libpng-1.5.2.

After that just run qt-linux-x64.sh and perform "make install" from qt directory.

I will see how I go with the system libraries... I already do QT/KDE dev work so I am hoping this will go off without a hitch.

[update]

ok I have a build and a mostly working example though buttons etc are not clickable. Is this a known issue, am I missing something?

InterfaceNativeInterface native_ui;
InterfaceWidgetWindow MainWindow;
InterfaceWidgetButton button;
void do_something() {
	log.message("did something\n");
}

namespace Interface {
void init() {
	native_ui =  engine.interface.addNativeInterface("ai3d/gui_5/test.ui");
	engine.interface.addChild(MainWindow);
	MainWindow.setEnabled(true);
	button.setCallback(GUI_CLICKED,"do_something");
	button.setEnabled(true);
}

void update() {
// 		engine.interface.update();
}
}

[/update]

 

We can't provide pre-compiled Qt libraries because of qmake restriction.

qmake has hard compiled directory paths relative to system root inside it and can't be relocated into the different directory.

qmake isn't a hard requirement for qt. CMake definitely works for qt projects, should avoid this issue and it is really easy to set up (it's the default Build System for KDevelop). Scons could also work but would take more effort.

Link to comment

 

We use custom built Qt. You can find build scripts in externs/qt4/ directory.

 

 

This directory does not exists in UnigineSDK-binary-2011-05-30-linux.zip.

Using for the moment system libs...

 

 

Another question:

Is it possible to use the Qt stuff inside the engine? At the moment a new window is popping up, it would be nice to have the Qt stuff inside the window.

Link to comment

namespace Interface {

void init() {

native_ui = engine.interface.addNativeInterface("ai3d/gui_5/test.ui");

engine.interface.addChild(MainWindow);

MainWindow.setEnabled(true);

button.setCallback(GUI_CLICKED,"do_something");

button.setEnabled(true);

}

 

void update() {

// engine.interface.update();

}

}[/code]

 

Use INTERFACE_CLICKED instead of GUI_CLICKED callback.

 

Moreover if you have exported InterfaceButton with "button" name, "button_clicked" function will be used as button callback automatically after interface loading.

Link to comment

This directory does not exists in UnigineSDK-binary-2011-05-30-linux.zip.

Using for the moment system libs...

 

Another question:

Is it possible to use the Qt stuff inside the engine? At the moment a new window is popping up, it would be nice to have the Qt stuff inside the window.

 

It's not possible to use Qt windows inside the main engine window. You can create InterfaceMdiBox container for all Qt windows as different window.

I think upcoming Unigine editor will use two window configuration. The first is the engine rendering window. The second is the editor fullscreen window.

Creating of engine rendering window as Qt widget is bad idea from performance and controls handling point of view. Another problem is amount of rendering API which is not supported by Qt.

Link to comment

Use INTERFACE_CLICKED instead of GUI_CLICKED callback.

 

Moreover if you have exported InterfaceButton with "button" name, "button_clicked" function will be used as button callback automatically after interface loading.

 

that and adding

engine.app.setUpdate(1)

worked. Well good enough to test, the Artists here will kill me if I leave setUpdate on.

 

I am not sure what I think about qt only running as separate window at the moment. My prefence would be to find a way to dock QT widgets outside the Unigine View but in the same window or at least find a way to make these windows transient to the main Unigine window.

Link to comment

In online documentation we see void engine.render.setMaterials(string postprocess) description, that is removed?

 

If in onlide documentation write "(" in search, then will be an error: Sorry, some error has occured

Link to comment

You need a license for SpeedTree in order to get it. Please contact licensing@unigine.com if you have one.

 

I've sent the mail a week ago, but till today, no response from licensing@unigine.com :mellow:

Link to comment

×
×
  • Create New...