Horde3D SDK Change Log
Here you can see what has changed in the Horde3D SDK releases.
Version [0.12.0]
- Made basic Parallel Split Shadow Map implementation (still many opportunities for improvements).
- Added shader uniforms shadowMapSize, shadowSplitDists and shadowMats.
- Modification: Camera view matrix is also stored in gl_ModelViewMatrix for deferred shading.
- Made engine platform independent and added precomiled libraries for Linux x86.
- Modified resource system to allow reloading of resources.
- Added API function unloadResource to unload (but not remove) a resource and prepare it for reloading.
- Implemented queue based message system which replaces automatic output to EngineLog.html file.
- Added API function getMessage to return an entry from the message queue.
- Added utility function dumpMessages which writes all messages to the EngineLog.html file.
- Changed camera node parameters to take plane coordinates which is necessary for asymmetric viewing frustums.
- Replaced API function overwriteCameraPlanes by function setupCameraView.
- Made all name and identifier string operations in the engine case-sensitive.
- Reduced maximum number of joints to 75. This is necessary because of the additional PSSM uniforms.
- Changed directory structure.
- Changed samples over to using SDL.
- Modified skybox from samples to use cubemap texture.
- Improved sample deferred shading pipeline by adding ambient pass.
- Switched default pipeline of Chicago sample to forward shading.
Version [0.11.1]
- Added API function getNodeAABB which returns the axis aligned bounding box of a scene node.
- Added API function getNodeParent which returns the parent node of a scene node.
- Added engine option DebugViewMode which renders geometry in wireframe mode.
- Changed pointer in setNodeTransformMatrix to const.
- Optimization: Changed vertex buffer layout to be 32 byte aligned.
- Optimization: Vertex indices are converted to 16 bit if possible.
- Optimization: Implemented scissor test for light sources to reduce fillrate consumption.
- Optimization: Shadowmap is updated now only when light is visible.
- Optimization: Improved culling for lighting passes.
- Reduced number of available texture channels from four to two to get 32 byte aligned vertex layout.
- Optimized sample shaders and fixed some issues.
- Made several other bugfixes and smaller improvements in engine core.
- Improved compatibility of Knight sample for older hardware by modifying post processing shader.
- Switched default pipeline of Chicago sample to deferred shading which is faster now than the forward path.
- Improved compatibility of Collada converter regarding materials.
Version [0.11.0]
- Implemented Horde3D Integration Library which gives applications more control over scene graph and simplifies integration with other middleware.
- Implemented particle systems. Particles are fully integrated into the pipeline making it easy to let them cast shadows or receive lighting.
- Increased joint limit from 59 to 79 joints by changing shader skinning uniforms.
- Introduced shader uniforms worldMat and worldNormalMat.
- Added hierarchical class system for materials which is accessible from the pipeline configuration.
- Made it possible to set the blend mode and depth mask for shader contexts. This enables the creation of translucent materials.
- Added possibility to set engine options in pipeline configuration.
- Made it possible to attach all node types to all other nodes with exception of Joints and Meshes.
- Added API function loadPipelineConfig to load or reload a pipeline configuration.
- Added API function getActiveCamera which returns the currently active camera node.
- Added API function setNodeName to set the name of a scene node.
- Added API function setMaterialUniform to overwrite material uniform values.
- Added API function findResource to get the handle to a created resource using its name.
- Removed pipelineConfig parameter from API function init.
- Modified getMeshData function to take additional parameter.
- Modified API function setMeshUniform to take additional parameter which makes it possible to apply uniform values to all children.
- Added Material parameter to LightNodeParams enum which makes it possible to configure the light source material/shader.
- Fixed a plenty of smaller bugs.
- Fixed problems with lighting in sample skinning shader.
- Dramatically improved performance of Collada Converter by avoiding quadratic complexity.
Version [0.10.0]
- Added NoQuery flag for addResource to exclude resource from being listed with queryUnloadedResource.
- Introduced new Code resource type for shader programs.
- Added pipeline configuration filename to init function.
- Introduced new Camera scene node type.
- Added default camera node.
- Removed old camera functions (getCamParams, setCamParams, setViewParams).
- Removed utility function setupViewerParams.
- Added function to set active camera.
- Removed underlays and changed overlay layer param to uint. Video textures for AR can be done using other projective techniques.
- Added API function to get scene node name.
- Added API function to set scene node transformation matrix directly.
- Added additive animations.
- Modified light node: it now has a material instead of a texture which also replaces the projective texture attribute.
- Added lighting and shadowmap context names to function addLightNode.
- Modified geometry resource format; four mapping channels are available now.
- Implemented flexible rendering pipeline.
- Made it possible to define arbitrary shader context names.
- Removed shader params from shader resources. The renderer now detects automatically which attributes are used.
- Changed material format to support uniforms.
- Added API function to set mesh uniform values.
- Bugfix: getNodeTransform returns rotation in angles now instead of radians.
- Fixed some problems with removeNode.
- Made node parameters in scene graph resource consistent with API.
- Made a plenty of optimizations, mainly for reducing CPU overhead.
- Optimization: Collada converter sorts vertex buffers for linear memory layout.
Version [0.9.0]
- Modified API style to be more flexible for specific scene node functionality.
- Changed API function for showing overlays to take 4 points instead of 2 extreme points.
- Added function to set frustum parameters.
- Added utility function to setup perspective frustum.
- Removed parameter fov from setCamParams.
- Modified resize function to take position of viewport.
- Added function which returns resource type.
- Added flags parameter to addResource.
- Added resource flag for disabling texture compression.
- Changed updateResource API function.
- Added 'Unknown' value to ResourceTypes and SceneNodeTypes.
- Optimized scene graph to make updates only when needed.
- Made it possible to attach scene nodes to joints.
- Modification: Root node has no more value 0 but is defined as constant with value 1.
- Modification: Joints and meshes can be hierarchical now.
- Modification: LOD is only available for Group nodes.
- Added projective texture parameter for Light nodes.
- Implemented getting and setting of joint transformation for procedural animation.
- Added animation blending and mixing.
- Implemented animation for objects without skin.
- Implemented inter-frame interpolation for animations.
- Modification: Collada tool stores vertices in local space and applies world transformation in scene graph.
- Modification: Material references in scene graph include model name as subdirectory when converted.
- Modification: Converter now uses geometry name (if available) instead of id as morph target name.
- Modified animation format to use relative transformations and decomposed values.
Version [0.8.0]
- Added API getter-functions for most setter-functions.
- Added API function to access resource data and node data. This makes it it possible to read out geometry data and use it for collision detection or physics.
- Added API function to update resource data (implemented for 2D texture images).
- Added API function to iterate over child nodes.
- Added API function to get node type.
- Added FOV for spot lights.
- Changed coordinate systems to be right-handed for better compatibility with other libraries and tools.
- Changed XML attributes for node position in SceneGraphResource from x, y, z to px, py, pz.
- Added obligatory scene node attributes for Mesh containing the vertex range of the batch.
- Modification: Layer of overlays can be negative meaning that they are drawn as underlays before scene objects are rendered.
- Modification: Joints are part of the scene graph now.
- Modification: Scene graph files don't need to have a Group as root any more, instead any scene node type can be used as root.
- Modified shadow mapping implementation to make use of PCF. The blurring of the shadow term texture in a post-processing step has been removed resulting in much better performance.
- Removed ShadowMapSoft option from scene node parameters.
- Improved skinning implementation. Skinned vertices are in world space now instead of bone space.
- Modified geometry resource format to be compatible with new skinning implementation and to use less memory.
- Made many other smaller bugfixes and improvements in engine core.
- Added utility function to create texture resource data from raw image data.
- Added utility function to free memory allocated by the utility library.
- Changed command line arguments of Collada tool.
- Extended Collada tool to handle assets with several skin modifiers.
- Made other smaller improvements to Collada tool.
Version [0.7.0]
- Added new API function for setting morph target weights.
- Changed geometry resource format to include morph data.
- Added loading, interpolation and rendering of morph targets to engine core.
- Changed initial model node bounding box calculation to respect initial skinning pose.
- Added parsing and export of morph targets to Collada tool.
- Made other smaller improvements to Collada tool.
Version [0.6.1]
- Fixed problems with shadows on older ATI hardware by unrolling for-loops in the blur shaders.
- Reduced joint maximum from 60 to 59 to avoid shader register overflows; this will have to be improved in upcoming versions.
- Added cube map support for materials.
- Updated normal calculation for Collada tool to be more robust.
- Made other smaller improvements to Collada tool.
Version [0.6.0]
- Introduced shader context concept.
- Integrated basic shadow mapping implementation with screen-space blurring.
- Added blending for lighting pass so that more than one light source can be used now.
- Added alpha blending for overlays.
- Made smaller bug fixes and code improvements in the engine core.
- Updated Chicago sample to demonstrate shadow mapping.
Version [0.5.1]
- * First source code release *
- Added log message when G-Buffer creation fails.
Version [0.5.0]
- * First public release *
Copyright © 2006-2007 Nicolas Schulz