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