History

V1.6

  • Physically based rendering shaders, techniques, renderpaths and example materials / demo scene.
  • AngelScript support on Emscripten and 64-bit iOS, based on generic bindings.
  • JSON load/save option for scenes, nodes and materials.
  • Tags added to nodes & UI elements.
  • EventProfiler subsystem.
  • Improved mouse mode handling on Emscripten.
  • Texture2DArray class added.
  • RibbonTrail class added.
  • Variance shadow mapping option.
  • Normal offset option as an alternative to reducing self-shadowing artifacts.
  • Arbitrary (freeform) vertex declarations. Legacy bitmask based vertex declarations emulated using them.
  • API-independent graphics class headers. Should ensure Urho library ABI compatibility between builds made on different APIs.
  • PackageFile support also on Android from within the .apk.
  • Optional additive animation blending mode. Based on calculating difference from the bind pose on the fly.
  • Directional billboard mode.
  • Fixed screen size option for billboards & Text3D.
  • Rendering scale added to UI.
  • Context-wide global variable implementation. Replaces the previous script-only global variables mechanism.
  • Aggregate initializers for containers.
  • C++11 binding to Urho events using std::bind.
  • C++11 variadic template version of SendEvent().
  • 64-bit integer support in Serializer / Deserializer.
  • Template versions of math functions.
  • Container class API improvements.
  • SharedPtr / WeakPtr implicit upcasting support.
  • Matrix2 class.
  • Rename escape key name to KEY_ESCAPE for consistency with SDL.
  • Make keycodes lowercase for consistency with SDL.
  • API to get joysticks by name.
  • Detect number of CPU cores on Emscripten if possible.
  • Utilize SDLActivity's get arguments feature.
  • Configurable minidump write location.
  • Engine parameter for enabling/disabling high DPI window mode.
  • Skip using the engine frame limiter on iOS when targeting 60 fps or above, to prevent erratic frame rate from sleep calls.
  • Text effect enhancements.
  • TmxFile2D & SpriteSheet2D improvements.
  • Sprite2D edge offset parameter for removing bleeding artifacts.
  • Drawable2D distance sorting.
  • Interpolation mode IM_NONE (no interpolation) added to ValueAnimation.
  • Segmented PhysicsWorld ray query for performance optimization.
  • Hit fraction added to physics cast results.
  • Allow custom collision shape subclasses & custom Bullet collision configuration.
  • Expanded data returned from NavigationMesh path queries.
  • Clone() added to Technique, ParticleEffect & ParticleEffect2D classes.
  • SetFontSize() added to Text & Text3D.
  • IntRect / IntVector2 setters & getters added to XMLElement.
  • TryAcquire() added to Mutex class.
  • Vector2 Angle() function added.
  • StringUtils ToInt() & ToUInt() take an optional base parameter.
  • Convenience function Context::CreateObject<T>.
  • Convenience template version of ReleaseResource().
  • Allow Vector4 to substitute for Color in Variant::GetColor().
  • Additional Variant types can function as parameters for AngelScript function / method calls.
  • Improve FixedUpdate event to allow it to originate from either PhysicsWorld or PhysicsWorld2D.
  • Particle effect, animation playback & sound playback finish events.
  • CrowdAgent emits events also from its node.
  • Event sent after cloning a Node or Component is done.
  • b2Contact pointer added to PhysicsWorld2D collision events.
  • Execute DelayedStart() before FixedUpdate() if FixedUpdate comes sooner than the first Update.
  • Allow updating AnimatedModel's bone bounding box manually.
  • Texture SetData() functions modified to use raw Image ptr for consistency and script bindings simplicity.
  • Graphics::SetDither() for controlling backbuffer dithering, relevant on mobiles with 16bit backbuffer.
  • Graphics::Draw() & DrawInstanced() overload with base vertex index.
  • UIBatch::AddQuad() with arbitrary positions & UVs.
  • Use glReadPixels() to get pixel data from rendertargets on GLES.
  • Highp precision used for GLES shadows.
  • Change deferred shaders to use proper world space to be easier to understand.
  • Send ElapsedTime uniform to UI rendering.
  • Allow overriding culling mode in a pass.
  • SendEvent renderpath command that can be used to interleave custom low-level rendering.
  • TRANSLUCENT lighting option in shaders, which takes absolute value of N dot L.
  • NOUV shader option added for D3D11 compatibility when model data does not contain UVs.
  • Buffer variants supported as shader parameters; will be interpreted as an array of floats.
  • View & inverse view uniforms supplied to shaders. Obsolete camera rotation uniform removed.
  • Skydome shader & technique added.
  • Optional object index vertex attribute that can be used by custom instancing schemes.
  • Optional additional per-instance Vector4 data, supplied to the shaders as extra texcoords.
  • Logging of D3D9 / D3D11 HRESULTs and proper failure check discipline for D3D object creation.
  • Improved occluder sorting.
  • Optimize to not render invisible View3Ds.
  • Optimized Image::Clear() for RGBA case.
  • Optimized SinCos() function added to speed up e.g. billboard calculations.
  • Optimized IsPowerOfTwo() function.
  • Optimization to amount of Frustum::UpdatePlanes() calls in rendering.
  • Update to Civetweb 1.7.
  • Update to GLEW 1.13.0.
  • Update to libcpuid 0.2.2.
  • Update to LuaJIT 2.1.0.
  • Update to LZ4 r131.
  • Update to nanodbc 2.12.4.
  • Update to pugixml 1.7.
  • Update to SDL 2.0.4.
  • Update to SQLite 3.13.0.
  • Update to stb_image 2.12, stb_image_write 1.02, stb_rect_pack 0.08 & stb_vorbis 1.09.
  • Use Readline library if available for Lua & SQLite.
  • Generic ARM on Linux platform support.
  • Android NDK r11 & r12 support.
  • Reduce exposure to SDL headers from Urho's headers.
  • Support for Codelite CMake invocation.
  • Improved multiarch support in auto-detection.
  • Scaffolding rake task improvements.
  • Build speedup improvements.
  • Avoid SDL when building mini Urho3D for PackageTool.
  • Avoid hardcoding sample list in build script.
  • Output option in PackageTool.
  • Enhance Urho3D-CMake-common module to auto find Urho3D library.
  • Automatical bumping of year in the source code when crossing to a new year.
  • Move to use subtrees for some thirdparty libraries.
  • For downstream use: auto detect Urho3D lib type from build artifact.
  • Refactored mechanism to detect CPU instruction extensions for build.
  • Set PCH flags at target level, not compile unit level.
  • Perform cleanup when installing headers to the build tree.
  • try_run logic to auto-discover build options.
  • try_compile mechanism to verify ABI compatibility of found Urho3D library.
  • SDL build options added: PulseAudio, EGL, Wayland, Mir.
  • LuaJIT related build fixes.
  • Eliminate the need for KNET_UNIX define.
  • Enable class index in documentation.
  • Editor: if original node selected when pasting, do not paste as its child, but rather behave similarly as if performing a Duplicate action.
  • Editor: particle editor improvements.
  • Editor: node & UI element tag editing.
  • Editor: use fixed size billboards for the debug icons.
  • Editor: add gamma correction & HDR rendering toggles.
  • Editor: reorder components, nodes & UI elements by holding down Ctrl when drag-dropping.
  • Editor: fix sharp edges in UI when opacity is reduced.
  • Editor: fix "is enabled" checkbox moving to wrong location when node is edited.
  • AssetImporter: allow saving animations without actual skinned geometry.
  • AssetImporter: allow saving a subset of an animation.
  • AssetImporter: generate non-deforming skinning information when a model has non-skinned subgeometries.
  • AssetImporter: support multiple color & UV channels.
  • Fix various missing script bindings & missing export specifiers for classes.
  • Fix various uninitialized variables.
  • Fix hardware shadow support always returning false on OpenGL after the Graphics headers refactor.
  • Fix wrong UV index in drawable OBJ export.
  • Fix backbuffer not getting cleared when just UI & texture viewports are being rendered.
  • Fix DirExists() on Android.
  • Fix potential crash when using MessageBox from C++.
  • Fix erroneous fog shader uniform being set in some rendering cases.
  • Fix serialization of localized Text elements.
  • Fix use of deprecated usleep() function in favor of nanosleep().
  • Fix UI slider knob behavior when it's fixed size.
  • Fix toggling mouse visibility right at application start.
  • Fix instancing in HLSL water shader.
  • Fix Android / iOS reporting mouse as grabbed.
  • Fix update event subscription in Material class.
  • Fix window getting maximized after fullscreen -> windowed change on Windows + SDL 2.0.4.
  • Fix bogus SDL joystick registration on Android.
  • Fix AngelScript ScriptInstance variable hot reload. Removes the need for a specific implementation from the editor.
  • Fix OgreImporter animation save & Jack's walk animation.
  • Fix incorrect enemy orientation on spawn in NinjaSnowWar.
  • Fix insertion of further drawable updates during threaded drawable update.
  • Fix runtime DLL not being installed to tool directory.
  • Fix Emscripten performance loss due to enabling SSE mode incorrectly.
  • Fix ODBCConnection compile error on windows.
  • Fix incorrect terrain index data generation.
  • Fix AssetImporter to handle potential multiple root node situations better.
  • Fix incorrect 2D drawable culling optimization.
  • Fix transform applying order for parented 2D rigidbodies.
  • Fix incorrect rendering caused by not updating shader parameter has when a material is cloned.
  • Fix FileWatcher getting in stuck on read() on Linux.
  • Fix WorldToHeightMap() in Terrain.
  • Fix 2D particle emitter potentially causing memory overwrite by emitting more particles than allocated.
  • Fix culling issues when non-master AnimatedModels are larger than the master.
  • Fix potentially incorrect viewport update order.
  • Fix D3D11 dynamic textures to use only 1 mip level, as more does not work.
  • Fix SDL Windows-specific mouse move internals not working in some cases (e.g. without Aero) leading to wrong relative mouse input.
  • Fix basepath not being applied to file entries in PackageTool.
  • Fix initial position of kinematic rigidbodies after being loaded.
  • Fix temporary AnimatedModel's bones to be temporary as well.
  • Fix SSE / ABI incompatibility related crashes with Bullet.
  • Fix HasSubscribedToEvent() missing from scripting.
  • Fix UI scrollbar snap epsilon attribute default value.
  • Fix error in DropDownList serialization.
  • Fix String::DecodeUTF16().
  • Fix deploying .pak files to Emscripten samples.
  • Fix UI style late applying when a child element is added.
  • Fix CustomGeometry bounding box update when committing new data.
  • Fix sprite textures to use clamp addressing by default instead of wrap.
  • Fix depth test potentially disabled in OpenGL by third party programs such as MSI Afterburner (re-enable every frame.)
  • Fix writing rendertarget inverse size uniforms incorrectly (Vector2 instead of Vector4.)
  • Fix off by one error in mipmap data size counting.
  • Fix FindUrho3D CMake module behaving incorrectly when called more than once.
  • Fix PhysicsWorld::GetRigidBodies() to use immediate contact test for static bodies.
  • Fix sampling of depth buffer in read-only mode on D3D11.
  • Fix ForwardDepth renderpath potentially missing depth clear on OpenGL.
  • Fix DropDownList placeholder text not auto-hiding when an item is selected.
  • Fix possible crash issue when exiting engine with background loaded resources still in queue.
  • Fix FindDirect3D CMake code for CMake old versions.
  • Fix issues with parented rigidbodies when moving them from code.
  • Fix math class equality operator in SSE builds on specific Visual Studio versions.
  • Fix ScreenToWorldPoint() to return the specified Z distance.
  • Fix vegetation shadow shader on D3D11.
  • Fix & simplify setup of the "universal" builtin target in iOS build.
  • Fix build system to install/package Emscripten shared js & data files.
  • Fix Application.h to be usable without other include files.
  • Fix lighting interpolator order in D3D11 shaders.
  • Fix node's Z coordinate not retained in 2D physics movement.
  • Fix potential crash and performance issues in Octree raycasts by making them non-threaded; in practice the spin-up time for work items could override any threading benefits.
  • Fix missing DelayedStart functionality in LuaScriptInstance.
  • Fix point fill mode on D3D11.
  • Fix input focus loss when using an external window handle.
  • Fix missing D3D SDK search on VS2010 and earlier.
  • Fix ABI incompatibility in BoundingBox class depending on URHO3D_SSE flag.

V1.5

  • Database subsystem with either SQLite or ODBC support.
  • Localization subsystem.
  • Improved the navigation / crowd navigation API and examples.
  • SSE and animation performance optimizations.
  • Enable BT_USE_SSE on Linux and MinGW platforms, enable BT_USE_NEON on Android and Raspberry-Pi platforms.
  • Urho3D macros such as OBJECT, EVENT, HANDLER renamed to have URHO3D_ prefix to prevent ambiguity with other libraries.
  • Double support to Variant, Deserializer, Serializer & JSONValue. Store Lua object attributes accurately as doubles.
  • Support for moving nodes & components between scenes, or creating components "sceneless" and moving into a scene later.
  • Cubemap loading from DDS files.
  • Refactored the object class registration mechanism to store the object's base class for "Is this class derived from this" queries.
  • Optional "raw" Lua file loading through direct filesystem access for easier debugging.
  • Configurable blend mode in renderpath quad commands.
  • UV coordinates added to raycast results.
  • Allow submitting bare function names instead of full signature to Execute() & DelayedExecute() in AngelScript, similar to specifying event handler functions.
  • Allow negative scale for nodes.
  • Culling camera optimization for viewports, to allow rendering multiple viewports with the same culling data set.
  • Refactor Urho2D animation playback. Add optional Spine support (user must supply Spine runtime.)
  • Refactor Urho2D sprite atlas handling.
  • CollisionShape acquires model resource from StaticModel in same node automatically if collision model undefined.
  • Request the high-power GPU on AMD multi-GPU setups.
  • API for programmatic animation track & keyframe creation.
  • Added AnimationController IsAtEnd() function.
  • Added "remove on completion" mechanism to AnimationController.
  • Added function to remove all components of type to Node.
  • Added GetParentComponent() function to Node.
  • Added resource memory usage stats to DebugHud.
  • Support for ScanDir() on Android.
  • Improve Variant / VariantMap bindings on Lua.
  • Improve internal mechanisms for Lua bindings, e.g. store Urho3D context inside Lua state global table.
  • Improve API for kNet connection stats.
  • Improve AngelScript GetChildrenWithClassName() to return also derived classes.
  • Improve UI tab behavior
  • Improved navigation debug geometry
  • Improve ConvexCast by taking into account CollisionShape's offset position & rotation.
  • Spline class cleanup & improvements, including linear interpolation mode, and looping Catmull-Rom mode.
  • Refactored JSONValue class to be more JSON-like.
  • Material render order support within a pass.
  • MM_FREE mouse mode, which disassociates cursor visibility from being confined inside the window.
  • Allow doubleclick event in UI over emptiness
  • Make Octree::Raycast() threadsafe.
  • GetGLContext() added to GraphicsImpl on OpenGL to allow the application to perform manual context switching.
  • Fixes for vertex texture fetch on D3D11.
  • Allow optional forced creation of CPU-only vertex & index buffers also in non-headless operation.
  • Unified texture upload behavior: half-float formats need to be provided as such on both D3D & OpenGL. Added float/half-float conversion functions.
  • Automatic generation of intermediate directories in FileSystem::CreateDir().
  • Warn if attempting infinite distance physics raycast. Remove erroneous infinity default value from AngelScript physics raycast bindings.
  • Allow non-strict numeric type to be returned from Variant, e.g. GetFloat() succeeds for an int.
  • Allow to disable PhysicsWorld or PhysicsWorld2D automatic simulation stepping during scene update. When disabled, the physics world can still be stepped manually.
  • Support for manual advancing of value animations.
  • globalVars VariantMap for AngelScript to allow easy cross-ScriptFile parameter passing.
  • Improve ConvexCast() to return distance using the hit fraction.
  • Ensure normalized vertex weights in AssetImporter, and clamp to 4 weights maximum instead of error, by dropping the smallest weights.
  • Configurable layer count in DynamicNavigationMesh to control memory usage.
  • Emscripten ETC1 & PVRTC extension support detection.
  • Emscripten hardware instancing support.
  • emscripten_get_now() for better timer precision and less CPU use.
  • Disable frame limiter Sleep() on Emscripten.
  • Disable audio output in C++ samples where it isn't necessary.
  • Remove redundant glEnable() / glDisable() calls related to OpenGL texture types.
  • Removed defined_ member variable from BoundingBox, Sphere & Rect in favor of determining the definedness from the bounds being valid.
  • Invalid order checking for Lua binding overloads.
  • Dangerous math class constructors marked explicit.
  • Properly enabled multithreading in GCC/Clang builds.
  • Emscripten toolchain & build related fixes and improvements.
  • Clang tools support in the build.
  • Annotator & script binding extractor skeleton tools in preparation for generated script bindings.
  • Build improvements for CLion IDE.
  • Support Android NDK r10e.
  • Support non-PCH build.
  • Support spaces in path for build.
  • Install d3dcompiler DLL to bin directory for Windows / D3D builds.
  • Improved Urho3D DLL installation logic.
  • More user-friendly operation for missing HTML help compiler or dot.
  • Symlink assets to the build binary directory.
  • Allow installed sample executables to run out-of-the-box on Windows.
  • Reformatting of source code to get rid of indents on empty lines.
  • Script subdirectory in the engine source renamed to AngelScript.
  • Option to build Urho3D without threading (URHO3D_THREADING). Normally disabled on Emscripten but can be enabled for experimental development on browsers with included support.
  • Improved documentation on contributing and 3rd party library policy.
  • Update AngelScript to 2.30.2.
  • Update Assimp to September 2015 revision.
  • Update Bullet to 2.83.6.
  • Editor: setting for new node position preference.
  • Editor: particle editor improvements.
  • Editor: function to assign child nodes into a spline path.
  • Editor: center camera on object with HOME key.
  • Editor: selectable MMB functionality.
  • Editor: language selector and localizations.
  • Editor: Blender hotkeys mode.
  • Editor: HSV color wheel.
  • Editor: event handling refactoring.
  • Editor: 3D debug icons.
  • Editor: make showing IDs optional.
  • Editor: cubemap generation support.
  • Editor: export scene to .obj.
  • Editor: accelerator keys for reset pos/rot/scale.
  • Editor: quickmenu select topmost option with Enter key.
  • Editor: local offset added to spawn editor.
  • Fix missing bindings in navigation / crowd navigation script API.
  • Fix missing Lua bindings for Component class.
  • Fix SplinePath AngelScript bindings.
  • Fix failure to add / remove obstacles due to DetourTileCache queue being full.
  • Fix UI element debug draw.
  • Fix quantized AABB bug with large collision meshes.
  • Fix incorrect viewport size when rendering to both backbuffer & textures.
  • Fix flashing of 2D sprite animations due to misreported animation length.
  • Fix AssetImporter single keyframe animations.
  • Fix GetData() from rendertarget textures on D3D9.
  • Fix handling of lightmap textures in AssetImporter.
  • Fix debug geometry rendering if backbuffer resolve was used.
  • Fix blend mode of Urho2D material getting overwritten.
  • Fix terrain shader quality on mobile devices.
  • Fix partial rendertarget clear on D3D11.
  • Fix URHO3D_PACKAGING build option on Windows shared lib build.
  • Fix PackageFile::GetEntryNames() to return filenames with original case.
  • Fix FXAA3 shader on OpenGL.
  • Fix Depth shader on D3D11.
  • Fix Blur shader.
  • Fix shader code which attempts to use 3D textures on GLES.
  • Fix objects getting removed from physics simulation due to zero Node scale on some axis.
  • Fix line height of included SDF fonts. Fix corrupt rendering if Text3D changes font from SDF to non-SDF or vice versa.
  • Fix inaccurate terrain occlusion.
  • Fix ValueAnimation resource not loading properly.
  • Fix RigidBody2D body type enum.
  • Fix RigidBody2D & CollisionShape2D to be resilient of the add order.
  • Fix Drawable2D's not using viewmask in rendering & raycast.
  • Fix Quaternion::FromLookRotation() zero cross product case.
  • Fix RigidBody2D custom mass handling.
  • Fix multiple value children created into XMLElement.
  • Fix TmxFile2D loading according to the updated Tiled spec.
  • Fix integer overflow in Random() functions.
  • Fix potentially unreleased Lua function references.
  • Fix UIElement functions that may crash at UI deletion time.
  • Fix mistaken commenting out of GLSL source code.
  • Fix animation "freezing" due to model being invisible while the animation finishes.
  • Fix Graphics::ResolveToTexture() on D3D11, especially for less-than-fullscreen viewports.
  • Fix potential crash or error during animation event processing, if animations are added/removed.
  • Fix potential null pointer access at navmesh destruction time.
  • Fix not allowing collision geometry from multiple CustomGeometries in the same node.
  • Fix space glyph not getting loaded in some fonts.
  • Fix missing resource dependencies tracking when resource autoloading is switched on during runtime.
  • Fix crash on MinGW build with SSE optimizations.
  • Fix windowed / fullscreen switching on Emscripten.
  • Fix missing URHO3D_API specifiers from some classes / structs.
  • Fix improper rounding during TrueType loading, which would displace some glyphs.
  • Fix incorrect bounding box of StaticSprite2D.
  • Fix lost font texture (OpenGL only) not being handled for Text3D.
  • Fix crash with CollisionChain2D with not enough vertices. Allow to create CollisionChain2D in the editor.
  • Fix crash caused by querying HashMap or HashSet while it's being cleared.
  • Fix erroneous hardware keyboard input on Android.
  • Fix Android MIPS build.
  • Fix UI element layouting changing the user-defined minimum size.
  • Fix crash in 64bit build when opening the console window.
  • Fix potential edge artifacts in dynamically created spritesheets.
  • Fix Spine animation playback thread safety.
  • Fix mouse button release while cursor hidden not releasing drag elements.
  • Fix too heavy-handed skybox shader Z adjustment on GLES, which caused objects to be obscured by the skybox.
  • Fix protected AngelScript class variables showing up as serializable/editable.
  • Fix ResourceRefList serialization bug caused by String::Split() not returning empty strings.

V1.4

  • Direct3D11 and OpenGL 3 rendering. Shader Model 2 support removed.
  • Experimental Emscripten support.
  • Raspberry-Pi 2 support.
  • Overhauled build system with better out-of-source build support & source tree reorganization.
  • Add host-tool building support for cross-compiling build which makes enabling of Lua/LuaJIT on Android build easier to configure than before and also makes new URHO3D_PACKAGING build option possible.
  • Add new engine parameter to set the location of the asset/resource prefix path. This addition makes new URHO3D_MACOSX_BUNDLE build option possible.
  • Add proper precompiled header (PCH) support for GCC/Clang compiler toolchains (and their derivatives).
  • Add compiler cache (ccache) support to build system for host systems where ccache is installable. The support is available for both native and cross-compiler toolchains.
  • Crowd navigation and dynamic navigation mesh using the DetourCrowd and DetourTileCache libraries.
  • 2D rendering improvements and optimization.
  • Allow materials to use any texture unit; up to 8 consecutive material texture units available for desktop graphics.
  • Depth-only rendering pass and readable hardware depth support.
  • Cubemap support and using programmatically defined rendertargets in renderpaths.
  • Vertex and index buffer access from script through VectorBuffer.
  • UI can be rendered to a texture with a renderpath command.
  • Uncompressed DDS support: generic decode to 8-bit RGBA.
  • Dynamic audio types instead of hardcoded.
  • Dynamic cursor image type definitions.
  • Added various material techniques.
  • Allow reading Data/CommandLine.txt on all platforms, if Urho3DPlayer is started without parameters.
  • LOD level support in Terrain collision shape.
  • Reduce cost of rendering multiple materials with same shader parameter values, reduce shader switching cost on D3D9, and other rendering efficiency optimizations.
  • Refactored event subscription mechanism with Lua.
  • Add SpritePacker utility.
  • User configurable indentation for XML and JSON files.
  • Controls class moved away from Network subdirectory to allow using when Urho3D is built without networking.
  • MOBILE_GRAPHICS & DESKTOP_GRAPHICS defines for graphics capability level, to avoid hardcoded platform checks.
  • Remove bell sound when pressing Alt key combinations on Windows.
  • 8-bit time stamp added to client controls sent over the network. Allow to intercept attribute updates from network. These features should allow writing custom clientside prediction.
  • Return hit submesh index in raycast to StaticModel.
  • Fill mode added to materials.
  • AngelScript script objects can be stored in a Variant.
  • Improved attribute registration: class name and variant type not needed.
  • Add new rake tasks to facilitate configuring/generating and building Urho3D project, including downstream project using Urho3D library.
  • Update PugiXml to 1.5.
  • Update STB libraries to latest.
  • Editor: particle effect editor window.
  • Editor: sound type editor window.
  • Editor: remember script attributes and restore them if a compile error occurs.
  • Editor: remember custom var names globally in the editor configuration.
  • Editor: button-based editor for bitmask attributes.
  • Editor: duplicate operation.
  • Editor: resource browser improvements.
  • Editor: renderpath can be chosen.
  • Editor: allow running without Urho2D compiled in.
  • Editor: inspector lock.
  • Editor: ensure correct gizmo size in orthographic mode.
  • Editor: copy camera transform operation.
  • Editor: do not allow to set a dialog modal in the UI editor.
  • Fix mouse stutter by using SDL_PollEvent() instead of SDL_PumpEvents().
  • Fix various missing script bindings.
  • Fix missing editor grid after scene revert.
  • Fix StaticModelGrup alpha materials rendering only 1 instance.
  • Fix missing attribute side effects (ApplyAttributes) in attribute animation.
  • Fix billboard render sorting from several views on the same frame.
  • Fix editor to load UI assets from executable directory to prevent using old UI assets from user's resource directories.
  • Fix UI element drag showing "not accepted" mistakenly.
  • Fix WritePackedQuaternion() always returning false.
  • Fix uninitialized variable in Shader class.
  • Fix wrong camera aspect ratio after modifying orthographic size.
  • Fix "lightvolumes" render path command not allowing custom shader defines.
  • Fix AnimatedSprite2D not hiding child sprites when disabled.
  • Fix missing export specifiers for some Urho3D classes.
  • Fix additive particle scale modification making the particle size negative.
  • Fix screen orientation issue on iOS 8.
  • Fix multiple view rendering for 2D drawables.
  • Fix Bullet friction on Clang compiler.
  • Fix textures left bound in multiple units on OpenGL.
  • Fix infinite loop in ResourceCache::AddPackageFile().
  • Fix corrupt network message reception by updating kNet library.
  • Fix NaN check working incorrectly on GCC.
  • Fix possible wrong logic when a component is removed from a scene node, as opposed to being destroyed.
  • Fix tab escape sequences in the generated script documentation.
  • Fix warnings that leak into Urho3D applications.
  • Fix being able to create a REPLICATED component into a LOCAL node.
  • Fix negative light direction from Assimp with certain 3D file formats.
  • Fix spot light FOV handling with Assimp.
  • Fix incorrect partial terrain update and improve terrain update worst-case performance.
  • Fix incorrect rendering to backbuffer after post-process pingponging on OpenGL.
  • Fix crash when calling FixInterpolation() incorrectly on a compressed sound resource.
  • Fix AngelScript compile on VS2015.
  • Fix crash with null materials in 2D rendering.
  • Fix kNet WinXP compatibility.
  • Fix possible threaded resource load issues with XML files.
  • Fix missing null checks in AnimatedSprite2D.
  • Fix window drag behavior with hidden mouse on Linux; require click in window before re-enabling hidden mouse on all desktop OS'es.
  • Fix erratic hidden mouse move when used together with touch input.
  • Fix black screen on OSX after fullscreen/windowed switch.
  • Fix incorrectly working AngelScript native calls on Clang / Windows.
  • Fix building of 32-bit Linux software package on 64-bit host system and add options for build system to produce correct "LIB_SUFFIX" for 64-bit Debian and RPM packages.

V1.32

  • Finalized Urho2D functionality, including 2D physics using Box2D, sprite animation and tile maps.
  • Threaded background resource loading. Must be manually triggered via ResourceCache or by loading a scene asynchronously.
  • Attribute and material shader parameter animation system.
  • Customizable onscreen joystick for mobile platforms. Used in examples.
  • Touch camera control in examples on mobile platforms.
  • Touch emulation by mouse.
  • Multi-touch UI drag support.
  • Consistent touch ID's across platforms.
  • Absolute, relative and wrap modes for the operating system mouse cursor.
  • Support for connecting & removing joysticks during runtime.
  • Negative light & light brightness multiplier support.
  • Transform spaces for Node's translate, rotate & lookat functions.
  • Scrollable console.
  • Selectable console command interpreter (AngelScript, Lua, FileSystem).
  • Touch scroll in ScrollView & ListView.
  • UI layout flex scale mode.
  • Custom sound streams from C++.
  • LogicComponent C++ base class with virtual update functions similar to ScriptObject.
  • Signed distance field font support.
  • JSON data support.
  • Matrix types in Variant & XML data.
  • Intermediate rendertarget refactoring: use viewport size to allow consistent UV addressing.
  • ParticleEmitter refactoring: use ParticleEffect resource for consistency with ParticleEmitter2D and more optimal net replication.
  • Expose LZ4 compression functions.
  • Support various cube map layouts contained in a single image file.
  • Configurable Bullet physics stepping behavior. Can use elapsed time limiting, or a variable timestep to use less CPU.
  • Default construct math objects to zero / identity.
  • Mandatory registration for remote events. Check allowed event only when receiving.
  • Teapot & torus builtin objects.
  • FXAA 3.11 shader.
  • Triangle rendering in DebugRenderer (more efficient than 3 lines).
  • Material/texture quality and anisotropy as command line options and engine startup parameters.
  • Spline math class, which the SplinePath component uses.
  • Console auto-show on error.
  • DrawableProxy2D system for optimizing 2D sprite drawing.
  • Possibility to decouple BorderImage border UV's from element size.
  • Editor & NinjaSnowWar resources split into subdirectories.
  • UI hover start & end events.
  • UI drag cancel by pressing ESC.
  • Allowed screen orientations can be controlled. Effective only on iOS.
  • Rendering sceneless renderpaths.
  • Define individual material passes as SM3-only.
  • Support for copying ListView text to system clipboard.
  • Async system command execution.
  • Generic attribute access for Lua script objects.
  • Use Lua functions directly as event subscribers.
  • Touch gesture recording and load/save.
  • AssetImporter option to allow multiple import of identical meshes.
  • Automatically create a physics world component to scene when necessary.
  • GetSubimage function in the Image class.
  • Possibility to clone existing components from another scene node.
  • Improve terrain rendering on mobile devices.
  • Refactoring of camera facing modes in BillboardSet & Text3D.
  • Additive alpha techniques for particle rendering.
  • Possibility to use CustomGeometry component for physics triangle mesh collision.
  • Access to 2D node coordinates for convenience when using 2D graphics features.
  • Save embedded textures in AssetImporter.
  • Use best matching fullscreen resolution if no exact match.
  • Use SDL_iPhoneSetAnimationCallback instead of blocking main loop.
  • Allow fast partial terrain updates by modifying the heightmap image.
  • API for setting image pixels by integer colors.
  • Refactor to remove the separate ShortStringHash class.
  • Deep clone functionality in Model resource.
  • Zone can define a texture which is available to shaders. Not used by default.
  • Allow logging from outside the main thread.
  • Log warnings for improper attempts to use events from outside main thread.
  • Improved CustomGeometry dynamic updates.
  • ConvexCast function in PhysicsWorld.
  • Screen to world space conversion functions in Viewport class.
  • Allow sending client rotation to server in addition to position.
  • Allow accessing and modifying the engine's next timestep.
  • DeepEnabled mechanism for disabling node or UI element hierarchies and then restoring their own enabled state.
  • Allow to prevent closing a modal window with ESC.
  • Per-viewport control of whether debug geometry should render.
  • Optional interception of resource requests.
  • Readded optional slow & robust mode to AreaAllocator.
  • Optionally disable RigidBody mass update to allow fast adding of several CollisionShape components to the same node.
  • Runtime synchronization of resource packages from server to client.
  • Disable multisample antialiasing momentarily during rendering. Used by default for UI & quad rendering.
  • Glyph offset support in Font class.
  • Font class internal refactoring.
  • Allow to create AngelScript script objects by specifying the interface it implements.
  • Window position startup parameters.
  • Functions to get time since epoch & modify file's last modified time.
  • Optionally auto-disable child elements of a scroll view when touch scrolling.
  • Allocate views permanently per viewport to allow querying for drawables, lights etc. reliably.
  • Allow to specify material techniques/passes that should not be used on mobile devices.
  • Reduced default shadow mapping issues on mobile devices.
  • Minor rendering optimizations.
  • Build system: possibility to build Urho3D without networking or 2D graphics functionality.
  • Build system: improved generated scripting documentation.
  • Build system: improved support for IDE's in CMake scripts.
  • Build system: support up to Android NDK r10c and 64-bit ABIs.
  • Build system: numerous other improvements.
  • Editor: resource browser.
  • Editor: spawn window for random-generating objects.
  • Editor: allow either zoom or move from mouse wheel.
  • Editor: locate object by doubleclicking node in hierarchy.
  • Editor: take screenshots with F11, camera panning.
  • Editor: button in value edit fields that allows editing by mouse drag.
  • Updated SDL to 2.0.3.
  • Updated AngelScript to 2.29.1.
  • Updated assimp.
  • Updated Recast/Detour.
  • Fix MinGW build issues.
  • Fix techniques referring to wrong shaders.
  • Fix Node::LookAt() misbehaving in certain situations.
  • Fix resize event not reporting correct window size if window is maximized at start.
  • Fix PhysicsWorld::GetRigidBodies() not using collision mask.
  • Fix zone misassignment issues.
  • Fix Lua not returning correctly typed object for UIElement::GetChild() & UIElement::GetParent().
  • Fix uninitialized variables in 2D physics components.
  • Fix quad rendering not updating elapsed time uniform.
  • Fix forward rendering normal mapping issues by switching calculations back to world space.
  • Fix wrong logging level on Android.
  • Fix multiple subscribes to same event on Lua.
  • Fix missing Octree update in headless mode.
  • Fix crash when using FreeType to access font kerning tables.
  • Fix ReadString() endless loop if the string does not end.
  • Fix shadow mapping on OS X systems with Intel GPU.
  • Fix manually positioned bones being serialized properly.
  • Fix file checksum calculation on Android.
  • Fix accelerometer input on Android when device is flipped 180 degrees.
  • Fix missing or misbehaving Lua bindings.
  • Fix crashes in physics collision handling when objects are removed during it.
  • Fix shader live reload if previous compile resulted in error.
  • Fix named manual textures not recreating their GPU resource after device loss.
  • Fix skeleton-only model not importing in AssetImporter.
  • Fix terrain raycast returning incorrect position/normal.
  • Fix animation keyframe timing in AssetImporter if start time is not 0.
  • Fix storing Image resources to memory unnecessarily during cube/3D texture loading.
  • Fix to node transform dirtying mechanism and the TransformChanged() script function.
  • Fix returned documents directory not being writable on iOS.
  • Fix click to emptiness not closing a menu.
  • Fix FileWatcher notifying when file was still being saved. By default delay notification 1 second.
  • Fix .txml import in the editor.
  • Fix erroneous raycast to triangles behind the ray.
  • Fix crash when multiple AnimatedModels exist in a node and the master model is destroyed.
  • Fix missing Matrix4 * Matrix3x4 operator in script.
  • Fix various compile warnings that leak to applications using Urho3D.
  • Fix DebugHud update possibly being late one frame.
  • Fix various macros not being usable outside Urho3D namespace.
  • Fix erroneous layout with wordwrap text elements.
  • Fix debug geometry rendering on flipped OpenGL viewports.
  • Fix kNet debug mode assert with zero sized messages.
  • Fix not being able to stop and restart kNet server.
  • Fix AreaAllocator operation.
  • Fix possible crash with parented rigidbodies.
  • Fix missing network delta update if only user variables in a Node have been modified.
  • Fix to only search for June 2010 DirectX SDK, as earlier SDK's will fail.
  • Fix wrong search order of added resource paths.
  • Fix global anisotropic filtering on OpenGL.
  • Fix animation triggers not working if trigger is at animation end.
  • Fix CopyFramebuffer shader name not being used correctly on case-sensitive systems.
  • Fix UI elements not receiving input when the window containing them is partially outside the screen to the left.
  • Fix occlusion rendering not working with counterclockwise triangles.
  • Fix material shader parameter animations going out of sync with other animations when the object using the material is not in view.
  • Fix CPU count functions on Android.

V1.31

  • Extensive build system improvements, especially for using Urho3D as a library in an downstream project.
  • LuaJIT support.
  • Improved Lua bindings, Lua coroutine support, automatic loading of compiled Lua scripts (.luc) if they exist.
  • HDR rendering, 3D textures, height fog and several new post process shaders.
  • Shader refactoring. Need for XML shader descriptions & ShaderCompiler tool removed.
  • Reflection / refraction rendering support.
  • 2D drawable components: StaticSprite2D, AnimatedSprite2D, ParticleEmitter2D.
  • ToolTip & MessageBox UI elements. UI logic improvements.
  • Optimized text rendering + dynamic population of font textures for improved batching.
  • AngelScript DelayedExecute for free functions, and event handling for any script object, not just ScriptInstances.
  • Editor: added grid, toolbar, camera view presets, camera orbit, mouse wheel zoom, multiple viewports and orthographic camera.
  • Borderless window mode, possibility to change application icon.
  • SDL GameController support, raw key codes support.
  • Optimized shadow rendering on mobile devices. Low quality mode avoids dependent texture reads.
  • HttpRequest class runs in a background thread to avoid blocking.
  • Compressed package file support using the LZ4 library.
  • Cone parameters in SoundSource3D for directional attenuation.
  • Variant GetPtr() safety refactoring. Uses WeakPtr's to store RefCounted subclasses. Use GetVoidPtr() to store unsafe arbitrary pointers.
  • Improved work queue completion events. Work items are now RefCounted to allow persisting them as necessary.
  • Allow to disable automatic execution of AngelScript & Lua from the engine console.
  • Added shader variations, for example ambient occlusion texture and better emissive color support.
  • Added examples.
  • Update SDL to 2.0.1.
  • Update AngelScript to 2.28.1.
  • Update FreeType to 2.5.0.
  • Fix partial texture updates, both Direct3D9 & OpenGL.
  • Fix long-standing audio click bug.
  • Fix kinematic rigidbodies to apply impulses correctly to dynamic bodies.
  • Plus many more improvements and bugfixes.

V1.3

  • Lua scripting support.
  • Optional build as a single external library, static or dynamic.
  • Raspberry Pi support.
  • 64-bit build support.
  • HTTP client using the Civetweb library.
  • Enhanced CMake build scripts. Android build also uses CMake. Use out-of-source build on platform that supports it.
  • Rendering performance optimizations, optional StaticModelGroup component for culling and lighting several objects as one unit.
  • A set of sample applications implemented in C++, AngelScript and Lua.
  • Automatic node/component handle member variable serialization for AngelScript script objects.
  • New UI theme.
  • Shadow & stroke effects in Text & Text3D.
  • Boolean shader uniforms.
  • Quick menu in the editor.
  • Material editor and preview in the editor.
  • Editable attributes for particle emitters.
  • Components are grouped into categories in the editor.
  • Update SDL to stable 2.0.0 release.
  • Several other improvements and bugfixes.

V1.23

  • UI layout editing in the editor.
  • Undo/redo in the editor.
  • Recast/Detour library integration for navigation mesh generation and pathfinding.
  • Open Asset Import Library update, enables FBX file support.
  • "Is Enabled" attribute in scene nodes and components for an uniform mechanism to temporarily disable unneeded audiovisual, physics or logic objects.
  • Script object public variables editing and serialization.
  • New components: Text3D and Sprite.
  • UI library functionality improvements.
  • sRGB texture and framebuffer support.
  • Switched to GLEW library for OpenGL extension handling.
  • Vegetation and lightmapping example shaders.
  • Engine configuration through a parameter map.
  • Lots of refactoring, code cleanup and bugfixes.

V1.22

  • Configurable render path replaces hardcoded forward/prepass/deferred modes. Render path system also used for postprocessing now.
  • Threaded task priorities; long-running tasks (more than one frame) can coexist with the time-critical tasks.
  • Possibility to use also RGB normal maps.
  • CustomGeometry component, which allows geometry to be defined similarly to OpenGL immediate mode.
  • Elapsed time shader parameter for material animation.
  • Cubic environment mapping example shaders.
  • Separate physics collision start & end events.
  • Visual Studio 2012, Eclipse & Xcode build support.
  • Many bugfixes, including iOS 6 orientation & shadow mapping bugfixes, and skinning on some Android devices.

V1.21

  • Bugfixes and code cleanup.
  • External window support (experimental).
  • UI elements refactored to use attributes for serialization.
  • Animation state editing and animation trigger events.
  • Scene update time scale can be modified.
  • Improved the delayed method call system.

V1.2

  • Android and iOS support.
  • Decal rendering.
  • Terrain rendering.
  • Joystick input support.
  • Use SDL library for windowing and input on all platforms.
  • KTX and PVR image loading (for ETC1 & PVRTC compressed textures).
  • Removed need for shader preprocessing; reorganized shaders to be more friendly to base custom shaders on.
  • Inbuilt geometry shapes in the editor.

V1.16

  • Switched to Bullet physics library.
  • More physics constraint types.
  • Rendering and networking performance optimizations.
  • Use Squish library to implement software DXT decompression when not supported in hardware.

V1.15

  • New deferred rendering pipeline.
  • Unicode support.
  • Live resource reloading in the editor (Windows only so far).
  • More accurate frame timing.
  • Bugfixes to physics jittering and FBO performance issue on Linux.

V1.14

  • Object (partial scene) load/save.
  • Post-processing.
  • Switched to pugixml library, scene load/save optimizations.
  • Bugfixes to rendertexture views and component attributes.

V1.13

  • Task-based multithreading.
  • Vertex lighting option.
  • Forward and light pre-pass rendering pipelines.

V1.12

  • Manipulator gizmo and multi-editing in the editor.
  • Switched to forward rendering exclusively, which is optimized to do more work in the vertex shader.
  • Zone system refactoring. Objects check the zone they belong to for per-zone light masking, ambient light and fog settings.
  • Scripting API fixes and improvements.

V1.11

  • Bugfixes and performance optimizations.
  • Added GraphicsTest example from V1.0 (now called TestSceneOld).
  • Added fallback mode, which is used if multiple render targets or hardware shadow maps are not available.

V1.1

  • Object and scene model refactoring.
  • Automatic serialization of scene objects via attributes.
  • Added OpenGL and cross-platform support.
  • Switched to kNet library for networking.

V1.0

  • Original release.