This page has been translated automatically.
Recent news:
Table of contents:

Animation buffers, new memory manager

Recent changes:

  • New memory allocator, which can show memory fragmentation.
  • New memory_dump console command for displaying memory fragmentation (numbers means allocations count in some point, 'x' means more than 16 allocations).
  • New garbage collector (ref-counter based) which eliminates stalls (old one was called only each 32nd frame).
  • Fixed bug in animation export plugins, which occured with large number of weights per point.
  • New global "light distance" parameter in render settings.
  • Added support of Object and ObjectMeshDynamic into C++ API (see API examples).
  • GL_vertex_array_object extension is required now, please update your video drivers.
  • Support of binary XML files for release version (they loads faster, consumes less memory and causes less fragmentation).
  • New "xmltree" tool for compilation/decompilation XML files into/from binary format.
  • Fixed Fresnel refraction on NV40 / OpenGL.
  • Fixed streaming-related crashes under OpenGL.
  • New global "light distance" parameter in render settings.
  • "render_manager_reload mesh" reloads only meshes, "render_manager_reload texture" reloads all textures.
  • Support of inplace array creation inside foreach structure of UnigineScript: foreach(int i; (0,1,2,3)).
  • Added system of animation buffers.
  • Correct font wrapping for RichText.
  • Force set of WidgetGridBox proportion, columns are of fixed size.
  • Added sample of integration RakNet (a high-level networking library) into Unigine (see source/samples/Network/RakNet), which is still in the development.

New allocation policy: by default there are two memory pools (128Mb each), one of them is used for allocations less than 32Kb, another one is for the rest (so by default the engine requires 300+Mb). If these pools are already full, the engine allocates additional 128Mb pool. Plus there are fixed allocators for 2 n memory pieces, up to 128Kb. Memory manager also performs bound checking for allocated memory. Use memory_dump to see current fragmentation map:
Memory dump

Skinned mesh animation system now operates by tempararily buffers of bone transformations. One can apply different operations to them (copy, invertion, interpolation, multiplication). So these buffers allow creation of complex animation trees. Animation layer can be treated as a CPU ALU and buffers are like CPU registers.

PS: There is a new interview with our customers, who is creating an "Afterfall" post-apocalyptic cRPG basing on Unigine (Polish only, sorry).

Build: ()