Horde3D SDK Change Log
Here you can see what has changed in the Horde3D SDK releases.
Version [0.15.0]
- Implemented an extension mechanism with support for new node and resource types. Created the official Terrain extension as proof of concept.
- Realized the Utility Library as extension instead as separate DLL.
- Added API function checkExtension.
- Added support for anti-aliasing to render targets (many thanks to Jasmine Langridge).
- Added SampleCount and WireframeMode to EngineOptions enum.
- Realized pipelines as resources.
- Removed API function loadPipelineConfig.
- Added API function setPipelineStageActivation and added XML attribute 'enabled' to Pipeline 'Stage' element.
- Modified API function addCameraNode and added PipelineRes to CameraNodeParams enum.
- Replaced API function getRenderTargetData by getPipelineRenderTargetData.
- Removed default Camera node (PrimeTimeCam).
- Added camera parameter to API render function.
- Removed API functions getActiveCamera and setActiveCamera.
- Added camera parameter to Utility function pickNode.
- Relocated API functions getResourcePath and setResourcePath from engine core to Utility Library.
- Removed Integration Library class and added C-compatible API functions getNodeAttachmentString and checkNodeTransformFlag as replacement.
- Replaced node-specific get/set functions by global ones. Added API functions getNodeParami, setNodeParami, getNodeParamf and setNodeParamf.
- Changed numbers of API enums.
- Changed all API function paramters from unsigned int to int for better compatibility with other programming languages like C#.
- Changed handles from unsigned int to int.
- Changed all Utility Library parameters from unsigned int to int.
- Modified resource management: the resource path is no more part of the resource name and the name must solely be unique for the resource type.
- Modified API functions queryUnloadedResource and loadResource to use handles instead of names.
- Modified API function removeResource to return the number of references that the application is still holding.
- Added API functions getResourceParami and getResourceParamf.
- Removed API enum ResourceData and added GeometryResParams and AnimationResParams enums instead.
- Implemented resource cloning mechanism exposed by the API function cloneResource. Currently cloning is only working for a few resource types.
- Added API function getResourceName.
- Added API function setShaderPreambles that can define a standard header for all shaders (e.g. for platform-specific defines).
- Implemented a line encoding for shader errors.
- Removed API function getMeshData since the data can be directly accessed at the Geometry resource now.
- Extended MeshNodeParams enum and added ModelNodeParams and JointNodeParams enum.
- Added API function setNodeParent to relocate a node in the scene graph.
- Renamed scene graph resource node attributes px, py, pz to tx, ty, tz since they represent a translation rather than a position. Support for the previous format is still there but will be removed in the future.
- Fixed a few bugs in material and pipeline system.
- Implemented material link mechanism enabling a pipeline stage and material to include another material.
- Modifed samples to use GLFW DLL instead of static library.
- Updated samples to use ambient lighting and made shaders more suitable for other applications.
- Improved parallax mapping shader of samples (using iterative parallax mapping).
- Replaced NVTriStrip in ColladaConv by a custom algorithm that is smaller and delivers better results.
- Removed ColladaConv option '-opt' and added '-noopt' instead. Geometry optimization is now enabled by default.
Version [0.14.0]
- Added support for loading Photoshop PSD files.
- Slightly modified pipeline syntax to make binding of render buffers more generic and powerful.
- Added four additional texture stages to be used by materials and pipeline.
- Added pipeline command to set material uniforms.
- Added optional attribute 'context' to pipeline lighting commands.
- Added multiplicative blend mode for shaders.
- Rewrote animation system to be smaller and faster.
- Replaced animation mask string by a start node and improved additive mixing.
- Added more texture resource flags and material options.
- Renamed API flag ResourceFlags::NoCompression.
- Added API function to read render target pixel data.
- Added two new API functions to find scene nodes with specified attributes.
- Changed the semantics of the getNodeChild API function to just return a direct child by a specified index.
- Renamed some API parameters for consistency. This should not break any code.
- Modification: API function clear also resets pipeline now.
- Modification: All emitter attributes can be set now using API function setEmitterParam.
- Critical modification: Parameters from node type specific set-functions are no longer forwarded to child nodes when applied to a node of an inappropriate type.
- Replaced SDL by GLFW for the samples. This should fix some OpenGL initialization problems on ATI cards.
- Made a plenty of internal code improvements (e.g. use of smart pointers for resources).
- Replaced TinyXML by a faster and smaller parser written by Frank Vanden Berghen.
- Fixed several smaller bugs in engine core.
- Improved ColladaConv to better handle arbitrary geometry/controller instances at scene nodes.
- Improved ColladaConv to support generic animation names.
Version [0.13.0]
- Extended pipeline (access to depth texture, explicit size) config and changed syntax.
- Replaced corona image loading library with Sean Barret's public domain stbi code.
- Changed cubemap format from horizontal to vertical cross for better tool compatibility.
- Added support for Radiance RGBE HDR textures.
- Made geometry format stream based for more flexibility (still support for older format).
- Made it possible to attach meshes to joints; also updated Collada Converter to support this.
- Fixed compilation problems on some Linux systems.
- Optimized morphing.
- Made all pointers in API and utility functions safe for NULL arguments.
- Added API function castRay for ray collision queries.
- Added API function calcCameraProjectionMatrix which returns camera projection matrix.
- Added API function setLightContexts for specifying light shader contexts.
- Added shader uniform frameBufSize.
- Modification: Particle texture coordinates now stored in shader attribute 'texCoord0'.
- Modification: Renamed vertex shader attribute 'bones' to 'joints'.
- Modification: Default shadow map size is 1024 now.
- Began implementing a modular shader library.
- Made many other smaller improvements to engine core.
- Added utility function pickNode for picking of scene nodes with window coordinates.
- Implemented HDR pipeline for Knight sample.
- Fixed crash of samples on widescreen displays when switching to fullscreen mode.
- Made several improvements to Collada Converter for more robustness.
- Added parameter 'anim' to Collada Converter for exporting animations only.
- Added output of morph target names to scene graph files in Collada Converter.
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-2008 Nicolas Schulz