History

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 external 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 external 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.