v1.4.3 [Eihort] (8 July 2007) - Maintenance Release
- GL:
- Fix returning to fixed-function pipeline after using programmable pipeline with
more than fixed-function (8) texture units
- Don't delete externally created windows in GLX renderer
- Allow a Win32 GL window to use an externally created GL context
- D3D9:
- Fixed loading of DXT compressed data manually from memory instead of .dds files in D3D
- Fix a leak / potential crash when manually shutting down and reinitialising
- Only reset window size when necessary, when going between fullscreen and windowed modes
- Precompiled SDK built again with 2004 DirectX SDK for max compatibility
- Change MRT surface restriction to 'same bit depth' not 'same pixel format'. This is
the actual restriction that the majority of cards enforce, save
the latest (e.g. 8800)
- Fix max_lights in non light-iteration cases, was being ignored previously which could
cause some issues with other processing of light lists
- Fix Math::intersects (sphere / plane) - was
missing the 'd' component Fix Math::intersects (sphere / aabb) -
use Arvo's algorithm Neither of these methods were called in the
Ogre code which is why they were missed.
- Add Compositor to VC2005 SDK samples project, was missing.
- Fix SharedPtr bug in operator= when rhs and lhs are interdependent (e.g. one holding a
pointer to the other)
- Allow OGRE_EXCEPT to be overridden if predefined
- Node::Listener is now called after all derived implementations of _updateFromParent, this fixes some issues with generating a RibbonTrail from a TagPoint
- Fix failure in vertex pose animation when subentities are made invisible
- Define maximum render queue ID more explicitly and assert against it to avoid issues with compositors if this is exceeded by user code
- Fix an animation blending problem on some skeleton set ups. This should resolve the problems some people were getting when using non-unit weighting on multiple active animations. Would not have affected many skeletons, depends on the exporter.
- Fixed incorrect fading of modulative texture spotlight shadows when using custom shadow projection systems
- Font now correcly removes everything it creates allowing it to be reloaded at runtime
- Prevented continuous (every frame) retry of texture loading when it fails, now only retries when something changes
- Bug fix for auto params light_direction_view_space_array and light_direction_object_space_array
- Fixed uncallable operator= of ConstMapIterator
- A few const correctness / warning fixes.
v1.4.2 [Eihort] (10 June 2007) - Maintenance Release
- GL:
- Restore old GL context instead of setting it to null during initialisation and context cloning, helps with systems managing their own contexts
- When uploading from scratch to real buffer, should only discard whole buffer if the entire buffer was locked.
- Scratch buffer optimisations temporarily disabled in Linux and OSX since they appear to still be having issues with them, Win32 is fine.
- Support arrays of sampler uniforms in GLSL
- D3D9: Use D3DPOOL_SYSTEMMEM for temp surface when going down the GetRenderTargetData path since that's a requirement and complained on some drivers.
- Fix a versioning issue on Linux, bumpversion script was missing AM_INIT_AUTOMAKE due to typo
- Fix texture clamping on non-integrated custom shadow receiver materials
- Fix Vector3::perpendicular for base vectors near UNIT_X
- Rewrite Frustum::projectSphere so it is more accurate, now correctly solves quadratic instead of using inaccurate shortcut.
- Fix bug in XML converter when reading poses that used 'mesh' as a target
- Fix MaterialSerializer exporting of mipmap count
- XML mesh conversion now handles incorrect XML vertex/face count cleanly instead of overrunning
- Fix multiple index buffer locking bugs in StaticGeometry and InstancedGeometry, was causing underrun buffer corruptions in GL
- Cope cleanly with GpuProgramParameters::mNamedConstants not having been initialised, mostly likely because of a compile error
- Add the ability to switch between fullscreen mode and windowed mode on the fly, and to switch fullscreen modes, without recreating a window. Windows only implementation for the moment, still waiting for GLX and OSX versions.
- Fix off-by-one error when writing a GLX window contents to disk, had already been fixed in Win32Window.
- Fix some light_direction_object/view_space GPU parameters. Should make sure we extract 3x3 matrix to avoid accidentally factoring in translations. Also standardise the
_array versions of the same.
- Support up to 16 textures properly in programmable pipeline, instead of maxing out at fixed-function limits.
- Fix a crash caused by a Resource being created during bulk-loading of a resource group, with a different group (e.g. the autodetect group).
- Water materials that use scene_blend should have depth_write off
- Compositor fixes:
- Detect when visibility mask is varied on the viewport for the implied 'original scene' and recompile
- Assign the new values of vis mask and background settings to the compositor to stop repeated compilations after one change detected
- Fix compositor demo closing when you ALT-TAB away from it
- Fix use of GPU parameters in SceneManager::manualRender
v1.4.1 [Eihort] (6 May 2007) - Maintenance Release
- Linux support for GLX 1.2 and earlier re-established. Patch which enhanced GLX support but was reliant on GLX 1.3 has been rolled back.
- Allow Linux configure to choose to use DevIL again if wished, to avoid conflicts of FreeImage's modified image libraries & system libs.
- Fix autotool detection of FreeImage
- Fix assert in debug mode with custom projections (e.g. focused or LiSPSM shadows) caused by constructing an invalid AABB
- MemoryManager::dllocMem should early-out for null pointers to conform to standards
- Fix theoretical problem with Ray/AABB intersection - if origin was precisely on the boundary of an AABB plane it wouldn't be classed as 'inside' but would also would not test whether the ray was heading towards the box.
- Don't set logical / physical param maps for GLSL, as GLSL isn't supposed to access parameters by logical index, so try to do that will throw exception rather than some undefined behavior now.
- Global namespace uniforms supported in Cg
- Fix cracks in TerrainSceneManager vertex morph program in GL/ATI. Was caused by different interpretation of ARB_vertex_program by ATI drivers.
- Registration and deregistration of high level gpu program factories tightened up, they're only registered if supportable now so easier to determine high-level support. Were originally registered early to try to reduce errors in using cross-platform media but this has been addressed via null programs now.
- Resolved some ALT-key issues in default window loop
- Fixed directional lights inverted when using focused & LiSPSM shadows
- Fixed opening GLX window on displays > 0
- Fix OpenGL fullscreen refresh rate in Win32 (GLX ok)
- Fix use of ACT_TEXTURE_VIEWPROJ_MATRIX with custom projectors (not texture shadows)
- Fix problems with compositor removing a viewport listener in the middle of the viewport listener callbacks - only shows up if there is more than one listener.
- Allow arbitrary D3D window size in auto created window (in windowed mode), was previously only allowed in manually created windows)
- More gracefully handle trying to build edge lists on meshes which have line / point geometry in them. Make sure we create no edge list when there
is no triangle data, and allow meshes with mixed operation types by only including the triangle data submeshes in the edge list
- Fix to make StringConverter::parseXxxx correctly return zero when given garbage
- GCC visibility fixes (python-ogre compatibility)
- Compositors are now correctly created in the resource group their script was parsed from
- MeshSerializerImpl::writeSubMeshExtremes bugfix
- Improvement to FileName splitting functions
- AxisAlignedBox::getCorner method const correctness
- Documented the 'emitted emitters' feature
- Remove manual setting of light state in TerrainSceneManager
- Updated GLX config dialog backdrop
v1.4.0 Final
[Eihort] (25 March 2007)
- Major Release
Please see the RC1 notes below for the major changes in the 1.4.0 release, this section just details the changes since RC2:
- OpenGL:
- Significant speed improvements for dynamic VBOs -
glMapBuffer/glUnmapBuffer is now only used for total buffer replacement
or large sub-buffer changes; smaller partial updates use a CPU scratch
buffer area and glBufferSubData which can be much faster. Also
eliminated some redundant copying when using shadow buffers
- Fix a problem with bleeding of vertex colour tracking state in GL rendersystem.
- Use a smaller buffer size when testing FBO formats to reduce overhead
- Correct GeForce 6200 profile, doesn't support floating-point texture filtering, as stated in NV documents
- Fixed PBuffer check for whether main context is usable - copy/paste error compared width with height
- Fixed line ending detection in GLSL uniform parsing, was causing problems with *nix line-endings
- GLDefaultHardwareVertexBuffer now allocates aligned memory
- Made GLTextureBuffer destructor safe even if failed to construct render-targets for some reason
- Don't use FBO method to upload texture from memory if either
source or target pixel format is luminance, seems never
supported by hardware.
- Upload texture from memory with FBO should take extra care with source image rowPitch/slicePitch (e.g. nonconsecutive image).
- D3D9:
- Fall back to TAM_CLAMP and eliminate D3D debug run-time error if TAM_BORDER not supported by hardware
- Fixed potential double-release in D3D9HardwarePixelBuffer::blitToMemory if fast GetRenderTargetData fails
- OSX:
- Updated the Xcode project by changing any header listed as project, or private, to public.
- Fixed the header referencing to be compatible with Xcode's
framework system. This means that Ogre should be fully ready to
be released as a stand alone binary, and it will use the headers in the
framework instead of needing an extra copy of the source around
- Added Crowd and Instancing demos
- The Tools Xcode projects have been updated against the latest Ogre.framework
- ExampleApplication relative path fix
- Linux:
- Fix automake detection beyond version 1.9
- Fix GLX crash when building the config dialog image in debug mode
- Generally improved the GLX driver functionality
- Allow gcc 4.x builds to take advantage of visibility
attribute to reduce plugin size a bit. Works for MinGW and
linux gcc >= 4.0.
- Fix detection of X11 paths for 64bit systems
- Fix instancing demo crash (should have reduced the mesh count when removing cube.mesh)
- Fixed and unusual situation with auto-organised buffers where there was unexpected blend weights/indices in vertex data
- Hardware skinning examples:
- have GLSL and Cg vertex two weight skinners share the same default parameters.
- added GLSL vertex skinner two weight shadow caster
- added unified vertex program for skinner two weight shadow casters
- used matrix multiply instead of individual dot products in GLSL to improve performance on ATI cards
- Fix use of UTFString class when using STLport
- Make sure Rectangle2D::setCorners constructs a valid bounding box
- Fixed ATI GLSL lighting problem for instancing demo
- Update deferred shading demo to fix tangent access and explicitly
set texture coord set. Also disable skies for MRT since skies don't
render to MRT and nVidia D3D driver refuses to write to MRTs for other
objects after that's done. Still a few issues with this demo though.
- Code::Blocks:
- Project updates including adding missing instancing demo
- Linux project for Code::Blocks added
- StringConverter::parseBool accepts '1' as true now
- Enclose max/min with parentheses in headers to suppress
nasty max/min macro substitution if user has a Windows header on
their path
- Make static pass dirty list and graveyard threadsafe when threading enabled
- Fix bug
in GpuProgramParameters::_getFloatConstantPhysicalIndex/_getIntConstantPhysicalIndex
when expanding in middle of the buffer for a logical entry
- Fix CEGui renderer in GL being a bit random with the texture filter modes
- Font bugfix - don't restart texture coordinates to (0,0) for each code-point range
- Fixed the fact that Entity::_deinitialise() should have been clearing the internal lists
- Fixed locale problems with StringConverter::parse* methods - now
use std::istringstream instead of atof / atoi so they behave
consistently with StringConverter::toString which uses ostringstream.
- Fixed bug which caused BSP loading not to parse .shader files in subfolders
- Fix const-correctness on PixelUtil::packColour and Bitwise::intWrite
- TextAreaOverlayElement - needed to reduce the vertex count twice for CR/LF
- Fixed Pass max_lights in per-light or per-n-lights iteration,
max should apply to the sum of all iterations and not per single
iteration
- 'shadow_scene_depth_range' auto-binding needed same behavior as SceneManager when dealing with light list
- Consistency issues with writeContentsToFile fixed:
- D3D now writes only the client area to the screenshot, no title / border (matches GL)
- Fixed 1-pixel border in Win32 GL screenshots caused by off-by-1 params to glReadPixels
- Used glReadBuffer(GL_FRONT) in fullscreen mode to ensure
that the latest results are read in cases where single-stepping is
done
- Minor memory leaks fixed in OgreXmlConverter
- Ensure PixelUtil::getBNFExpressionOfPixelFormats is called after all global statics are properly initialised
- Consistency fixes (export and const correctness) for << operators in various classes
- Make #ifdef more specific on OgrePrerequisites.h to avoid name clashes
- TextureUnitState animated textures - allow resetting of animation position
- Default Quaternion::getYaw / getPitch / getRoll to more
intuitive
versions ie the atan2 of the projection of the local axes.
Can return to the previous version by passing 'false' to the
methods.
- Fix Ogre debug calloc macro has incorrect parameter count
- Added access to ManualObject sections after they are created
- Added "hasEnded" method to AnimationState
- Tidied and removed header entries for some previously removed code
- LEXIExporter updated to 1.0.3
- Blender Exporter:
- added check for empty ipos
- fixed translation key frame values
- documentation updates
- XSI Exporter:
- Fix pose animations for objects not at the origin
v1.4.0 RC2
[Eihort] (4 March 2007)
- Major Release
Please see the RC1 notes below for the major changes in the 1.4.0 release, this section just details the changes since RC1:
- Mac OSX build updated (also dependencies, please download the updated package), including bugfixes to Carbon window
- Code::Blocks / MingW build updated (can now be built with MingW gcc 4.x + Mingw C++ Toolbox)
- Octree plugin:
- OctreeCamera and OctreeNode now exported
- Now supports infinite bounding boxes if present
- Uses the Camera's linked cull frustum instead of its own custom CullCamera option
- Fix texture directive in material scripts when all 5 parameters are used (should be allowed)
- XSI 6 exporter
- MeshUpgrader now has a 'Regenerate bounding box' option for people having problems with incorrect bounds on meshes
- Workaround for ATI driver bug causing crash on GLSL compilation with skinning shader
- Workaround for GLSL drivers (ATI) that report array uniforms incorrectly
- Updated to latest version of TinyXML for XMLConverter
- Fixed codec support for 16-bit RGB(A) formats
- Added warning when a skinned mesh has vertices not assigned to any bones
- Unicode fixes for MingW
- Bugfix for when the "original scene" compositor instance is not guaranteed to be valid
- Added const version of SceneManager::getMovableObjectCollection
- Config file save/load moved out of config dialogs to common area
- Fix For "parentWindowHandle" with GLX
- Instancing demo: Fix selection of ogrehead.mesh in Linux / OSX
- Fixed D3D9HardwareOcclusionQuery::isStillOutstanding - should not have been using D3DGETDATA_FLUSH flag
- Fix assert when using custom per-renderable GPU parameters with GLSL params smaller than 4 floats (DeferredShading).
- Eliminated GL MRT shader warning: global variable gl_FragData requires "#extension GL_ARB_draw_buffers : enable" before use.
- Make ResourceManager::getMemoryUsage public
- Improve compositor demo / sharpen edges shader support on lower-end ATI cards
- Add non-const versions of GpuProgramParameters::getFloatPointer and getIntPointer
- Add destructor implementation for ErrorDialog in Win32
- Add SceneManager::get/setQueuedRenderableVisitor so users can hook into low-level rendering behaviour if they want to
- Fix rather obscure issue with glDrawBuffer / glReadBuffer not getting reset in some cases of external GL control
- Fixed problem with attaching a Light instance to a bone
- Fixed / suppressed some warnings
- Small optimisations and tidy ups
- Minor documentation updates
v1.4.0 RC1
[Eihort] (11 February 2007)
- Major Release
Below are listed the most significant changes in the Eihort release
over the previous stable version. This isn't quite everything, please
look at the Eihort Notes for more details, and also for advice on how to upgrade your applications from Dagon to Eihort.
Enhancements since the Dagon branch:
- SSE/SSE2/SIMD improves performance in several areas
- Batch concatenation of affine matrices
- Shadow volume routines
- Aligned memory allocator & CPUID detection
- Shader enhancements
- Parameter system rewritten and enhanced, particularly improves
support for GLSL arrays but also allows more optimal parameter binding
and more efficient memory usage
- preprocessor_definitions
option supported in HLSL/GLSL to create variant shaders based on same
source (Cg already supported this through compile_arguments param)
- column_major_matrices option in HLSL to alolow you to pack parameters differently
- 'unified' program definitions allow you to use one program as an alias for others for simpler cross-platform support
- GLSL 1.2 (GL 2.1) supported allowing non-square matrices
- GLSL now binds tangent, binormal, blendWeights and blendIndices to extended attributes (see the manual)
- Added many new auto-bindings including:
- spotlight_params
- 'array' versions of light auto-bindings (light_position_object_space_array, light_diffuse_colour_array, etc)
- Fixed-function surface reflectance passthoughs (surface_ambient_colour, surface_diffuse_colour, etc)
- texture_size, inverse_texture_size and packed_texture_size
- Lighting and shadowing
- You can now integrate texture shadows directly into your primary
material pipeline, rather than them being rendered as separate shadow receiver passes
- 'content_type shadow' added to texture unit to auto-bind
shadow textures into your materials and use them in
integrated rendering
- New light iteration parameters to give extra flexibility when
doing integrated lighting / shadowing - iteration per_n_lights and
start_light
- More texture shadow projection options through ShadowCameraSetup subclasses allow improved fidelity on texture shadows:
- Plane optimal
- Uniform focused
- LiSPSM
- Depth-shadowmapping example, with percentage-closest filtering for antialiased, self-shadowing effects using texture shadows
- Bounding boxes of objects visible from each camera in the
last frame are now recorded, which can be used to adjust custom shadow
camera setups. See SceneManager::getVisibilityABBForCam and
SceneManager::getShadowCastersAABForLight
- Customisable Light Finding
- Now you can more directly influence how OGRE picks lights to use against your renderable objects
- Default is still 'n nearest' but you can alter that to prioritise certain lights or any other custom reordering
- Mesh enhancements
- Triangles in the edge list now grouped by vertex set - use
MeshUpgrader to take advantage of performance enhancement, old files
will still load but suffer a load-time reorganisation cost
- Default placement for tangents is now the tangent semantic
rather than a texture coord. The latter was used in the past to support
SM1 shaders, and is still an option, but the default is now the SM2
friendly version
- Submeshes can now have optional 'extremity points' stored with them to
allow submeshes to be sorted with respect to each other in the case of
transparency.
- Animation
- Skeleton::_mergeSkeletonAnimations added to merge animations from multiple skeletons
- Added option to Skeleton::optimiseAllAnimations which only destroys node
tracks which have identity keyframes only for all animations.
- Several runtime and memory footprint optimisations
- Math optimisations
- Added specially optimised functions to dealing with affine matrices, all world / view transforms now have to be affine transforms (they were assumed so before anyway).
- Material enhancements
- mipmap_bias supported on texture_unit
- texture attribute allows you to specify a desired pixel format separate from the format of the loaded texture
- depth bias now supports slope-scale biasing as well as fixed biasing
- serialising a material is now simpler, there is no need to
call addConstantDefinition et al to make sure program params are
recorded for export
- quieter logging when including GPU programs which target a rendersystem which is not loaded
- shader compilation errors now dealt with more gracefully
- Texture enhancements
- You can now describe the desired pixel format to be used instead of the original
image format when loading a texture
- You can now set the
preferred bit depth for integer and float pixel formats respectively,
for example loading 128-bit float textures as 64-bit for performance
- Vertex Texture support (SM3.0)
- Shader-based Instancing (SM2.0+)
- Particle system enhancements
- Particle System now supports emitted emitters (to create effects such as fireworks more realistically).
- Particle system renderer now has optional callback when particle(s) being emitted, moved, expired or cleared.
- ManualObject enhancements
- ManualObject now allows you to update its contents more efficiently provided the structure does not alter
- ManualObject can be used to render 2D elements by using an infinite
AABB and telling it to use identity view and projection matrices
- Background loading
- Queue the loading of resources in a background thread
- Register your own thread or use automatic background queue manager
- Simple queued notification callbacks in primary thread so user doesn't have to think in a thread-safe manner
- Advanced users can perform other tasks (like scene graph setup) in a separate thread if they're careful about locking
- Static Linking official support
- Build targets for linking everything statically into one executable, including plugins
- Be aware of LGPL license conditions on derived works, or consider the OGRE Unrestricted License
- Unicode support on Font and Overlays
- WindowEventUtilities introduced
- Allows subscription to window events on auto-created windows
- Allows access to message pump for externally created windows
- RenderWindow::getCustomAttribute and related features unified across platforms
- Build / dependency changes:
- Image routines replaced - FreeImage + custom DDS codec now used
- SDL platform removed on Linux
- PlatformManager removed, all classes now referenced / created direct
- Input removed from core, now using OIS in samples
- Windows-specific:
- All dependencies are now statically linked to OgreMain, no dependency DLLs
- All plugins & rendersystems now use the naming convention _d for debug
- All library files now found in ogrenew/lib rather than distributed in subfolders
- Exception changes
- Ogre::Exception now sbuclasses from std::exception and implements what()
- All error codes now result in a separate subclass of
Ogre::Exception being thrown so you can catch particular types, e.g.
RenderingAPIException and InvalidParametersException
- OgreGuard / OgreUnGuard and stack tracing option have been removed
v1.2.5
[Dagon] (21 January 2007)
- Maintenance Release
Changes since v1.2.4:
- GL:
- Cope with GL_COMPRESSED_RGB_S3TC_DXT1_EXT as well
as GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, OSX in particular seems to
return the former sometimes even though DXT1 is only one format
- Test support for GL_EXT_secondary_color before using to avoid crashes on very old drivers
- D3D9: Use per-texture unit constant storage for cards that
support it to allow each unit to be more independent like GL.
Otherwise using more than one manual blend in a pass would override the same value.
- Fix light_direction_object_space and
light_direction_view_space auto params - should have been using
inverse transpose since they are directions
- Mesh: Close the log after writing debug edge data log to free up file handle
- Animation: Deal with invalid zero-length animations in a friendlier fashion (no infinite looping)
- GPU program params:
- setAutoConstant should check to see if the parameter
already has an auto, and replace it if so to allow modification of
autos without endlessly growing list. Add clearAutoConstant
to allow the unbinding of a single auto constant
- When parsing a manual parameter, unset any auto parameters
with the same name / index. This solves the problem where
overriding an auto parameter with a manual one in a subclassed
material, or overriding a default parameter didn't work.
- Fix ACT_LIGHT_POSITION_VIEW_SPACE -
since Light::getAs4DVector returns the result in worldspace,
should be using just the view matrix, not worldview
- Add SubEntity::getParent
- Octree plugin:
- OctreeNode::_isIn now deals with growth in object size and bumps objects out of the current node when too big
- Fix resize when setting 'Depth' parameter on OctreeSceneManager
- Terrain:
- Terrain renderable bounding radius should use half
length of the diagonal instead of maximise half length of edge of
the bounding box.
- When calculating scale of terrain, should use pagesize -
1 since pagesize refers to the number of vertices; physical size
is one less.
- Fix Billboard origins BBO_TOP_* and BBO_BOTTOM_* , were inverted
- Fix getCameraToViewportRay again, wasn't quite right for ortho / custom matrices
- Force update of animation after reevaluating vertex processing,
to cope with potential switching between hardware/software at
unusual times
- Make CompositorChain::_compile public so that expert users
can precompile chains if they want to. Also some compositor
compile optmisations.
- Don't try to load a HighLevelGpuProgram if it is not
supported - bulk loading all resources in a group could cause this
to fail if the shader isfor an unsupported system
- Fixed automatic setting of texture alias names when adding a new unnamed texture unit to a pass and then naming it
- Compiler2Pass: testNextTokenID() did not allow testing of
the last token in the que. Also fixed some problems parsing off
the end of the source in pass 1.
- Overlays:
- Overlay::setZOrder should maintain the same zorder multiple as Overlay::add2D on children
- Fix another potential overlay teardown order problem - elements should tell their parents when they are destroyed.
- Change 'time' to 'time_0_1' in Fresnel shader to try to prevent precision errors when run for a very long time
- Fixed some Code::Blocks project dependencies for some projects. Updated to latest Code::Blocks project format.
- Enable the FAT32 manifest workaround to prevent random
manifest errors when building on a FAT32 drive - seems to
especially be a problem on VS2005 SP1
- Fix a small constants overrun in GpuProgramParameters::copyConstantsFrom
- Fix /RTCc compatibility in ColourValue
- Small const correctness and tidy ups
- Various documentation corrections
v1.2.4
[Dagon] (12 November 2006)
- Maintenance Release
Changes since v1.2.3:
- DirectX9:
- Eliminated setting of texture transform to D3D device if
texture transforms are disabled, since D3D texture coordinate
processing will ignore it
- If "Full Screen" or "Video Mode" configuration
option missing when creating an auto D3D window, should throw
exception correctly
- D3D9RenderSystem::setVertexBufferBinding now dealing with gaps in vertex
buffer bindings correctly, could manifest iteself as problems if
entities created before shadow type picked (generally not recommended
anyway)
- Correctly report support for non-POW2 textures in D3D9, and
also detect 'limited' support option which many cards have (no
mips etc). Flag was not used in Ogre since POW2 issues are dealt with
another way but external apps might be checking it.
- Fix divide by zero when locking DXT compressed textures
- OpenGL:
- Buffers which had temporary blend copies were not forcibly
destroying those buffer copies when the original was destroyed, leading
to wasted memory that was only recovered when using more general shutdown methods
- Full screen antialiasing (FSAA) now supported for Win32/GL even if in 16bpp display mode
- GLSL now correctly populating GL_SAMPLER_2D_RECT and GL_SAMPLER_2D_RECT_SHADOW type uniforms
- Detect FBO depth/stencil formats a little more robustly
- Ensure GLSL programs are properly unbound when the next program bound is a different type
- Check for existence of wglSwapIntervalEXT before trying to use it, fixes crash on very old drivers
- Hardware pixel buffer locking fix - was only downloading
the buffer when locked read-only, now downloads provided the discard
lock option isn't used and the texture was not created write-only
- Hardware pixel buffer unlocking optimisation - don't upload the buffer if the original lock mode was read only
- Shadows:
- Should disable fogging explicitly for shadow
receiver pass if using additive texture shadows, since fogging state
might otherwise leak from a previous modulative mode
- Fix memory
growth issue with stencil shadows when destroying and recreating
entities - EntityShadowRenderable was creating vertex buffer binding
and vertex declarations itself when they were already being created by VertexData
- Materials:
- Material::getNumLodLevels should fall back on first scheme if scheme is not defined for this material
- Fixed incorrect auto gpu program parameters:
inverse_transpose_view_matrix, inverse_transpose_world_matrix
and inverse_transpose_worldview_matrix
- Node: Fix missing calls to Node::Listener if user causes transformation derivation to happen earlier than regular Node::update()
- Fix reinitialisation of auto windows after Root::shutdown
- BillboardChain::clearChain should notify index dirty and update bounds.
- RibbonTrail:
- setMaxChainElements, setNumberOfChains should reset all trails to initial state if there have tracked node.
- setNumberOfChains should not allow changing the number of chains to less than number of tracking nodes.
- Overridden clearChain to reset trail to initial state if it has a tracked node.
- Mesh:
- Fixed an assert that would be raised when trying
to lock an already locked buffer when buildTangentVectors is
called on a skeleton animated mesh with no edge list built.
- Overlay:
- Fix copying of nested overlay container elements from template
- Fix incorrect static_cast<unsigned> instances in BorderPanelOverlayElement which caused problems with some metrics
- On destruction of a root overlay container, remove from parent overlay to avoid dangling bad reference
- Quaternion: Fixed shortest path slerp bug, also use
lerp rather than just return first quaternion in case two quaternions
are very close.
- OctreeSceneManager: detect mOctree deletion during
shutdown if callbacks from nodes being destroyed hit
OctreeSceneManager methods, fixes some rare shutdown issues
- TerrainSceneManager: Fix terrain reloading problems (setWorldGeometry called more than once)
- Pass: dirty pass hashes immediately on change rather than on
load. If pass is loaded on demand as part of queueing an object
for rendering, and the pass had previously been rendered, the pass
hash would be dirtied too late for it to be corrected (since the hash
is recalculated when the queue is cleared, which has already
happened), leading to a hash discrepancy
- Fix small memory growth issue when destroying and recreating StaticGeometry and ManualObject
- PixelFormat: PF_UNKNOWN should be marked as inaccessible from PixelUtil::isAccessible
- Removed MemoryManager::instance() from MemoryManager methods being used inside non-static MemoryManager methods
- Profiler: Init hierarchicalLvl earlier so that it is valid when used by intermediate code
- BillboardSet::mBoundingRadius now initialised correctly
- Normalise result of Vector3::getRotationTo to protect against variations in extreme cases
- MaterialSerializer: Serialise number of mips and alpha-only option on texture_unit 'texture' attributes
- AnimationTrack: Ensure the result for zero-weight and trackless animations is the same, caused incorrect blending if mixed
- HDR compositor scene HDR rendering pass should use "input
none", and suppressed warning that attempt to render queue 5
before 96.
- Entity:
- shareSkeletonInstanceWith should not delete sharing prepared temp blend buffers
- Stop sharing skeleton instance during entity destroy and there is only one entity sharing the skeleton
- Don't re-prepare temp blend buffers when stopping sharing skeleton instance, it's unnecessary in this case
- Fix Camera::getCameraToViewportRay so that it deals with custom view / projection matrices properly
- XSI Exporter: Fix a pose animation bug where the start of
a pose animation was truncated to fit to a later animation and
incorrectly indexed
- Code::Blocks:
- allow MinGW to use mem pipe instead of temp files to speedup build process
- added missing Demo_Ocean project file for CB + MinGW
- Documentation updates
v1.2.3
[Dagon] (17 September 2006)
- Maintenance Release
Changes since v1.2.2:
- D3D9:
- Respect displayFrequency option if specified
- Use D3DFMT_UNKNOWN instead of D3DFMT_FROM_FILE for DDS loading routines, allow more fallbacks
- Make sure DestroyWindow is called in all cases on destruction in D3D9 when using OGRE-created window
- Don't try to update RTT/MRT when D3D device is lost
- Fix device lost recovery for secondary windows
- GL:
- Make sure fixed-function LBX_ADD_SMOOTH implemented, even
though no direct equivalent for arbitrary GL_COMBINE in GL.
GL_INTERPOLATE is the closest
- Fix a problem with the model (world) matrix being
incorrectly taken into account when using fixed-function cubic
reflection in GL
- TerrainSceneManager:
- Explicitly shut down page source before DLL shutdown,
identified by tuan as a cause of shutdown problems in TSM under certain
conditions
- Fix terrain pages not using custom assigned render queue
- Resource system:
- Move firing of resource start / end outside the isLoaded()
check to ensure that the callback count is correct even if resource
state changes
- Fix a bug with ResourceGroupManager::loadResourceGroup - if any
resource in the group at the start changed group (because of a resource
found in another location not in the group being loaded),
iterators are invalidated which caused a nasty crash. Really people
should sort out their group locations but detect this condition
and deal with it nicely
- XSI Exporter:
- Fix exporting of tangents
- Fix bug with scaling in keyframes should be relative to original bone scale (previously assumed bind scale of UNIT_SCALE)
- Linux:
- Fix compilation of OgreSDLConfig_gtk.cpp with recent libsigc
- Ogre::SDLWindow::isFullScreen implementation
- gcc deprecated warning fixes
- Provide -DOGRE_DOUBLE_PRECISION and -DEXT_HASH through pkg-config
- OSX:
- Universal binaries support
- Dependencies update
- Updated the Ogre Config Dialog to look more like it's windows counterpart
- NOTE: Using Frame
Buffer Objects (FBOs) on OSX can cause some visual artefacts, choose
"PBuffer" as the "RTT Preferred Mode" when configuring the GL
rendersystem until Leopard is released which should fix this
problem.
- Code::Blocks:
- project format updated
- STLport no longer required, but special build of MinGW needed for correct DLL handling of std::string
- Node changes:
- If node already attached to a parent, addChild now throws an
exception instead of just asserting, helpful to track down this
type of bug in release build
- removeChild(Node*) now uses node name to find whether/where to
erasing the child (still keep same behavior as previous), increases
performance
- Bugfix for node weighted transform scale blend:
should interpolate between old and new scale rather than scaling
old scale with factored new scale
- Compositors:
- Eliminate constant recompilation when compositors enabled on more than one viewport at once
- Eliminate extra memory consumption each time CompositorChain is recompiled
- ManualObject:
- Fix crash in ManualObject when silly people call begin() and end() with no data in between
- If
ManualObject is already attached to a node when new geometry is added,
tell parent to update so potentially new bounds are updated too
- BillboardChain:
- changing number of elements and
chains, enabling/disabling vertex colour and texture coords usage
should mark index buffer dirty and rebuild later
- update render queue should take render queue into account
- Tangent calculations:
- Correct bug with shared geometry where each submesh covered only some of the vertices
- Orthogonalise tangent vectors with the vertex normal when generating
- Ensure the correct texture format / num mips is used if texture
loaded through declareResource / loadResourceGroup instead of
TextureManager::load
- Fixed stencil shadow bug when enabling a custom near clip plane,
which in some case missing generate light/dark caps that required by
zfail algorithm
- Viewport clear buffers defaults
to FBT_COLOUR|FBT_DEPTH, the same as the value defaulted
in Viewport::setClearEveryFrame, not 0xFF. More consistent, small
speedup and resolves some compositor issues
- Overlay bugfix - when a parent container was using pixel
metrics, and the child was using non-left or non-top alignment,
the pixel metrics were being used as relative metrics to calculate the childs position in error
- Mesh::clone - fix pose list being empty after mesh cloning
- DeferredShading Demo now compiles under OGRE_DOUBLE_PRECISION mode
- Fix incorrect override on AnimableValue::applyDeltaValue(Real)
- Bugfixes for skeleton unloading
- Fix use of depth bias with CEGui renderer
- Tolerate compile errors in shaders, just log the errors and mark
the technique as unsupported instead of requiring app to catch exception
- StaticGeometry was getting the wrong material technique which
caused material LOD not to work, and for potentially unsupported
techniques to be picked - fixed.
- Fix
a bug in vertex morph animation where if the same keyframe was passed
as both parameters for the morph (because only one keyframe in a track,
or because the time exactly matched a keyframe), the same buffer was locked twice
- Root::addFrameListener now deals with the case where a
listener with a given address is removed and re-added before the
deferred removal is processed
- Entity::refreshAvailableAnimationState should refresh
vertex animation too. Refreshing the animation state should update
length if it has changed
- Virtualise a few SceneNode methods so they can be overridden
- Copy pass should copy hash value too. On demand
illumination pass compiles should calculate new pass hash value
immediately.
- BillboardSet: unreference main buffer when destroying
buffers, so the hardware vertex buffer will release back to driver as
early as possible
- Fix Ocean demo crashing if there are no supported material techniques
- Safely handle null camera in all cases in Viewport
- Fix a bug in the Milkshape exporter when exporting models
imported from other formats which have less position keyframes than
rotation keyframes (Milkshape never creates these)
- Fix and enhance BitmapFontBuilderTool
- Miscellaneous detail-level performance improvements
- Documentation updates
v1.2.2
[Dagon] (23 July 2006)
- Maintenance Release
Changes since v1.2.1:
- D3D9:
- when loading DDS files, se 'Ex' versions of DDS loading routines so that user mipmap preferences are preserved
- Initialise D3DTexture::mD3DPool to some value other than
D3DPOOL_DEFAULT, if texture loading failed and then later it might
re-create as empty texture on device lost/restore
- Fixed checking whether or not device supports mip-map texture when loading .dds texture
- Small optimisations during matrix conversion
- GL:
- updated GL uniform type names to GL2.0 spec as defined in glew.h
- added missing shadow sampler uniform types
- TextureUnitState: Reset mRecalcTexMatrix to false
after texture matrix calculated, to avoid recalculating each
time
- Fix bootstrap script not accepting autoconf 2.60
- Node: Avoid queueing a node for update more than once, which could result in a crash if node was destroyed
- Added missing initialisation of mAutoCalc for RotationalSpline
- MapIterator / ConstMapIterator - fixed peekNextValuePtr
- Fixed shadow_receiver_fragment_program usage with modulative texture shadows
- Added more tests for configure.in
- Solaris 11 (Nexenta OS Alpha 5) build compatibility
- Fixed an inappropriate unsigned casting issue in TextAreaOverlayElement introduced in 1.2.1
- OGRE_DEBUG_MEMORY_MANAGER can now be defined externally
which is usefull for batch builds that need to build both versions
- Added MinGW + STLPort version of Code::Blocks project for MeshUpgrader, a few other Code::Blocks project tweaks
- SkeletonInstance::createTagPointOnBone offset position parameter should default to ZERO instead of UNIT_SCALE.
- Slight optimisation/fix of BillboardSet and ParticleSystem:
- Use list<>::splice to move billboard/particle between
active and free list. As a side note that removing a billboard
which doesn't exist in the active list now causes assertion fault in
debug
- BBT_PERPENDICULAR_COMMON no need to generate axes
and vertex offsets for every billboards (use common axes and
vertex offsets instead).
- Notify particle system renderer attached node only if is configured
- Fix CEGui renderer potential bufer overrun with malformed XML
- Added MovableObject::getVisible allow direct access to the
value set by MovableObject::setVisible without the additional
conditions of isVisible
- SceneNode::flipVisibility should use object visible flag
only, i.e. should not take object upper rendering distance into
account.
- Added missing overridden getMovableType for RibbonTrail
- Added overridden getSingleton* methods to CompositorManager for consistency
- Remove unnecessary normalize calls in normal mapping shaders for optimisation on lower end cards
- Sphere intersection test with another sphere or point now
uses squaredLength() instead of length() to avoid square root
- Fixed a naming bug in the 3dsmax exporter, can now use names with operators embedded
- Added a few missing header files to Mac OSX framework
- SceneNode::_getWorldAABB returns AxisAlignedBox by const reference instead of by value
- Some octree functions const correctness improved
- Tidy ups and minor optimisations for Vector2/3/4 classes
- SDL back-end:
- VSync support for SDL RenderSystem added
- Fix compilation of OgreSDLConfig_gtk.cpp with recent libsigc
- SDL_FreeSurface not needed for screen surfaces
- More corrections to the manual & docs
v1.2.1
[Dagon] (11 June 2006)
- Maintenance Release
Changes since v1.2.0:
- Fix bug with software skinning under gcc 4.1 (an optimisation issue which does not occur on stable gcc 4.0 or MSVC)
- Remove unnecessary (and incorrect, although harmless) linker path from platform manager
- InputEvent's constructor should take 'when' param as
a Real like the subclasses KeyEvent and MouseEvent to
avoid truncation
- Fixed bug in edge list builder when dealing with degenerate
triangles. Conforming vertex / index data is required to build an edge
list, so throw an exception if this condition is detected
- Fixed HLSL program populating incorrect parameter index of array parameters
- Fixed potential double inserts into mSupportedTechniques while compile materials
- Put RibbonTrail local TimeControllerValue class into unnamed
namespace, avoid potential naming conflict and also marked it as private
- Minor issue in Rectangle2D - set the (unused in most cases) mBox member properly instead of some random stack variable
- Fixed animation update problem when animation state changed between end of last
frame and beginning of next frame - note this changes the behaviour of
AnimationStateSet::getDirtyFrameNumber, if you used this yourself,
check the changes
- Fixed a bug causing the transform of an object attached to a
bone to never update if its own transform is changed, when the parent
skeleton animation is frozen
- Entity shouldn't force software animation because of stencil shadows if it has shadow casting disabled
- Texture Shadow fixes:
- Fix several bugs with using global custom shadow caster / receiver materials that used vertex / fragment programs
- Fix continuous memory consumption bug when using a
combination of modulative texture shadows, custom shadow receivers
and spotlights
- Fix bug in setShadowTextureSettings where the previous shadow pixel format settings would be used
- Remove fog-based distance fade of additive texture shadows since it can't work; clamp to border instead
- Fix problem in BillboardSet::setTextureCoords if params are 0,0
- Add compatibility with NVPerfHUD 4.0
- Add missing 'clear' methods to BillboardChain
- Add 'SceneManager::hasCamera', 'SceneManager::hasEntity' etc as requested in the forum
- XSI exporter: Fix a bug when submesh merging is enabled and
objects do not have the same geometry format (UV sets or vertex
colours) - would cause objects to be leaked and not exported
- CompositionPass should take & return a Material shared pointer by const reference instead of by value
- Ensure correct values are returned from SkeletonInstance::getName, getHandle, getGroup
- Update to latest Code::Blocks project format
- OpenGL fix for parentWindowHandle option under Windows
- Eye vector normalisation fix to the bump map w/ specular shader
- Fix XMLConverter crash with more than 65536 faces
- Ocean demo fixes & enhancements:
- reflection map can now be blurred by using bias to select mipmap level during cube map sampling
- fixed rotation matrix calc for tangent space to object
space transformation - Cg, HLSL, GLSL now produce the exact same
image
- allow wave amplitude to be much larger now that reflections work correctly on waves
- increased mesh resolution so that large waves aren't so jagged
- SDK setup enhancements:
- Wiki page link on finish page
- Add readme checkbox on finish page so readme.html is opened after SDK finishes install
- Fixed text crop problem on finish page
- Add shortcut link to relevant wiki page for SDK setup and usage
- Remove unimplemented FrameEvent method declarations from ParticleSystemManager, shouldn't be there
- Documentation fixes & tweaks
v1.2.0
[Dagon] (Final: 7 May 2006)
- Major Release
See the RC1/2 notes below for other changes and major new features in 1.2.0. This
release has the following changes & bugfixes over RC2:
- Add NV_occlusion_query fallback for cards without ARB_occlusion_query
- Fix a couple of bugs when combining pose and skeletal animation in a single model
- Add RTLD_GLOBAL when loading dynamic libs under Linux - solves problems with DRI drivers
- Compiler2Pass now includes exclusion support for character sets
- Compositor:
- Fix knot material when HDR compositor enabled under OpenGL, now looks the same as D3D
- Gaussian blur compositor added
- Widen CEGui text widgets in compositor demo to prevent name clipping
- Fixed the initialisation of the central sample offsets
for vertical blur, caused some artefacts in release mode sometimes
in HDR and gaussian blur
- Code::Blocks:
- STLPort import libs no longer required. DLL is linked directly
- Workaround a problem with STLport which caused filestream problems
- Project dependencies updated
- Removed unused defines - not using explicit dll exports for MinGW builds
- Fixed potential bug in FileSystemArchive::open - Open file stream should check ensure open succeeded
- Apply original fog settings to auto params even when fog
override is enabled, since if you want to disable fixed function
fog but implement fog in the shader you can't do it otherwise
- Recompile compositor if viewport colour / clear options
changed since last compiled, necessary for reliably picking up viewport
colours
- Shadows:
- Fixed a problem with using custom shadow caster / receiver materials and transparent objects
- Tweak validation of transparent renderables so that those
with more than one pass are only rendered once into shadow
textures and once for a receiver pass
- Don't hard code the avoidance of texture shadows in
compositor render queue listener, detect reentrancy more generally
- allows compositors to be used on texture shadows if required
- Soft shadow example added using gaussian blur compositor on shadow texture
- GLX:
- Closing windows and visibility
- Key repeat issues improved
- GLX Pointer Warp Fix
- Mouse Wheel support
- Clarify assert messages when trying to retrieve invalid software blend data
- Fixed Direct3D9 FSAA options that didn't refresh until selecting another a video mode
- Allow access to the internal inverse transforms in case
external apps were using the
removed _getBindingPoseInverseTransform
- Fixed memory leak of ManualObject when converted to Mesh
- Fixed issue of global new([])/delete([]) overridden when compiling in VS2005 with managed C++
- Fixed a couple of issues with the sizing / resizing of SDL surfaces
- XSI Exporter now builds successfully against the newer XSI 5.1 SDK
- Fixed a couple of multithreading issues fixed with shared pointers and resource groups
v1.2.0
[Dagon] (RC2: 17 April 2006)
- Major Release
See the RC1 notes below for the major new features in 1.2.0. This
release has the following changes & bugfixes over RC1:
- Compatibility with Cg 1.4 (particularly affects GL); also Visual C++ Dependencies updated to Cg 1.4.1
- Code::Blocks project updates
- Compositor demo expanded and improved; now uses CEGui to present
all the available compositors and includes lots of new ones including
Sharpen Edges, Old Movie, Posterise and HDR
- Fix attaching objects to bones
- Fix crash bug in OgreMeshUpgrade when using meshes with no vertex colour
- Bugfix for software skin blending with position/normal
shared buffer with blend position only. Also allow more flexible vertex
data layout.
- Fixed bug in default intersection scene query, incrementing wrong iterator in inner loop
- Fixed bug with hardware skinning on cards that don't support UBYTE4 (Geforce 3/4)
- Fonts completely switched to address a legal issue with distributing Tahoma; now using freeware Blue Highway throughout
- Fix crash problems with glPointParameters on some cards / drivers, especially ATI
- Added capability flag for point sprites and extended point
parameters; point rendering for billboardset now falls back on
non-point rendering if point sprites not available
- Throw exception if trying to attaching movable which already attached to scene node or bone.
- Added missing method Animation::_getVertexTrackList.
- Manual updates
- Make MaterialSerializer match the manual for texture element - allow all optional elements
- Fix segfaults when using an animation with no tracks
- Turn on RTTI for core projects for VC7.1 (already on for VC8)
- Fix shadow volume generation for ManualObject
- More graceful handling when trying to define high-level shaders
in a language not possible for the current rendersystem (GLSL on D3D,
HLSL on GL). You don't get lots of errors in the log anymore, and
technique fallback now works better.
- XSI exporter
- Fix vertex colour export
- Fix translation animation
- Automatically pad mesh bounds when animation takes skeleton outside the original bounds
- Milkshape exporter - fix a translation animation bug
- Fix an ambiguous method declaration on AnimableValue when using a non-const object; would pick the protected version and fail
- Remove old MSVC hash_compare override - this was only required
for VC6 and VC7.0 and is no longer relevant. Can cause problems if
users are relying on the default hash function.
- Fixed issues with buggy GL drivers claiming GL 1.5 compliance and not supporting ARB_vertex_buffer_object. F
- Fixed hardware occlusion support for GL render system
(should check GL 1.5 or ARB_occlusion_query instead of
NV_occlusion_query)
- Binary search optimization of keyframe searching, helps with very large animations.
- Allow different resource group names to be used when creating compositors from script. Was previously hard coded.
- Fix to SharedPtr with threading support enabled
- Calculating the bone matrices should combine scale as equivalent axes, no shearing
- Make MovableObject::_getParentNodeFullTransform return const reference of Matrix4 and avoid memory copy
- GLSL: Support arbitrary sized uniform arrays of vec4 like Cg and HLSL
- Dr_Bunsen_Head.jpg - texture was NPOT which was screwing up some ATI cards, fixed.
- Avoid divide by zero when setting fog auto gpu program parameter.
- Make 'original scene' compositor source pick up viewport background colours & clear options
- Bugfix for using wrong source in VertexData::reorganiseBuffers
- DataStream issues:
- Fixed read, get and skip line bug when line too long.
- readLine and skipLine now implemented in DataStream,
derived class doesn't need to override unless they have more
effective implementation.
- Use temp buffer in the stack instead of in the class.
- ConfigFile should open file in binary mode, since line
reading functions might seek backward, and seeking in text mode have
problem with CR/LF pairs.
v1.2.0
[Dagon] (RC1: 12 March 2006)
- Major Release
1.2.0 is a new major stable release, and therefore has literally
shedloads of new features. Some interfaces have also changed since the
1.0.x branch (Azathoth), for full information on porting your
application from the previous version of OGRE, see the Dagon Porting Notes in the OGRE Wiki.
- Compositing framework
- Full-screen post-processing effects made simple
- Easily render to multiple targets, potentially multiple times, and combine the results through shaders
- Chain multiple compositors together flexibly so post-processing results can be combined simply
- Scriptable through .compositor scripts so you can write less code
- Demo_Compositor shows you how to create compositors in code and through script
- Multiple Render Target (MRT) support
- Render to multiple targets simultaneously in the same rendering operation
- Perform advanced effects like deferred shading (demo included)
- Requires a card which supports MRT
- RenderTexture enhancements
- RenderTextures are now created like all other textures, with
TextureManager::getSingleton().createManual; you just need to set a usage parameter of
TU_RENDERTARGET
- Render to the faces of cube maps and to volume slices
- Retrieve the content of these sub-faces by accessing the
HardwarePixelBuffer like so:
tex->getBuffer(x,y)->getRenderTarget(z)
- RenderTarget::writeContentsToDisk now implemented for all RenderTextures
- D3D9: RenderTextures of compatible formats now share one DepthStencil surface to conserve memory
- GL: For faster and more flexible rendertextures use GL_EXT_framebuffer_object instead of pbuffers (if available)
- GL: PBuffers only used when rendertarget is smaller than frame buffer. If smaller, the framebuffer is used, as this is faster
- GL: PBuffers are shared between RenderTextures to conserve memory
- MovableObject changes
- All MovableObjects are now created through
MovableObjectFactory, and new factories can be registered by plugins.
Plugging in new object types generically is now simple
- SceneQueries can now exclude entire MovableObject types as well as individual objects
- Added MovableObject::setRenderingDistance which operates like
the same method of StaticGeometry, effectively limiting the view
distance of individual objects
- MovableObject::setVisibilityFlags controls the visibility of
objects based on a mask set in SceneManager::setVisibilityMask, in the
same way as SceneQuery works. This is yet another way for you to
control object visibility, and makes it simpler to turn categories of
object on / off quickly and efficiently
- The default values for MovableObject::setQueryFlags and
MovableObject::setVisibilityFlags on creation of the MovableObject are
now defined in the static methods MovableObject::setDefaultQueryFlags
and MovableObject::setDefaultVisibilityFlags. These defaults start out
at 0xFFFFFFFF to preserve previous behaviour.
- Billboard / particle enhancements
- Billboards can now be sorted individually relative to the
camera to provide correct transparency effects (also applies to
BillboardParticleRenderer, and a new 'sorted' attribute is available in
particle scripts)
- ParticleSystemRenderer can now describing their desired sort mode by override '_getSortMode'.
- Billboards can now have their own individual texture
coordinates to allow you to display subsets of a texture per billboard
(e.g. for billboard based text)
- Particles can now be kept in local space rather than world space
- Added two new billboard/particle type:
BBT_PERPENDICULAR_COMMON (perpendicular_common) and
BBT_PERPENDICULAR_SELF (perpendicular_self). BBT_PERPENDICULAR_COMMON
make the billboard plane perpendicular to a common direction, and
BBT_PERPENDICULAR_SELF make the billboard plane perpendicular to their
own direction. In other words, their facing to the given direction
instead of the camera. It's useful for an aureola around the player and
parallel to the ground etc. Both of them use an additional up-vector to
determine the billboard X and Y axis.
- Added billboard/particle rotation type setting, allowing you
to rotate vertices or rotate texture coordinates. Defaults to rotate
texture coordinates to preserve previous behavior. Use new
'billboard_rotation_type' attribute to set rotate type in particle
scripts when using BillboardParticleRenderer.
- Billboard particle renderer now supports setting the billboard origin in particle scripts via 'billboard_origin'.
- Particle system now allows the user to configure the sampling
interval, either fixed or based on frame-rate. Default based on
frame-rate to preserving previous behavior. Use
'ParticleSystem::setIterationInterval' to configure iteration interval
per particle system, or use
'ParticleSystem::setDefaultIterationInterval' to set the default
iteration interval for all ParticleSystem instances that don't have
their own setting. Available in script as 'iteration_interval'.
- ParticleSystem now supports a 'nonvisible update timeout'
which means that if a particle system is not visible from any camera
for the time specified, it will cease to update, saving the expense.
You can set the default for all systems without their own setting
through ParticleSystem::setDefaultNonvisibleUpdateTimeout, or set it
per system (through script as 'nonvisible_update_timeout').
- Each billboard can now have its own custom texture
coordinates instead of merely generated coordinates (which were either
the whole texture or grid set)
- Billboardset now supports an 'accurate facing' model so that
billoard orientation is calculated based on the relative positions of
the camera and each billboard, which is more accurate but slower than
the default method (which is to use the camera axes for all
billboards). This option is available through particle systems as
'accurate_facing true' too.
- BillboardChain and RibbonTrail classes allow you to do 'beam' effects like jet trails and lightning arcs
- SceneManager enhancements
- SceneManagers are now constructed from SceneManagerFactory instances, allowing more than one instance of the same type of SM
- SceneManagers must be constructed first using
Root::createSceneManager, and can be created based on a scene type mask
(a binary combination of requested types), or an explicit name
- Available SceneManager types can be iterated over using
Root::getSceneManagerMetaDataIterator, each with a type name,
description, scene type mask and world geometry support flag
- Using multiple simultaneous SceneManagers, of the same type or different types, is now safe
- SceneManager::setWorldGeometry now accepts a stream as input as well as a filename
- Material enhancements
- Techniques, passes, and Texture unit states can now be named
- Materials can now extend other materials, through the script
syntax 'material DerivedMaterial : BaseMaterial', to allow simple
refinement of existing materials
- matrix4x4, float4, float9, and float16 in material script now properly load matrices for use with GLSL shader unitforms
- New auto parameter binding 'pass_number'
- Serializer now writes out all shader bindings (for tools)
- Passes can now iterate an arbitrary number of times, either globally or per light
- New auto parameter binding 'pass_iteration_number'
- There is no limit on the number of frames for animated textures. There used to be a limit of 32.
- matrix4x4 in material script now uses same matrix element layout for Cg, HLSL, GLSL
- New TextureUnitState blending option, blend_diffuse_colour,
allows you to use the RGB luminence of vertex colours as an additional
blending parametric
- New texture addressing mode 'border' and texture unit
attribute 'tex_border_colour'. 'border' addressing mode will set to the
border colour when texture coordinates outside the range [0.0, 1.0].
- New gpu parameter 'render_target_flipping', allow adjust
position to accord with requires texture flipping when bypassed
standardise projection transform.
- New gpu parameters 'fog_colour' and 'fog_params', allow access fog parameters by gpu program if need.
- New pass attribute 'polygon_mode', allowing you to specify
solid, wireframe or point rendering on a per-pass basis (instead of
just an object basis as before)
- New feature 'material schemes' - every technique can be
allocated to a scheme ('scheme blah' in technique block), and viewports
can have a preferred scheme. This allows wholesale switching between
techniques per viewport, or just globally to do scalable effects, or
hdr paths etc
- new Ocean Demo added showing use of CEGUI manipulating programable shader parameters in realtime.
- New option on texture loading within texture_unit to load a
single-channel luminence texture into alpha, useful for fixed-function
alpha textures
- Animation enhancements
- Morph and Pose animation
- Animation of vertex positions in either hardware or software
- 'Morph' variant is similar to old-skool vertex keyframe
animation; this is recommended only for legacy applications (e.g.
MD2)
- 'Pose' variant is a modern, blendable pose based system
which allows you to perform much more sophisticated vertex animation
such as facial animation (using expression and mouth shape keys), and
can be combined with skeletal animation.
- Existing animation tracks are now just one type of track, ie NodeAnimationTrack
- New 'NumericAnimationTrack' allows the animation of any numeric value through the AnimableValue abstraction
- Significant number of optimisations means that animation is now faster than before
- Skinning blending enhancements.
- Larger skeletons are now possible with hardware skinning.
OGRE now only passes world matrices for the bones of a subentity
that are
actually used, saving shader constants if you split up your mesh,
should your skeleton get too large for the constraints of the target
shader model.
- Software skinning is now more efficient
- Temporary blended buffers are now held for a period of time
per entity before being released back to the pool, which allows better
frame coherency on these buffers
- software skinning is now done in object space,
with additional
special optimisations for frozen/disabled animation, so that
the software blended
vertex datacan be kept for as many frames as practical without
recalculating it (it will only get released when the entity has been
out of frame for some time)
- ManualObject added to make custom geometry creation more accessible
- Closely mirrors the GL immediate mode interface; create geometry using begin(); position(); normal(); texCoord(); end();
- Builds data into regular hardware buffers for performance
- Supports all types of shadows
- Can convert the result to Mesh if desired for instancing
- Node enhancements
- Node::Listener added so you can use Node::setListener to get callbacks when the transform changes
- Node::setInheritOrientation/getInheritOrientation added
allows configure the node whether it should inherit orientation from
it's parent node.
- Render queue enhancements
- Render queue groups can now be given an arbitrary uint8 identifier rather than just one of a fixed set of enums
- Custom render queue invocation sequence per viewport if required
- Allow suppression of shadow processing and render state changes during custom invocation
- Ordering / grouping of non-transparents can be changed per invocation
- Shadow enhancements
- New shadow type SHADOWTYPE_TEXTURE_ADDITIVE, allowing the
lighting accuracy of additive shadows with the GPU speed of texture
shadows
- You can now disable the rendering of shadows per viewport, to save time in mini-maps / RTTs etc
- ShadowListener interface added
- shadowTexturesUpdated allows you to hook into the time
when shadow textures have been rendered to, but before they are used.
You can use this to perform custom shadow behaviour such as filtering
- shadowTextureCasterPreViewProj and shadowTextureReceiverPreViewProj
fires before the view & projection matrices are set for the shadow
caster / receiver renders respectively; you can use these hooks to
provide a specialised camera setup if you want to define custom shadow
systems
- Texture shadow casting now fully supports alpha blended / alpha rejection materials
- Both stencil and texture additive shadow technique now fully supports alpha rejection shadow receiver.
- Texture shadow supports point light, used directional light
look at target mechanism and 120 degree FOV (similar spotlight)
behavior.
- Resource management enhancements
- Added a new predefined resource group called
ResourceGroupManager::INTERNAL_RESOURCE_GROUP_NAME ("Internal") for
dealing with resources created internally by the engine; you can now
safely unload the default resource group if you choose without
affecting these internal resources.
- Added a new meta resource group called
ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME ("Autodetect"); if
you use this group name, the real resource group is detected at
load time based on where the resource is found in the configured
resource locations. Entity now uses this method by default to load
meshes so you no longer have to preload meshes in custom resource
groups if you don't want to (although preloading is often a good idea
anyway for performance).
- Resource loading group fallback
- When a resource is not found in the requested resource group, look for it in the others based on resource locations
- The group ownership of resources changes when this happens
- This allows you to load a material from a custom group and have it load textures into a general resource group dynamically
- ResourceGroupManager::unloadUnreferencedResourcesInGroup now available to unload only resources which are not currently being used
- ResourceManager::unloadUnreferencedResources / ResourceManager::reloadUnreferencedResources now available to unload / reload only resources which are not currently being used
- Platform Manager enhancements
- Added Ogre::PlatformManager::messagePump(RenderWindow*) to the
platform manager - This moves the Win32 message pump from Ogre::Root to
the Win32Platform Manager, and the GLX platform messages to the GLX
Platform manager. On other platforms (Mac & SDL) this has no
effect. Call this method if not using startRendering (as startRendering
calls this everyloop for the default renderwindow) to pump messages
into Ogre while avoiding the OS pcific issues in your own code - allows
alt-tabbing, etc to work correctly.
- Timer stability on dual core systems
- GLX Platform only listens to Window X events when not using
Ogre input system - allows ability to plug in other input systems
easier, while not having to pump specific X events into Ogre manually.
- Added Viewport::setSkiesEnabled() to let users hide skies for
viewport individually, allow control skies displays or not more easy,
especially for using multiple viewports.
- D3D9 enhancements
- Triple buffering enabled when vsync is enabled
- GL enhancements
- Two sided stencil is always supported for GL 2.0 compliant drivers, even ATI
- Fast texture-to-texture blit, blitFromMemory, and hardware
accelerated bi/trilinear scaling using FBO. This improves loading time
in the common case that some textures need to be scaled to power-of-two
size.
- Implement Texture::copyToTexture for GL, which was already
implemented for DX9 (useful for longer term storage of graphics
rendered to a texture)
- Camera / Viewport Enhancements
- Cameras & Frustums can now have custom view and / or projection matrices if required
- Viewports now have a setting to say which buffers they clear if clearing is enabled (colour, depth, stencil)
-
Added off-axis perspective projection to Frustum and Camera.
Related functions: Frustum::setFrustumOffset,
Frustum::getFrustumOffset, Frustum::setFocalLength,
Frustum::getFocalLength.
- Added methods to access 'virtual' (reflected if need) or 'real' (unreflected always) world orientation/position of the camera.
- Added radix sorting routines to allow for faster sorting
- CEGUI renderer updated to v0.4.x
- Added IndexData::optimiseVertexCache to allow people to cache-optimise their triangle list indexes
- Added pulse width modulation option to WaveformControllerFunction
- Added Root::setFrameSmoothingPeriod() to let users customise smoothing of frame time fluctuations.
- Every render system config options are stored to configuration file.
- VC6 & VC7.0 (2002) support discontinued; officially supported Microsoft compilers are now VC7.1 (2003) and VC8 (2005)
- Direct3D7 support removed
v1.0.7
[Azathoth] (12 February 2006)
- Maintenance Release
- D3D9:
- Fixed device leak when destroying primary window manually rather than via shutdown()
- Potential D3D9 leaks during fatal error conditions fixed
- Fix potential leak when using DDS textures if premature shutdown encountered
- Fix another trailing state issue on device lost/restore, clear all texture units and vertex streams before resetting
- Don't create any mipmaps when building temp surface in blitToMemory
- Fixed a compile bug in double-precision mode
- Floating point texture support now correctly logged
- Fix vs_2_x/a, ps_2_x/a/b detection
- D3D7:
- Fix crash when D3D7 window is minimised
- GL:
- Fix potential performance problems with NPOT pbuffers
- Terrain plugin:
- Light list finding should be specialised for each terrain tile.
- LOD calculation should use minimum distance between terrain tile bounding box and camera position
- Throw exception when registering a page source for a type which is already present
- Nodes:
- Fixed
a bug in SceneNode::setDirection with a local natural facing of
something other than +/-Z, and when dealing with different spaces
- TagPoint should always reflect parent entity scale changes
- Fixed crash in SceneManager::destroySceneNode when using auto tracking
- Shadows:
- Fix rendering of texture shadows not respecting getShadowsEnabled() flag on queue group
- Alpha-blended materials can now cast texture shadows accurately
- Correctly render stencil shadows when oblique depth projection in use (use zfail all the time)
- Free up shadow textures immediately when texture shadows no longer in use to save video memory
- Materials:
- Fix incorrect output serialisation of 'modulate' and 'colour_blend' scene blend factors from memory to .material files
- Fix splitting of passes when too many texture units used
- Bugfix
for auto gpu program parameters:'view_direction', 'view_side_vector'
and 'view_up_vector' should be in world space. Also viewport size
params were using render target details instead of viewport
- Particles & billboards:
- Fix billboard orientation when using camera reflection
- AreaEmitter should have a different default 'up' to the default 'direction'
- Fix bug in particle scale affector - should scale from default dimensions in the first instance
- Workaround to avoid std::iostream memory leaks in VC8 (MS bug - until VC8 SP1 arrives)
- Fix Font::StrBBox for strings containing spaces
- Memory manager tweaks to improve shutdown performance when using large containers in debug
- Quaternion now outputs to stream with same element ordering as constructor
- Accessor methods added to retrieve current sky settings on SceneManager
- Add automatic fallback for Vector3.getRotationTo if 180 degree rotation is requested
- Cleaner
Implementation of occlusion query delete mechanism. Added
destroyHardwareOcclusionQuery and made RenderSystem clean up any
remaining queries at shutdown just like RenderTarget
- Eliminate
potential temp blended buffer checkout bug: occuring when call
TempBlendedBufferInfo::checkoutTempCopies more than once in same frame.
- Fixed rendersystems setClipPlanes sending of user clip plane equations to device (d was inverted)
- Fix bug in edge list builder when indexStart is used
- Fix bug where Math::ASin returned the wrong value for +1.0 and -1.0
- Fix bug in border panel; uvs for centre panel should be updated at the same time as the border
- XSI exporter significant speed improvements and better progress reporting
- Timer more consistent after performance counter hiccups, and will run continuously over the 49.7 days boundary
- Move zziplib headers so external apps are no longer dependent
- Update controllers before updating scene animations in case users use controllers to manipulate scene animation
- Avoid multi-results of same object from OctreePlaneBoundedVolumeListSceneQuery
- Default
mMaterialName as well as mpMaterial in SubEntity so they are consistent
(issue with StaticGeometry if no material set)
- Fix infinite loop when RenderQueueListener tried to skip a queue
- Fix crash when creating / destroying Root more than once
- 3D Studio Max exporter now supports Max 8
- New barrel and palette models added
- Many compiler warnings squashed
- Documentation clarifications
v1.0.6
[Azathoth] (20 November 2005)
- Maintenance Release
- Visual C++
2005 now supported, use Ogre_vc8.sln
- XSI Exporter
- XSI v5 now supported (in addition to v4.0 and 4.2)
- Material exporter now picks up custom texture
transforms correctly
- Fix for using multiple clusters with envelopes (bone
assignment groups) spanning them.
- Don't export empty submeshes (caused by starting with
polys which are later all reallocated to clusters)
- D3D9 fixes:
- Render window writeContentsToFile method speeded up +
some bugfixes
- Avoid a memory leak when GPU programs fail to load
- Fix potential surface leak when destroying a secondary window but not the device
- GL fixes:
- Don't change GL context while creating a new render
window if current context is available
- Share lists between render window GL contexts
- Fixed incorrect loaded state when creating a manual
texture in GL
- Fixed many gcc warnings on GL atifs compiler
- Type correction for external / parent handles in GLX platform & doc corrections
- D3D7 fixes:
- Fixed Dx7 device lost problems, switching from
fullscreen to windowed and back now works in Dx7 too.
- Fix oblique projection on D3D7 (fix bad clipping on
render to texture demo)
- Mesh / Entity
fixes:
- XML format DTD
- Range of texture_coords attribute should be 0 to 8
not 0 to 7
- 3D texture coordinates should be considered valid in
DTD
- Mesh::getSubMesh now safely checks for an index out of
bounds condition.
- Unload mesh should clear bone assignments and removes
reference to skeleton
- Added method to access manual levels of detail for the
entity. Allow user more control to the lod level (e.g. change material,
attach objects).
- Hardware
vertex buffer pool fixes:
- TempBlendedBufferInfo destructor needs to make sure
allocated buffer copies have been released - this bug showed up when
entities using software skinned skeletal animation were removed from
the scenemanager during rendering prior to frame ended finishing
- Buffer manager must make sure that no buffer copies or
free temp vertex buffers exist that are associated with a vertex buffer
that is being deleted
- Logging
changes:
- Silently tolerate not having any log files to write to,
so people can run logless if they really want.
- Allow suppression of file output on Log to allow a
LogListener-only setup
- Shader fixes:
- Correct number of constants supported by ps_1_x
- Fix ps_2_x detection; report as ps_2_a/b but assembler
syntax is still called ps_2_x
- Fixed
memory/resource leak of high-level GPU program in the case qhere the
high-level portion is loaded, but the low-level GPU program itself
never loaded
- Shadow fixes:
- Fix missing shadow volume extrude program parameters
when shadow volume materials initialised somewhere else
- Resolve an issue when find shadow casters for light,
and the light is attached to scene node. Should use derived light
position/direction to query for shadow casters
- Material fixes:
- Ensure that custom texture transforms are serialised /
deserialised into .material scripts
- When
material recompile required, need to unload whole content of material,
avoid leak because some TUS animation/effect controllers maybe created.
- Fix cloning problems when using the ACT_TIME auto
parameter
- Texture fixes:
- TextureManager loadImage/loadRawData
should be create texture as manual texture without loader, in fact the
texture can't auto reload again.
- Enable/disable 32-bit textures now work properly even
if no texture exists, and only reloads the loaded and reloadable
textures.
- You
can now access the original dimensions of the texture image even if the
final texture dimensions (due to hardware requirements) are different
- Dependencies
updated
- zzliplib is now 0.13.44 (this fixes a memory leak when
reloading resources from a zip file)
- CEGui remains at 0.3.x since 0.4.x requires potential
changes to custom looks, users are free to upgrade themselves (but will
need the source release, not the SDK)
- Particle
systems:
- Delay loading of image on ColourImage particle affector
to avoid startup overhead, and deal with more formats instead of
assuming pixel format
- Should check for duplicates before creating/adding new
particle system templates, otherwise leakage
- Disable gcc version script which causes problems in gcc
v4.x
- Add the ability to raise and listen in on
RenderSystem-specific
events (allows people to listen in on device lost / restore if they
choose to)
- Fix comparison bug in HardwarePixelBuffer::blit which would
cause it to scale unnecessarily
- Solve crash when ray scene query is done without landscape
loaded in TerrainSceneManager
- Open data streams one at a time while parsing scripts to
avoid opening a lot of disk files simultaneously that may exceed file
handle limits
- Allow archives to be unloaded
- Fixed destroying track which maybe absent, just ignore it
when this situation happens
- Fix merging of CEGui flags in Linux build
- Don't allow double-load of plugins
- Gracefully deal with invalid requests to use the same
SceneNode name more than once
- RenderTarget::writeContentsToTimestampedFile now writes out
the date/time in correct human readable format
- Fix for "unknown property."scale" in $Biped_Object" error
in 3DSMax exporter
- OverlayElement parent overlay initialisation fixed
- Several documentation corrections
v1.0.5
[Azathoth] (25 September
2005) - Maintenance Release
-
D3D9:
-
Fixed device lost
issue with manual textures with manual loaders.
-
Ensure that
textures which were unloaded at the time of the device lost remain
unloaded after the device is restored (previously these textures would
be loaded by the restore)
-
Fix restoration of
specified number of mipmaps after device restore
-
Fix mipmap issue
introduced in 1.0.4 with textures whose dimensions are not power of two
-
GL:
-
context switching
should be preserving GPU programs and depth/colour mask settings,
because scene manager treat render system as ONE 'context' ONLY.
-
'Warning texture'
now bound to a texture unit if it is used but not defined, e.g. in a
shader but the material definition does not include a corresponding
texture unit
-
Fix a flipping
issue when a viewport doesn't take up the whole of a render texture
-
XSI Exporter:
-
Fix memory leak on
software skinning
-
Material: compile
illumination passes on demand
-
BillboardSet: Optimise
updating of bounds when creating a new billboard
-
Win32 platform fix:
DInput buffer overflows resolved
-
StaticGeometry::addSceneNode
should cascade as documented
-
Ensure
HardwareBufferLicensee::licenseExpired is called in all cases
-
GLXWindow::resize fixed
-
Fix potential memory
leak during overlay creation
-
Alter bump mapping /
offset mapping shaders to handle directional lights as well
-
Fix a range issue on
the specular bump mapping shader, looks nicer now
-
Fix memory leaks when
using StaticGeometry & stencil shadows
-
Fix TextureUnitState
clone bug: _load called after after TUS is cloned so that effect and
animation controllers are constructed. Also reduced _dirtyhash() calls
while cloning TUS
-
Fix off-by-one bug in
parseAlphaOpEx when using manual blend
-
Fix potential
transparencybug: passes can be transparent even if destination blend
factor is zero, if source factor is destination-based
-
Node: Assert that a
node is parent-less before adding it in addChild, avoids inconsistency
issues
-
Support conversion from
and to PF_FLOATxx_R pixel format
-
Fix segfault in
OgreXMLConverter when built with GCC 4.0
-
Fix big endian
compilation bug in CEGuiTexture (affects Linux on PPC and OSX)
-
Some API and manual
clarifications, including:
-
Finally add section
on hardware pixel buffers
-
now includes
minimum ATI/nVidia card specifications for shaders of a given profile
-
Remove / correct old GUI manual pages
v1.0.4
[Azathoth] (21 August 2005) -
Maintenance Release
-
Fix texture shadows
when using basic SceneManager (not octree or bsp)
-
Fix memory leaks in
Demo_Water and Demo_VolumeTex
-
Add isStillOutstanding
method to hardware occlusion queries to promote more asynchronous
behaviour
-
Fix a couple of squared
distance comparison bugs
-
Fix
OverlayElement::updateTextureGeometry being called repetitively
-
D3D
_makePerspectiveMatrix fix (left/top/right/bottom version)
-
Demo_VolumeTex material
loading bug fixed
-
Fixed accumulated
discrepancy in animation track optimise
-
Bugfix to
SceneQuery::removeQueryFlags
-
Node destruction now
cleaner
-
Add ability to force
software skinning to Entity
-
D3D texture bugfixes
-
We need to check
the corrected pixel format before determining hardware
dynamic/auto-mipmap texture support
-
The D3D render
system texture auto mipmap generation should respect the TU_AUTOMIPMAP
usage
-
Should check the
ability to use dyncamic textures in volume and cube maps before
enabling the flag
-
Fix remaining device
restore problems with manual (e.g. dynamic) textures, RTTs that are
never used, and colour state after restore
-
Material bug - fixup
best techniques container when material copied
-
Fix depth bias in D3D9
on nVidia to be more reliable
-
Fix iterator
invalidation problem in SceneNode::removeAndDestroyChildren
-
Quaternion::equals now
takes negated quaternion into account, may define the same rotation
-
XML Converter issues
fixed:
-
Fixed water demo crash
if ESC pressed at config screen
-
Fixed Viewport/Camera
auto aspect ratio bug - use floating point division, not integer
-
getRenderTargetIterator
added to RenderSystem to allow external parsing of current targets
-
Clamp projected texture
in Demo_RenderToTexture to avoid artefacts on some cards
-
TagPoint was not
inheriting parent entity scale meaning attached object didn't scale
with their parents; now they do
-
Several small
documentation corrections
-
Fixed off-by-one bug in
SimpleSpline & RotationSpline which caused incorrect
interpolation over loop
-
Resource group
initialised flag is now reset when clearing, allowing scripts to be
re-read
-
Hardware skinning
example shaders now handle directional as well as point lights
-
Fixed CEGuiTexture so
it frees shared pointer whether it deleted shared texture or not
-
Fixed bug in
EventProcessor shutdown: wasn't removing its registered frame listener
which causes a seg fault if rendering continues
-
Infinite loop bug fixed
in Matrix3::QLAlgorithm
-
Small compatibility
fixes for VS2005
-
Context switching
problem in GL Render system (GLX) solved
-
Some const correctness and other tidying exercises
v1.0.3
[Azathoth] (10 July 2005) -
Maintenance Release
-
Fixed a problem in D3D9
where GeForce 6x00 range was not enabling infinite projection
-
libOgreMain.so now only
exports symbols based on ogremain.map
-
Fixed --enable-openexr
argument for ./configure
-
XSI exporter - don't
crash if textures are not found, just warn instead. Also trap
cases where too many texture coordinate sets are used and warn.
-
Last of D3D9 leaks
removed
-
Extra logging for D3D9
device lost / restore process
-
Fix device restore of
RTT in D3D9
-
Replace SDL hard-coded
constant args for SDL_ShowMouse
-
Make
RenderWindow::windowMovedOrResized virtual & generalised from
GL/D3D since they're useful for people with externally managed windows
-
Corrected type of the
returned value from std::string::find_first_of and find_first_not_of
-
Allow external setting
of BillboardSet bounds for billboard injection
-
Q3A level loader -
reject lightmap indexes < 0, not just -1, for greater level
compatibility
-
Export TagPoint to
allow post attach-to-bone modifications
-
Set ambient light
settings per _renderScene call incase we switch contexts in GL
-
gcc 4.0 compatibility
and removed the need for GCC_3_1 compiler flag
-
In GL, support the
GL_MAX_TEXTURE_IMAGE_UNITS_ARB number of texture units when using
shader hardware instead of just GL_MAX_TEXTURE_UNITS
-
Fix attaching particle
systems to bones
-
Implemented vp30, vp40,
fp30 and fp40 Cg profiles
-
Fixed a 64 bit issue in
Serializer::flipEndian
-
Add conversion from
GpuProgramPtr to HighLevelGpuProgramPtr, and fix mutex usage on
existing reverse conversion
-
CEGUI v0.3.0 now
required
-
Fix memory leak in
ZipDataStream
-
Fix to
AnimationTrack::optimise - we should not eliminate all duplicate keys
since the boundary values are required to preserve the interpolation
shape. In fact, we need to preserve sequences of up to no more than 4
identical keys to preserve tangents for if spline interpolation is
used. Any inner ones are removed.
-
Matrix4::operator !=
should take a const reference parameter
-
Node::removeAllChildren
should notify those children of detachment and clear the child update
list too.
-
Fix a bug in
StringUtil::match where a partial match after a wildcard goes wrong and
the wildcard doesn't correctly consume it ready for later matches
-
Fixed some variable
shadowing warnings in gcc
-
Don't try to prep
subentities for shadow volumes if they don't have their own geometry
-
Fixed
DataStream::readLine returning incorrect count and not dealing with
reading exactly the max length properly
-
Fixed
TerrainSceneManager incorrectly calculating normals
-
VertexData::vertexStart
bugfix for GL render system
-
Fix small inconsistency
in near / far clip plane in world space between rendersystems
-
A few win32 resize /
getMetrics fixes
-
Allocate initial
particle pools on demand to save memory
-
3DSMax exporter -
support mirrored bones
-
Fix memory leak in Bsp
Collision demo
-
Correct GLX
initialisation issue
-
Objects which are
attached to bones are now properly picked up by scene queries and cast
shadows properly
-
Fixed carrying forward
of manual loader through Material::applyDefaults
-
A few other miscellaneous safety checks
v1.0.2
[Azathoth] (30 May 2005) -
Maintenance Release
-
Mesh::buildTangentVectors
now deals with 32-bit indexes
-
Re-introduce commented
out degenerate face test in progressive mesh, adds quality at very low
LOD levels
-
Multisampling in GLX
corrected
-
Documentation fixes
-
A few state
optimisations in the rendersystem
-
Removed calls to srand
in Math - user might want to control random number seeding
-
Addition of a few minor
'getter' methods and const-correctness
-
Matrix4 * Plane should
use inverse transpose to transform plane normal to deal with
non-uniform scale.
-
GL: throw an exception
when we failed to properly initialise a texture, instead of a devide by
zero
-
Fix for skeleton
serializer (showed up in XSI testing) - don't assume every bone has a
track.
-
VC7.1 +
OGRE_DOUBLE_PRECISION fix
-
Fix bug in
getSquaredViewDepth in WireBoundingBox
-
Added useful fuzzy
comparison methods to Vector3 / Quaternion
-
Add animation
optimisation methods to eliminate tracks which do nothing and duplicate
keyframes (used by default in XML converter)
-
Include
quake3settings.cfg in SDK distribution
-
Minor particle fixes
-
Allow Renderable to
determine whether it can be overridden by camera as to the detail level
it renders at. Allows us to view the whole scene in wireframe but keep
the overlays solid by default.
-
Bugfix - when
bulk-loading resources, unsupported high-level and assembler programs
end up getting loaded since they are part of the declared resources in
the group
-
Fix resource counting
bug on bulk loading
-
GLX backdrop image now
embedded
-
StringConverter::parseUnsignedInt
fixed for boundary numbers
-
Fixed OgreGLTexture and
compressed textures delete [] mismatch
-
Timer - compensate for
QueryPerformanceCounter hiccups on some chipsets
-
MeshUpgrader should set
mesh padding factor to nothing to avoid adding extra padding
-
Material - restore
manual loader and manual flag after applying defaults
-
Fixed
Node::getPitch/getRoll/getYaw
-
Implement
ParentWindowHandle for GLX - Disable FSAA for now, it's heavily
unstable for NVidia
-
Don't try to log
exception when no LogManager exists yet
-
Allow skeletons to
share animations with other skeletons (requires strict skeletal
structure matching) Supports a scale option to adapt animation to
matching skeletons with different sizes
-
D3D9 window resizing
issues resolved
-
Properly support
downgrading to 16-bit textures again via
TextureManager::getSingleton().enable32BitTextures(false)
-
Small bugfix for
TerrainSceneManager (texture coords wrapped at 1 vertex too high)
-
Some MingW and some
Linux distribution (e.g. Gentoo) build fixes
-
Fix multi-pass
precision issue on nVidia when using GL
-
Fixed Dynlib* deleted 2
times when unloading plugins manually
-
Fixed BSP plugin
creating materials in wrong group
-
Fixed unitialised
member mQueuedForDeletion in Pass
-
Gui demo control name
strings fixed
-
ResourceManager::load
methods (and derivatives) now reload an existing Resource which is
already present, but has been manually unloaded
-
Fixes Linux boost
linking issue when --enable-threading used. Modified slightly
to check for the existence of the library during ./configure.
-
Linux - disabled RTTI
and disabled the ability to use undefined symbols in plugin object
files.
-
Fix ordering of
directional lights in GPU programs to be consistent
-
Fix reloading of
high-level programs
-
Don't do anything in
SharedPtr::setNull if already null, avoids issues with shared mutex for
null shared pointers.
-
PanelOverlayElement can now live with materials which have
no texture units.
v1.0.1
[Azathoth] (10 April 2005) -
Maintenance Release
-
Support for Cg 1.3
-
ConfigFile no longer
crashes on empty parameter values
-
Fix crash when using
sharing skeleton instance between entities
-
Shutdown primary
rendertarget last, fix for crash on ATI OpenGL shutdown when using
multiple targets.
-
Fixed shutdown bug when
exiting in frameEnded and using software skinned entities
-
Fixed shutdown bug when
using a Cg-based custom material in TerrainSceneManager
-
Tolerate not having
loaded a texture to allow people making editors to apply materials
which have missing resources.
-
Fixed the case of
vertex_program in OgreGLGpuProgramManager.cpp
-
Modified
--with-platform=GLX to look for X11 headers.
-
Fix display corruption
on DDS with custom mipmaps via DevIL (ie GL); the custom mipmaps are
not loaded yet so just ignore them. D3D9 unaffected.
-
Fix bug when using
colour_op_ex and alpha_op_ex to supply manual colour and alpha at the
same time in the same texture unit
-
Don't define *any*
memory macros if the user doesn't want them or we are in release mode
-
Add CEGUI-OGRE.pc.in
back into the CEGUIRenderer.
-
Fix bufferering area
contention in Zip
-
Fixed particle system
so custom render queue id is properly passed through to renderer
-
Deal with zero-volume
meshes in StaticGeometry
-
Actually use the left
and right flags in StringUtil::trim
-
cppunit m4 fix needed
for some autotools versions
-
Add
Exception::getDescription so that it is possible to get the
'description' field of the exception without the rest. This is useful
for printing or logging errors compactly.
-
Make
SceneManager::setSkyBox, setSkyPlane and setSkyDome only set their
respective enabled flags at the end of the function. This makes sure
that when an exception happens the renderloop will not crash in its
next iteration.
-
Added missing
OgreParticleSystemRenderer.h to OgreMain/include/Makefile.am
-
Fixed sysrq key for GLX
-
Fixed GLX screenshot
colours
-
Fixed material
exporting in Milkshape
-
Back buffer resizing,
dedicated depth stencil and lost device / destruction fixes for
additional swap chains under Direct3D9
-
Added many new shader
auto parameters; includes support for equivalents of many RenderMonkey
parameter bindings
-
Allow usage of external
input system (GGI, SDL) with GLX
-
Fixed display of self-
or common-oriented billboards that are attached to a rotated node
-
Fix for CEGUI renderer
under latest Linux nVidia drivers; also increases performance of CEGUI
rendering
-
XSI mesh and skeletal
animation exporter
-
Added a missing
vertexbuffer unlock in MeshSerializerImpl::writeGeometry.
-
Add explicitly named
methods to ConfigFile to resolve ambiguity when using defaulted
paramters
-
Minor documentation
updates
-
Hardware occlusion
support fixes
-
Clean up some support
for D3D9 buffer lock options
-
Fixed modifiers getting
lost on mouseup
-
Frame / input event
Listener removal now doesn't invalidate iterators anymore
-
Fixed
ResourceManager::resourceExists bug which caused it to return true when
the resource didn't exist.
-
Initialise
mAnimController in the TextureUnitState copy contructor.
-
Fixed a problem which
caused SkeletonInstance::unloadImpl() not to be called on destruction.
-
Remove StringConverter
downcast warnings from MSVC
-
Fixed a memory leak in
BspSceneManager when loading multiple maps
-
Custom DDS mipmaps now
work in GL as well as D3D
-
scene_blend now works
after D3D9 lost device recovery
-
Potential D3D9 blending
state optimisation on some cards
-
Fixed loading of
axes.mesh when displaying debug skeletons
-
Specular highlights now
look the same in GL as D3D9, and secondary vertex colour now works
correctly in GL
-
Code::Blocks support
and projects added
-
Invisible lights are
now properly excluded from shadow calculations
-
FSAA support in Win32 OpenGL
v1.0.0 Final
[Azathoth] (21 February
2005) - Major Release
The final 1.0.0 release includes a set of
bugfixes to
the original release candidate, and will also see the first emergence
of a precompiled SDK for OGRE. Again, if you are upgrading from
Hastur (0.15.x) please read the Azathoth
Porting Notes Wiki Page.
Bugfixes & changes since RC1:
-
Fixed
a couple of memory leaks and a buffer overrun in StaticGeometry
-
API
doc introduction page added
-
Fixed
version numbers in Linux build system
-
ResourceGroupManager
iterator bugs and memory leak on removing groups fixed
-
Vsync
option was not being passed correctly in D3D rendersystems
-
Add
external access to software blend data in Entity
-
Fix
DynLib .so appending issue on Linux
-
Depth
bias fixed on D3D9 and GL
-
Fixed
problem with particle systems in some fullscreen modes
-
Convert
paletted images to RGBA automatically
-
Fix
a skeleton issue when unloading & reloading resources
-
Disable
fog when rendering shadow textures
-
Allow
users to configure custom texture shadows; change caster &
receiver material and texture format
-
Fix
a shutdown problem when external apps linked directly to octree plugin
-
OgreGuiRenderer
project moved from CEGUI source repository to Ogre repository to
simplify dependencies
-
Be
tolerant of externally created LogManager instances
-
Fix
crash on invalid DXTx surface sizes
-
Image
based fonts fixed
-
API
documentation content and style updates
-
Update
version of image scaling routines
-
Fix
a bug with the translation of scene_blend modulate
v1.0.0 RC1
[Azathoth] (5 February
2005) - Major Release
1.0.0 is a big release, and due to us wanting to freeze
interfaces
at the best possible level for 1.0.0 there are more interface
breaking changes in 1.0.0 than is typical for previous releases. For
the full lowdown on upgrading your code from Hastur (0.15.x) to
Azathoth (1.0.x) , please see the Azathoth
Porting Notes Wiki Page.
Enhancements and new Features:
-
Resource System
Overhaul:
-
Resources now
addressed through shared pointers
-
Resource groups can
now be defined so that you can load and unload resources in groups, and
also set up group-specific search paths and scripting tasks.
-
Manual resource
provision formalised; there is now a ManualLoader class that should be
implemented when creating resources in code; this allows resource
reloads to be possible in all cases
-
Streaming support -
data is now accessed from Ogre's virtual file system solely through the
DataStream class (and subclasses), meaning that accessing very large
files efficiently is now possible while still using the resource
system.
-
Loading progress
reports; you can now register ResourceGroupListeners in order to
implement loading bars
-
Thread safety -
steps have been taked to make the resource system thread-safe to allow
background loading. This feature is experimental and should only be
used by experienced users.
-
Hardware Pixel Buffers
& Image enhancements:
-
Direct access to
read / write to texture surfaces through the HardwarePixelBuffer class,
including mip levels, cube surfaces and volume slices
-
Pixel formats have
been extended, are now unambiguous across endianness, having separate
'native' endian formats and per-byte formats
-
Support for
floating-point pixel formats, luminence formats, depth formats, and
compressed formats
-
Image class has
been tidied and enhanced to support composite images (like cube maps)
-
PixelUtil class now
provides access to all pixel format conversion functions, with
optimised templated conversion routines available in capable compilers
-
High Dynamic Range
(HDR) rendering support:
-
Particle System
enhancements: Particle systems are no longer limited to rendering with
billboards, they render through instances of ParticleSystemRenderer
subclasses, which can be implemented in plugins and added at runtime.
Use of these alternative renderers is scriptable and can be used to
implement alternative particle types like ribbons.
-
GUI changes:
-
The OGRE internal
GUI has been replaced with Crazy
Eddie's GUI, a superior GUI system which follows the same
kind of design principles as Ogre itself (portable, clean OO code).
-
Non-interactive
overlays remain within OGRE itself, the classes have been renamed
*OverlayElement instead of *GuiElement to reflect their role
-
Material changes:
-
alpha_rejection has
been moved from the texture_unit to the pass
-
Linking vertex
colours to material attributes; you can now link vertex colours to any
of the diffuse, specular, emissive or ambient material attribures,
(e.g. 'ambient vertexcolour') rather than the linkage being implicit.
-
You can now define
the number of mipmaps to be generated when loading a texture in the
material script, from '0' to 'unlimited'
-
New StaticGeometry
class allows you to batch up individual meshes and render thousands of
them far more efficiently than if they were separate movable objects
-
GL now supports render
textures larger than the frame buffer (through pbuffers)
-
D3D9 uses best possible
filter method supported by hardware for generating Mipmaps, this can
improve display quality especially when using trilinear filtering
-
Support all image types
that DevIL can load: bmp, gif, hdr, ico, jpeg, pnm, mng and many more
-
GLX, SDL, D3D9:
FSAA(Full Scene AntiAliasing) support improved
-
Image codecs are now
completely replaceable, if you wish to remove the use of DevIL
-
Better support for 3D
and compressed textures
-
New and improved demos:
-
'DynTex' shows how
to procedurally generate textures using the new pixel buffer API
-
'VolumeTex'
demonstrates volume rendering and procedurally generated meshes and 3D
textures
-
'Grass'
demonstrates the use of the new StaticGeometry class to batch up lots
of individual meshes
-
'Gui' has been
updated to use Crazy Eddies GUI.
-
Interface to
RenderSystem::createWindow and RenderSystem::createRenderTexture
cleaned up and made more flexible
-
Support Athlon 64 in
native 64-bit mode (Linux)
-
Support running the
OGRE core in double precision floating point mode through the use of
OGRE_DOUBLE_PRECISION
-
Add 'inverse transform'
automatic shader parameter bindings
-
MinGW/Cygwin build
system using auto* tools included
-
Visual C++ 2005 Beta support
Bugfixes:
-
Fixed texture_view_proj
shader parameter binding
-
Terrain now supports
texture shadows
-
Fixed 4-weight hardware
skinning vertex shader
-
Fixed possible texture
frame overflow in animated texture controller
-
GLX: alt-tab now allows mouse to escape window