2010-07-26
We are hiring
Our company is growing so we would be happy to see new team members: developers, PM, sales manager and system administrator. Moreover, the good news is our convenient office in Tomsk is now doubled in size!
2010-05-25
Heaven 2.1, Tropics 1.3, Sanctuary 2.3
Released updated versions of Unigine benchmarks with support of OpenGL 4.0 (including hardware tessellation) and stereo 3D technology (including 3D Vision): Heaven 2.1, Tropics 1.3 and Sanctuary 2.3.
2010-05-04
5 years since the first commercial release of Unigine
The first commercial version of Unigine engine was released five years ago, on May 4, 2005. With the release number 0.3, it had codebase size of approximately 10% relative to the current one. At that time, there used to be 5 people on board.
2010-03-23
Unigine Heaven Benchmark 2.0
Updated version of Unigine Heaven DirectX 11 benchmark is now publicly available. Main changes are: added more content, improved engine, introduced "moderate" and "extreme" tessellation modes, added Linux version (32/64 bit).
2010-02-22
Unigine booth at GDC SF 2010
We gladly invite you to come visit our booth #1344 at Game Developers Conference, San Francisco, 2010. There you will be presented the recent version of Unigine Engine and the Heaven Benchmark 2.0 along with a lot of featured Unigine-based content. Feel free to contact us for an appointment.

Development Log

You can subscribe to our RSS feed.
There is also a translated LiveJournal account: unigine_devlog.
2008-02-08 Link

Improved vertex cache optimization

Recent changes:

  • Dynamic irradiance environment maps for meshes, terrains and billboards (by means of a harmonics basis).
  • New vertex cache optimizator (processing time depends on mesh complexity linearly); it also reorders polygons for more optimal rendering (less overdraw).
  • Overlapping visualization for 3D meshes in ResourceEditor / Viewer.
  • Refactored plugins for 3D modeling packages, vertex cache optimization is always performed on export now.
  • Faster loading of large files in non-native formats into ResourceEditor.
  • Improved soft shadows.
  • Adjustable bias for translucence.
  • Hash can be stored in stack memory now.
  • Improved algorithm for instance rendering (no performance drop on non-instanced geometry).
  • Reflection masks (works the same way as light and collision masks).
  • New console variables: render_show_penumbra (shows penumbra in color) and render_show_splits (shows PSSM splits in color).
  • Added performance stress-tests.
  • Direct3D9 shaders have been switched to row-major order matrices.
  • Correct detection of ATI R600 cards.
  • Workaround for Direct3D9 / ATI2 textures crash bug.
  • Fixed shadow bilinear sampling on R600.
  • Multiple selection of nodes in UnigineEditor (for cloning, deletion, transformations and export).
  • Export of mesh data from UnigineEditor.
  • Support of images in ComboBox.
  • Updated installation script (no more problems with binary version).

No vertex cache optimization (overlapped regions are colored by red):
Non-optimized mesh
After optimization:
Optimized mesh
Thus we get less overdraw after optimization.

Now there are the following shader presets available:

Shaders preset Features
High Soft shadows for all light sources
Medium No soft shadows
Low No bilinear filtration of shadows on ATI cards; water has only 2 normalmaps instead of 4; no foam for water; no shadows for water; no volumetric interaction of particles; no shadows of particles; ambient occlusion shader makes 2 times less samples; no soft interaction of omni and projected volumetric objects

By the way, there is very bad situation with biases on R600 / Direct3D10, their values are abnormally low. We are waiting for a responce from AMD drivers team now, hope this bug being fixed very soon.

PS: Only 3 weeks left to license current version of Unigine at very low prices (before 29th February).

2008-01-23 Link

New shadows

Recent changes:

  • High-quality PSSM (Parallel Split Shadow Map) shadows for LightWorld.
  • Stencil shadows R.I.P.
  • Only hardware shadow maps are supported now, since they are faster and consume less memory.
  • Masks for collisions and lights (by using them one can control lighting and collision detection per-object).
  • New SANIM file format for compressed bone-based animations.
  • ResourceEditor / Viewer now can play "animation only" files, loaded in addition to a skinned mesh.
  • Export of single bind pose frame in 3ds Max plugins.
  • Normalmaps are to be compressed into ATI2 format now.
  • Double-click callbacks for EditLine and EditText widgets.
  • Support of ATI R300 has been discontinued (due to too tight limit for instruction count per shader).
  • Support of NVIDIA NV30 has been discontinued (it's too old for modern stuff).
  • mesh_detail_base material merged into mesh_base (for backward compatibility there is a material with that name in "deprecated.mat" library still, but it will be removed soon).
  • Specular is always on now.
  • New alpha_scale option, which allows continious adjustment of transparency for meshes and vegetation (see corresponding sample in "materials" serie).
  • A bunch of light samples.
  • New articles in "Content Creation" section of the manual: "Static Geometry" and "Texturing".
  • Updated UnigineScript documentation.

It's sad to acknowledge, but different techniques of avoiding shadow map aliasing like LiSPSM suck, because they are unstable and produce a lot of headache with special geometry dividing. We have wasted a lot of time to get better results with them, but splitted maps seems to be more predictable and robust. Anyway even PSSM requires tweaking for a scene: there is a number of parameters (shadow map resolution, maximal distance to the shadow caster, global "shadow off" distance), plus it's important to turn on self shadowing only where it is really needed. Another good thing about PSSM is that it loads CPU less than LiSPSM did, thus it is more scalable.

Here is an example of scene with PSSM:
Parallel Split Shadow Map

A little note about collision and lighting masks. There are 32 lighting channels available, all of them can be configured to accept some light source or not, each object can belong to a lighting channel according to its lighting mask. The same is for collision masks. By using collision and lighting channels a designer obtains more control over the scene, so we recommend to use that feature (double click on a mask field to edit it in UnigineEditor).

By the way, guys from NVIDIA have recently fixed a minor driver bug, reported by Frustum, there are 4 more still opened (it seems that we are one of the most frequent reporters in their bug tracker, hehe). ATI drivers work better now, both in Windows and Linux, we aren't experiencing major problems with them for the moment.

2008-01-08 Link

iZ3D stereo monitors supported

For those who don't read our news:

  1. Unigine introduces iZ3D stereo monitors support at CES, read more here.
  2. You have the last chance to license current version of Unigine at very low prices before 29th February, after that date prices will be much higher.

Changes for the week:

  • Support of iZ3D stereo monitors.
  • "Scattering" flag in materials for correct pre-scattering blending (with this flag enabled a blending material will be rendered before light scattering; disabled by default for blending materials).
  • Adjustable scattering threshold (for correct translucence of the Sun through objects).
  • Seamless immersion into the water.
  • Speed up of water rendering on ATI cards.
  • "Spark" emitter is now available for particle systems (sparks can be generated after a collision of a particle from another system or their coordinates can be set manually).
  • "Clipping" flag in particles causing particle's death after intersection or collision.
  • Volumetric light scattering effect (shadow shafts), can be enabled per-surface.
  • New functions for manual update of nodes (engine.world.addNode) and bodies (engine.physics.addNode) for invisible objects.
  • New samples: more particles, another variant of PlayerActor usage with weapon attached.

That's how volumetric light scattering looks (length and exposure of shadow shafts can be adjusted):
Volumetric light scattering
That's all for today, stay tuned.

2007-12-31 Link

Last update of the year

What's new:

  • Intel Compiler 10.1 support for MS Windows builds.
  • Screen-space ambient occlusion.
  • ResourceEditor / Viewer can load animation from md5b and animb formats.
  • Heavily improved Players: 2 frictions (min for moving and max for standing), new Offset matrix (for manual rotation of player's head) in addition to modelview one, added reference to controls (system ones by default).
  • Correct work of PlayerSpectator and PlayerActor with arbitrary directions of Up vector, "turning" parameter is added to specify turning speed.
  • Improved PlayerPersecutor, its "offset" renamed to "anchor".
  • Improved controls, added dummy ones.
  • A bunch of new Player samples.
  • Safe Body transform without clearing speeds and contacts: setSafeTransform().
  • Physics callbacks have 2 additional arguments now.
  • Correct save/restore of all callbacks.
  • engine.engine.* functions are renamed to engine.* in UnigineScript.
  • Improved threads in UnigineScript: now they can be called with arguments and have their own scope, thus there can be a lot of them, working in parallel; "thread_create" function is replaced with "thread".
  • New setFrameBone* and getFrameBone* functions, which don't call final blending of the animation.
  • Small improvements of filesystem (reduced memory allocation count).

No Ambient Occlusion, a boring flat image:
No Ambient Occlusion
Real-time Screen-Space Ambient Occlusion brings a lot of 3D look even for non-lit regions:
Real-time Screen-Space Ambient Occlusion

Some statistics for today:

	engine           5736 Kb  476 files  205649 lines
	shaders           862 Kb  215 files   31279 lines
	scripts            75 Kb    7 files    2287 lines
	editor            701 Kb   55 files   25090 lines
	tools             733 Kb   53 files   26442 lines
	app main           47 Kb   18 files    1812 lines
	app samples        69 Kb   29 files    2915 lines
	extern libs       120 Kb   12 files    3579 lines
	build system       34 Kb   24 files    1535 lines
	build scripts      44 Kb   48 files    1461 lines
	docs scripts       30 Kb    8 files     964 lines
	total            8456 Kb  945 files  303013 lines
That statistics is not full, it doesn't include information about 2 Unigine-based projects we are working on now.

Happy New Year!

2007-12-20 Link

ObjectWaterMesh, MinGW and a bunch of bugfixes

Recent changes:

  • New ObjectWaterMesh object for small water pools.
  • Improvement of build scripts (new variable "g_compiler" in addition to "g_os"), added support of MinGW (engine can be built with it, but the build will not be properly functional; tools are working ok).
  • All console variable are now declared in source/engine/EngineConsole.h.
  • "manager_create_*" console variables are renamed to "manager_preload_*".
  • Fixed mouse scroll handling in Linux.
  • Bones visualization mode in ResourceEditor / Viewer.
  • Fixed collisions of RagDoll with BodyDummy.
  • Fixed "unknown body" bug in physics solver.
  • Non-intersectable objects now can be selected by double-click in UnigineEditor.
  • 2 samples of LODs usage.
  • Object's materials are now handled by the material class.
  • A bunch of flags in objects for surfaces (collision, intersection, shadows and so on).

By the way, building Unigine with MinGW on win32 have helped refactoring win32-specific code because GCC is a little bit more verbose than MS VS.