2008-04-26
Free software conference
Unigine Corp. is one of the initiators of "Free software: development and deployment" all-Russia conference, which will take place in Tomsk, Russia at 17-18 May. Read more on the official website (in Russian).
2008-04-08
Unigine at RGDC (KRI) 2008
Our CEO, CTO and lead 3D artist are going to attend Russian Game Developers Conference (KRI), which will take place from 18th to 20th of April in Moscow, Russia. Please contact us to make an appointment if you are interested in Unigine.
2008-03-25
PlaySys develops a Unigine-based adventure game
PlaySys, an Italian media and entertainment studio, develops an adventure game "The Dreamers" on the basis of Unigine. Read more in the official press-release.

Development log

You can subscribe to our RSS feed.
There is also a translated LiveJournal account: unigine_devlog.
Pages: 12345678
2007-12-17 Link

Water updates

Recent changes:

  • Caustics, foam, 4 geometry waves and underwater mode in ObjectWater.
  • Speedup of ObjectWater.
  • Shaders for 3D clouds via ObjectVolumeBox (PS 3.0 required).
  • Fixed 3D textures on OpenGL.
  • Refactored random generator (there is no Gaussian floats anymore), now it works faster.
  • ObjectVolumeBox transfers basis for generation of 3D texture coordinates inside the cube to a shader (for various sfx).
  • Per-texture anisotropy filtering in materials.
  • Removed gl_render_use_nv_texture_expand_normal console variable (it is always on now).
  • create_shaders console variable renamed to manager_create_shaders.
  • Correct detection of RGB10A2 support for old ATI cards.
  • Support of GL_ATI_shader_texture_lod extension.
  • Fixed refraction rendering in stereo mode.
  • Progress bar for world loading.
  • New order of splash screens rendering: intro splash shows prior to system init function, outro one renders after shutdown function.
  • Workaround on OpenGL TTF fonts for buggy Linux driver from NVIDIA.
  • Normalmaps visualization mode: render_show_normals.
  • ImageDDS prints an image info being run with -i option.
  • SpriteRender sample.
  • Updated reference manual, added ObjectWater class description.

3D clouds:
3D clouds

There are a lot of handles for water tweaking, so artists can be happy:
ObjectWater settings
Plus there are real-time caustics in here:
Caustics
and improved foam:
Foam

2007-12-07 Link

Stereo support, new water and physics callbacks

Recent changes:

  • Stereo mode in the render.
  • New ObjectWater instead of old water.
  • Refactoring of particles shaders.
  • Fixed issue with required D3DPTADDRESSCAPS_BORDER for ATI R400 and R300 (it doesn't support border clamp according to the spec, however it works ok).
  • Physics callbacks for joint destruction, freezing and new contacts.
  • More efficient memory allocations for physics.
  • 3 more physics samples (callbacks, freezing).
  • foreachkey() now iterates over ordinary vectors in UnigineScript.
  • New check() function for maps (it checks validity of a key).
  • Fixed jpeglib build for Windows.
  • "intersection" function is renamed to "getIntersection", the same is for collisions in meshes.
  • "world_clear" console command is renamed to "world_quit".
  • object.setMaterials removed; everything works by means of object.setMaterial.
  • Fixed bug with button handling for non-focused widgets in GUI.
  • engine.gui.setCallback function is renamed to engine.gui.addCallback.
  • New "editor_script" console variable for multiple editors.
  • "Come to me" button in UnigineEditor: it moves selected object right in front of the camera ('b' hotkey).
  • Fast simplified rendering mode in UnigineEditor (modes are toggled by 'F3' button).
  • Updated documentation on console variables and commands.
  • "Programming / UnigineScript / Script Debugging Tips" article in the manual.
  • Updated "Tools / UnigineEditor" article in the manual.

Here is the table describing combinations of "render_stereo" console variable's values and postprocessing materials to be used with different stereo output devices:

Output device OpenGL material Direct3D material render_stereo
Separate eyes device post_stereo_wide post_stereo_wide 2
N/A post_stereo_dual 1
Anaglyph glasses post_stereo_anaglyph post_stereo_anaglyph 1

A special small launcher is required for stereo mode on Windows since it works via an interesting trick. Users can enjoy stereo mode on Linux as well.

2007-11-14 Link

Completed documentation on UnigineScript

We are returning back to 1-2 weeks cycle for updates.

What's new:

  • Completed documentation on UnigineScript: full reference manual of the language, core library and REALLY HUGE Unigine-specific library (more than 2000 functions total).
  • Reduced render vertex size for all meshes (file formats are kept untouched), now it's impossible to control tangent basis in ObjectMeshDynamic.
  • Optimized shaders caching, old cache files are to be removed.
  • Detection of build parameters in compile time.
  • Resurrection of Sanctuary demo, which was broken before.
  • Radial blur has been improved up to 16 samples.
  • Splitted pseudoinstancing for OpenGL: gl_render_use_pseudo_transform (transformation setting via vertex attributes) and gl_render_use_pseudo_instancing (passing of rendered number ID via a vertex attribute) options.
  • A bunch of small bugfixes regarding Direct3D9/10 support.
  • Fixed UnigineEditor bug with selection of objects in a folded hierarchy.

Valia "Fattie" Vaneeva (our technical writer and developer) is a real hero, because she managed to overcome the documentation on UnigineScript. That was a challenging task since our library is very rich, almost everything can be done by means of scripting. By the way, we use our own documentation system, which allows to merge changes in code base with the documentation easily, it's really helpful.

2007-11-06 Link

DirectX 10 support is ready!

Unigine v0.4 now supports DirectX 10 in addition to OpenGL and DirectX 9. There is a huge heap of changes, we'll describe them by sections.

Framework:

  • A bunch of classes for Direct3D10 framework.
  • Initialization of Direct3D 9/10 through the library wrapper, thus engine can work in OpenGL even if there is no appropriate DirectX version installed.
  • Support of RGB10A2 (10 bits per channel) and sRGB textures.
  • Geometry shaders in OpenGL with external control by means of "input", "output" and "vertex" instructions.
  • Shader-capable GPU is a strong requirement now, no fixed-function pipeline.
  • Drastical boost of bounds calculation speed for skinned meshes.
  • Skinned and morphing meshes can extrude shadow volumes via geometry shaders.
  • Rendering of adjacency triangles for all APIs (used for shadow volume extrusion).
  • Border clamp support for textures.
  • Faster GUI rendering due to less state switching.
  • Variables transfer between instances of scripts interpreter.

Libraries wrapper helps to avoid multiple binaries for Vista and Windows XP, plus Unigine can work at least in OpenGL mode if DirectX is too outdated on a box. Introduced a while ago Ffp system (simple fixed function pipeline emulator) brings more commonality and will help porting Unigine to XBox360 and PS3.

Engine:

  • New global material options: "reflection_2d" and "reflection_cube" (both enebled by default), meaning whether the object is rendered in the reflection of corresponding type or not.
  • New policy for material flags: "repeat", "clamp_xy", "clamp_yz" and "clamp_xz" flags are removed, "repeat" is set by default, flags can be accumulated (as a comma-separated string). So, the full flags list is: "clamp_x", "clamp_y", "clamp_z", "clamp" (for all x, y, z directions), "border_x", "border_y", "border_z", "border" (for all x, y, z directions), border_w (white border).
  • Removed PRT textures form materials (R.I.P. PRT).
  • Controls has been improved and moved from Players into a dedicated directory.
  • Visualizer switched to Ffp emulator.
  • Default video mode is 1024x768 instead of 640x480.
  • Added "direct3d10" API initialization, it has minimal priority in the list.
  • Fixed ObjectVolumeBox flickering.
  • "Shadow" flag for surfaces (less materials required).
  • engine.editor.load/saveNode() moved to engine.world.load/saveNode().
  • Node files contain required materials list.
  • engine.system.bind()-like functions replaced by engine.system.get().
  • EngineLog uses system message boxes on fatal errors.
  • UnigineAPI doesn't require window pointer for initialization of external Direct3D9/Direct3D10 windows.
  • New option for texture format: "srgb" (means that the texture is to be normalized into standard color space while sampling).
  • New "render_srgb" console variable (disabled by default).

You can read more about sRGB in the Wikipedia, for example. Color values are linearized during reading from textures, further manipulations (including lighting) are performed in sRGB color space (linear one). However, precision is insufficient in dark regions, so to avoid artifacts, 10-bit precision buffers are used (when available). There is no such problem when HDR is on.

Render:

  • Direct3D10 render.
  • Added support of GL_EXT_draw_instanced, GL_EXT_geometry_shader4, GL_EXT_texture_array and GL_EXT_texture_sRGB OpenGL extensions.
  • Rendering to RGB10A2 buffers (supported by G80 and all ATI cards).
  • Optimized sorting for surfaces.
  • Visualizer renders before postprocessing.
  • Scene is rendered always via TextureRender (even in non-HDR modes), it gives additional performance boost.
  • Refactored light scattering with areal perspective.
  • Volumetric scattering effect for LightWorld.
  • Improved quality of glow.
  • Min/max luminance limits in HDR.
  • Fixed screenshot grabbing in Direct3D9.
  • Introduced counter of surfaces count per frame (for estimation of instancing efficiency).
  • Meshes geometry instancing for all APIs (more speed, less DIPs).
  • Binding of LightWorld parameters and light scattering.

Shaders:

  • Cg shaders has been mutated into GLSL with a set of defines.
  • Unification of lighting shaders.
  • Improved quality of soft shadow maps (16 samples instead of 12).
  • "world_begin"/"world_end" removed, there are only "scattering" and final "composite" now.
  • Improved quality of blur filters.
  • Global includes for all types of shaders.

Physics:

  • Disabling physics by a toggle in addition to time stopping.
  • More optimal objects randomization.
  • Reduced jittering.
  • Correct prediction of ragdoll position, smoother animation.

Scripts and samples:

  • Resurrection of scripts benchmark.
  • Material samples (Indirect, Phong, Reflection Cube and Reflection 2D).
  • New object samples (Billboards and all Volume objects).
  • Increased complexity of some physics samples.

Tools:

  • PRTMapper R.I.P.
  • Support of multimaterials in UnigineExport script for 3ds Max.
  • ResourceEditor switched to Ffp emulator.
  • AmbientMapper switched to GLSL shaders completely.
  • Smoother clipmap transitions in TerrainEditor.
  • Scattering settings in UnigineEditor.

Documentation:

  • All node-related classes are documented.
  • All physics-related classes are documented.
  • Updated "Development Environment" article.

Binary builds require DirectX 9 (November 2007) since this snapshot. 64-bit builds are now included into binary version of Unigine SDK. Some materials can be upgraded by means of upgrade.py script, some of them requires minor manual editing.

As you can see, there is A LOT of changes indeed. By the way, there will be one more announce of Unigine-based project in a month, so stay tuned!

2007-10-13 Link

Support of DirectX 10 is on the way

Recent changes in the development branch:

  • Completed Direct3D 10 framework.
  • Direct3D 9 shaders porting to Direct3D 10 and their refactoring is in progress.
  • Completed state manager for all supported APIs (OpenGL/Direct3D 9/Direct3D 10).
  • Basic fixed-function pipeline emulator (used by GUI, Font and Visualizer) by means of shaders.
  • Hardware shadows from omni lights via Texture2DArray on OpenGL/G80 (less seams artifacts, more speed).
  • Rendering of adjacency geometry for all meshes in order to perform hardware volume extrusion.

DirectX 10 support has been embedded into Unigine very smoothly, since v0.4 was elaborately designed by our lead developer (Alexander "Frustum" Zaprjagaev) in a very flexible way.

What's new in the production branch:

  • Gamma correction in ImageDDS.
  • Bugfix of ragdoll loading.
  • Fixed UnigineExport.ms script for 3ds Max.
  • Updated reference manual:
    • Added "Principles of Operation / Terrain" article
    • Added "Tools / ResourceEditor / TerrainEditor" article
    • Revised "Tools / Plugins for 3D Editors" article
    • Added a bunch of articles in "Programming / UnigineScript / Unigine Library" section: "Variables", 17 articles in "Engine Functions" subsection, "Material Class", "Node Class"

We plan to merge branches in 1-2 weeks.

PS: Don't miss new shiny screenshots in our gallery!

Pages: 12345678