
v1.6.4 [Shoggoth] (27 Sept 2009) - Maintenance Release
- DirectX:
- Fix texture samplers over #8 becoming blank after a device restore
- Compatibility with August 09 DirectX SDK: dxerr9->dxerr in all cases (works for older versions too)
- OpenGL:
- Fix 'invalid enumerant' problem (this time for good) on some cards in GL
- When locking a sub-area of a pixel buffer, we must remember the original lock area and not just the PixelBox that is returned (which is rebased).
Upload should only upload the area which was locked.
- Fix a 'new' call that should have been OGRE_NEW in GLSLProgram.
- Fix a problem in GL when using HardwarePixelBuffer::blit - it wasn't disabling higher texture units which could cause some incorrect results in the FBO rendered version
- Root::removeFrameListener would queue up removal even if the listener wasn't in the list yet, which could mean if you added it again it would get removed. Now it doesn't queue the removal if the entry isn't in the listener list already.
- Use PixelUtil::packColour instead of memset to initialise the contents of a null shadow texture. This bug could result in different results on nvidia / ati cards if this texture was floating-point
- Fix BillboardParticleRenderer calling detachobject() incorrectly.
- Fix OgreOSXCocoaView causing application crash if you save the window attributes to the preferences
- Fix leftover texture sampler settings above fixed-function units when switching between shaders using 9+ samplers and fixed-function techniques
- Fixed some edge-case issues with Resource loading and preparing in multiple threads.
- Make it unnecessary for the parent directory to be in the search path for platform-specific subfolder includes
- Correctly trap errors in FreeImage_AllocateT
- Rearrange CEGUI files to be friendly to layout editor
- Fix a crash in CompositorChain when incorrectly given a null camera
- Fix a small memory leak in Pass when shaders were used
- Thread safety for StringInterface
- Fix scene_depth_range and shadow_scene_depth_range when using LiSPSM or other ShadowCameraSetup classes that use custom matrices and don't use a 'real' camera position
- Revert revision 8591, "Early-out optimisations to setMaterialName methods, to reduce their cost if the same material name is used"
This actually causes problems with applications that delete & recreate materials with the same name, such as Hikari. Of course, it would be better for those apps to regenerate the material in-place instead of creating a new one but since this was breaking behaviour it needs to be undone in the stable release.
- Fix edge list memory leak in Mesh if more than one SubMesh had non-triangle geometry
- FileHandleDataStream: Don't pass 0 to fclose.
- ZipDataStream: Don't double-close zip files.
- Fix a bug in RibbonTrail; you couldn't extend the number of chains from the amount that were initially created without problems, the ordering of the elements in mFreeChains was not consistent.
-
v1.6.3 [Shoggoth] (25 July 2009) - Maintenance Release
- OS X
- Fixed skewed screenshots on OS X for windows with odd width
- FreeImage 3.9 - 3.11.0 interoperability fix; detect when FreeImage uses big-endian even on Intel Macs & use the data correctly
- Fix uninitialised mFullScreen in Cocoa window, and expose WINDOW and VIEW custom params as with Carbon
- OpenGL
- GLSL: gracefully handle a link error during binding of parameters, so that we do not abort the render
- OpenGL pixel buffer: download the buffer when lock mode is anything but HBL_DISCARD, and ignore whether the buffer was created as WRITE_ONLY. For consistency with other rendersystems, WRITE_ONLY should only be a hint, and should not prevent the user reading the contents if they choose to. Previously the read buffer would always contain garbage on GL unless you removed the WRITE_ONLY, which was easy to miss because TU_DEFAULT includes it.
- Prevent deletion of an external GL context when using currentGLContext.
- GLSLLinkProgram::activate should not access the vertex program (for attribute mapping) without checking it exists.
- Fixed parentWindowHandle usage for GLX
- Disabling hardware mipmap generation on ATI/Linux as reported faulty
- Enable/disable GL_VERTEX_PROGRAM_POINT_SIZE for point size attenuation when vertex programs available
- Workaround for broken hardware mipmap generation on Intel 915G's (at least - for the moment disable for all Intel chipsets)
- Identify SiS chipsets and apply same GL automip workaround as for Intel chipsets
- Direct3D
- Fix an edge-case in D3D9 where if _canDynamicTextures returned false, the default pool would still be used even though D3DUSAGE_DYNAMIC wasn't specified, which doesn't allow locking. If D3DUSAGE_DYNAMIC could not be specified, then use the managed pool in all cases.
- Safety check before rebinding D3D9 textures after a device restore where user has destroyed render target but not texture.
- D3D9 render texture classes had the wrong update() signature so were not protecting against device lost conditions
- Visual Studio
- Fix for Runtime Check Failures with VC 2003 SP1 with alpha_op_ex
- Allow OGRE to build with VC 2010, use TR1
- Added missing OgreShadowCameraSetupPSSM.h/.cpp in VC 2003 project file
- ILImageCodec segfault fix (for those who choose to use it)
- Fix calculation of bounding radius from AABB in some places
- Fix McGuire style dark cap incompatible with multiple edge groups (stencil shadows)
- Make getCameraPosition, getCameraPositionObjectSpace and LOD camera equivalents consistent with other parameters when using camera relative rendering
- Fix dark cap clipping in stencil shadows in a few edge case conditions
- Fix the use of 2 scene managers with different settings on finite / infinite stencil shadow extrusion
- Fix Light::_getFrustumClipVolumes(...) numerical instability if infinite camera's far clip plane is used, causing light flickering if light is near camera's side frustum plane.
- Should propagate material scheme from primary viewport to shadow viewports so that caster/receiver materials are consistent with materials chosen for main view
- SceneManager should restore mCurrentViewport after rendering the shadow textures
- ConvexBody: only process finite AABBs (ignore null & infinite)
- Fix AABB when using BillboardSet with world coordinates and a transformed parent node
- Fix 2 typos in scripts where vertex_program should be fragment_program
- Fixed a few warnings
Fix problems with gui sample files schema validation when using Xerces
Fix to fog_override parsing when using options other than 'none'
- GpuProgramUsage::setProgramName - check the type of the program assigned matches the type of usage it's assigned to (make copy/paste errors in scripts easier to diagnose)
- Don't pull the AABB out of an unloaded or half-loaded Mesh - if the Mesh is being background loaded, it's possible the AABB could be half-populated and invalid.
- AnimableValue should handle DEGREE and RADIAN types (gcc warned about this)
- Early-out optimisations to setMaterialName methods, to reduce their cost if the same material name is used
- Fix blended scene animation (previously, only one animation would successfully apply, now they can be blended)
- Fix write overflow in GPU parameters when using a (physically) 3x4 matrix - this could occur even if the param was declared as 4x4 but cast to 3x3.
- TextureUnit's rarely-used constructor wasn't initialising everything
- Fixed calling Root::loadPlugin twice for the same plugin caused a crash at shutdown (and also double-calling of init function)
- Return default value properly from ConfigFile::getSetting
- Fix license statement on Fresnel demo code - all samples are supposed to be public domain / free use.
- SceneManager should destroy its own shadow textures on destruction
v1.6.2 [Shoggoth] (11 April 2009) - Maintenance Release
- LGPL static link exclusion clause added to our official license terms. Static linking terms are now the same as dynamic linking.
- OpenGL:
- Safety check before using mCurrentContext
- Win32: Correctly restore display frequency on Win32/GL, was getting overridden after restoreConfig
- Linux: CurrentGLContext option for GLX rendersystem should not be creating a new context.
- ATI: Workaround for corruptions in most recent drivers with sub-buffer updates with glMapBuffer
- ATI: fix crashes on some older cards when trying to use point sprites
- Add support for more graceful downgrading on pre-GL 1.2 cards and other underpowered systems (Mesa should now work)
- D3D9:
- Remove flushUpTo() call in CompositorChain::postTargetOperation; this happens after the begin/end of the scene and actually gets ignored anyway, D3D9 would bitch about this in debug mode
- Fix a potential issue with switching from fullscreen to windowed if requested size overflows
- Fix copyContentsToMemory in D3D9 for secondary windows
- Allow reference device software fallback for low-end machines
- Win32: standardise the use of NOMINMAX and WIN32_LEAN_AND_MEAN
- Linux: Fix aclocal warnings in configure.in
- Linux: Deal with Xlib.h's definition of 'Status' which clashes with ResourceGroupManager header
- OS X: OgreMemoryNedMalloc.h correctly made 'public' in the Copy Headers task
- GCC: Make the PCZ plugin use the gcc visibility options like other libraries
- VC7.1: Fix for threaded build, VC7.1 doesn't have intrin.h
- VC9: Added missing 'user' files for VC9
- Change to the timing of dirtying a Pass hash before a material is loaded to better support threaded material population.
- Fix small potential memory leak when explicitly constructing a SharedPtr with a null pointer
- Fix a shadow map indexing bug when using pass iteration for a specific light type and multiple light types all with shadows
- Fix OverlayManager::getViewportAspectRatio, was inverted
- Return float from AutoParamDataSource::getLightCastsShadows to match declared type
- Make methods of TerrainZone virtual
- Fix off-by-one error in StaticGeometry::GeometryBucket::assign when checking number of vertices.
- Make sure aspect ratio of camera is updated when camera newly assigned to a viewport
- Propagate alpha for material and technique setAmbient and setSelfIllumination
- Fixed ManualObject's support for 4D texture coordinates
- Fixed ManualObject transparent sorting behaviour when using 'keep ordering' mode
- Fix a crash when a compositor chain doesn't have a compositor attached to it
- Default material scheme when compiling compositors, so that quad materials get assigned correctly
- Fix bug with StaticGeometry when using stencil shadows and LOD.
- Fix the GLSL 'attach' directive not allowing multiple attachments in one line.
- SceneManager::SceneMgrQueuedRenderableVisitor should be public, needed for SceneManager::setQueuedRenderableVisitor
- Entity::_initialise now uses needUpdate() rather than updateBounds() to update parent node so that it will work on deeper hierarchies with SceneManagers which require parent bounds to also be updated (or processed some other way).
- Fixed OpenEXR plugin build
- Fixed crashes with certain Overlay destruction orders.
- Documentation updates
v1.6.1 [Shoggoth] (22 January 2009) - Maintenance Release
-
Shadows
-
LiSPSM now
automatically adjusts for duelling frusta
-
Uniform shadow
camera is now independent of FOV for directional shadows
-
Directional shadows
no longer jitter when using the uniform shadow camera
-
Fix
PSSMShadowCameraSetup when using arbitrary number of split points
-
Memory
-
Nedmalloc
deallocator should deal with null pointers
-
Nedmalloc is now
the default allocator
-
Linux build now
has option to
change allocators
-
Materials
-
cubic_texture
now calls processTextureNames event properly
-
Fixed
support for multi-line comments
-
Fixed
script inheritance ordering bug
-
Fixed
extra space being added to the parameters of texture_source in scripts
-
High-level
shaders can now be reloaded properly after a compile error
-
DirectX9
-
Fix device reset
error when using hardware occlusion queries
-
DirectX10
-
Fixed compilation
on the November 08 DirectX SDK
-
Image pitch bug
fixed
-
OpenGL
-
Fix
crash on Radeon 9200 in _setPointParameters
-
GTK
fullscreen mode now works
-
GLSL
-
Fix
warnings of the form “Could not find vertex shader attribute
'vertex' to match BindAttributeLocation request”
-
Fix
custom attribute names (tangent, blendWeights etc) interfering with
user-specified 'varying' bindings that happen to be called the same
thing
-
Fix
“Invalid Enumerant” errors caused by
trial-and-error binding of custom attributes
-
OS X
-
Fixed
plist link for OctreeZone project
-
Make
sure OgreMemoryNedMalloc.h is copied during Framework bundling
-
Code::Blocks
-
Project
files updated to include PCZ plugins & sample
-
GL
render system project updated to include render to vertex buffer
-
PCZ
SceneManager
-
Texture shadows
now work
correctly in PCZ scene manager
-
Null and
infinite AABBs now
handled correctly
-
Tangent support
-
StaticGeometry
now supports tangent parity option
-
Allow
texture coordinate index 0 to be used for tangents if required
(previously only the tangent semantic, or texture coordinate 1 or
higher were supported)
-
Pixel buffers
-
Some
blit functions were ignoring the left/top/front offsets, this is fixed
-
HardwarePixelBuffer::lock
implementations should not return the same left/top/front offsets as
the incoming parameters, since the returned pointer is already offset
-
Box
now has a safer default construction, in particular setting front/back
to 0/1
-
Linux / GLX
-
Xt is now the
default GUI on
Linux instead of GTK (if installed)
-
Do not correct
window size to
valid fullscreen mode in windowed mode
-
Fix typo in
closing GLX window
-
Fixed animation
update for
entities using the same Skeleton at all LOD levels
-
MeshSerializer can
now load
submeshes without indices successfully
-
Hardware SRGB option is now
properly registered when using background loaded textures
-
In SceneManager::_manualRender,
shader params for view/projection are now updated correctly
-
Fixed bugs with sky boxes /
domes etc when repeatedly clearing the scene & resetting
-
Fix calculated SubMesh size in
.mesh when using 16-bit indices
-
Manually changing the
sort mode of solids in a render queue now works as expected
-
Fix precision error in
AnimationState::hasEnded
-
Allow access to const
version of OverlayElement factory list.
-
Allow setMaterial() on
Entity/SubEntity as well as setMaterialName, for efficiency
-
STLport build option
fixed
-
Fixed uninitialised
typeName in Exception
-
Fix various compiler
warnings
v1.6.0 [Shoggoth] (3 November 2008) - Major Release
[View changes since RC1]
- Script Changes
- New script compilers are enabled by default, see OGRE_USE_NEW_COMPILERS in OgreConfig.h
- Unified script syntax (.os), can contain anything that would have been in type-specific scripts (.material, .particle etc)
- Import other scripts via the 'import' directive
- More flexible syntax, quoted identifiers supported
- Substitutable variables are supported
- Interception of script parsing events now possible for custom behaviour
- Material Changes
- 'manual_named_constants' directive added for assembler shaders to allow you to associate named parameters stored in a file with assembler. The file can be created from the GpuNamedParameters from high-level source if you want to precompile them.
- 'gpu_vendor_rule' and 'gpu_device_rule' allow you to influence the techniques which are used with inclusive/exclusive matching rules on the vendor and device name. Can help tune your materials for vendor or device-specific behaviour.
- '#include' directive now supported in HLSL and Cg shaders
- Added MaterialManager::Listener
- Can implement default Technique setting when using a material scheme for which there isn't a specific Technique
- Can use to change materials for all objects easily per viewport by using a new scheme name
- Added Pass::setPolygonModeOverrideable / script 'polygon_mode_overrideable'
- Allows pass-level control over whether the camera's polygon mode should affect rendering
- Added 'light_scissor' option to Pass
- Allows pass fragment processing to be limited to a scissor rectangle of the light coverage in that pass
- Additive texture and stencil shadows now use scissor automatically for additive colour passes, previously just used for rendering stencil shadow volumes
- Added 'iteration_depth_bias' option to pass. Allows you to increment the depth bias on a pass by a specific amount each iteration if you wish
- 'light_number' GPU parameter binding added
- 'light_count' GPU parameter binding added
- 'spotlight_viewproj_matrix' and 'spotlight_worldviewproj_matrix' added so you can use matrices from spotlights even without having set up texture shadows or an explicit texture projector
- Added 'light_clip_planes' option to Pass
- Clips triangles to a cube (point lights) or pyramid (spot lights)
- Available when the pass is only using one light and you need to restrict complexity
- Added 'separate_scene_blend' option to Pass
- Allows the use of separate blend operations for colour and alpha between rendered pixel and existing frame buffer
- Added pass option 'illumination_stage'
- Allows material writers to assert control over the illumination pass compilation (additive shadows)
- You can now incorporate sequences you could not before in your additive lighting materials
- For example, allows you to include specular effects by pulling the decal pass into the per-light pass if that works for your material (offset mapping used as an example)
- Added 'gamma' option to texture declaration in texture_unit (sRGB support)
- Causes hardware to perform gamma space to linear space conversion when sampling the texture
- Useful only for 8-bit per channel colour textures (not floating point textures or normal maps)
- Can improve quality results from shaders because they mostly assume calculations are done in linear space
- You will need to convert results back to gamma space when rendering to an 8-bit per channel render target either via a shader instruction or enabling the gamma correction option in RenderWindow or on the render texture
- Added 'transparent_sorting' option to Pass, allows you to disable depth sorting for transparencies
- Added 'alpha_to_coverage' option to Pass, allowing you to use alpha to coverage to multisample alpha-rejected textures. Even though this is a Dx10 feature, it is available on Dx9 for recent ATI and NVIDIA cards, and OpenGL on all cards that implement it.
- Frustum / Camera Changes
- Orthographic projection now allows explicit setting of orthographic window size
- Added Camera::getCameraToViewportBoxVolume. Similar to getCameraToViewportRay but generates a PlaneBoundedVolume from a screen-space rectangle which can be used in a PlaneBoundedVolumeListSceneQuery to do rubber-band selections
- Added Frustum::setFrustumExtents - allows you to specify the left/right/top/bottom planes manually and thus create any shape frustum you need to, even without the camera being in the centre of it
- MovableObject changes
- An object will no longer render its debug display if set to visible (e.g. via a cascading visibility update), you have to explicitly turn on the debug display. This is available via MovableObject::setDebugDisplayEnabled and SceneNode::setDebugDisplayEnabled
- Added visitRenderables() method - allows you to get a callback to a Renderable::Visitor class for all Renderables that this object will potentially add to the render queue. Identifies LOD and debug renderables.
- Scaling Issues
- By default now, renormalisation of normals is automatic if there is a non-unit scale on the main world matrix rather than the Entity::setNormaliseNormals option. If the user wants to optimise this, they can prevent the SceneManager doing it in all cases by calling SceneManager::setNormaliseNormalsOnScale(false) and then explicitly enabling the option per Pass instead. In the case of an array of world matrices being used, if the first world matrix isn't a guide then the shader writer should handle the renormalisation.
- By default now, Ogre will flip the culling mode of objects that are rendered with a negative scale (ie they are reflected by the transform of the node). This means you can now negatively scale objects and they will be rendered correctly. You can disable this behaviour by calling SceneManager::setFlipCullingOnNegativeScale(false)
- Compositor Changes
- You can now define Multiple Render Targets (MRT) in compositor scripts.
- To define a MRT, just list all the formats one after the other in the 'texture' definition.
- To reference a MRT subsurface later in a render_quad pass, use the optional extra 'mrtIndex' at the end of the 'input' command
- Note: as at this time, D3D requires that all surfaces of the MRT are of the same bit depth, and GL requires them to be of the same format
- Compositors now detect when the viewport they are attached to is using sRGB or multisample antialiasing, and apply the same settings to any intermediate textures which are having the original scene rendered to them (explicitly via a 'render_scene' pass or implicitly via 'input previous')
- The 'texture' directive now supports specifying a size which is a multiple of the main target size. You can use 'target_width_scaled' and 'target_height_scaled', each followed by a floating-point scaling factor, so 'target_width_scaled 0.5' for example would result in a texture with a width of half the size of the target the compositor is applied to.
- FrameListener changes
- Added new callback 'frameRenderingQueued'. This callback occurs after all rendering commands have been sent to all render targets, but before the double-buffered targets (windows) are asked to swap their buffers. This allows you to perform some useful work on the CPU in the main thread whilst the GPU chews over the queued rendering commands. On return from the callback, the buffers will be swapped. This is equivalent to running your own rendering loop in previous versions and using RenderWindow::update(false) then RenderWindow::swapBuffers separately, but it now makes the technique available in the standard render loop.
- SceneManager changes
- Chaster's 'Portal Connected Zone' SceneManager added
- 'Camera relative rendering' option added so that in large scenes where you are far from the origin, precision issues on the GPU can be mitigated by only transforming objects relative to the camera. See SceneManager::setCameraRelativeRendering
- ManualObject changes
- 4D texture coordinates now supported
- 32-bit indexes now supported
- Tangents generation changes
- New TangentSpaceCalc class can be used to calculate tangents for any geometry more easily, not just Mesh
- Now generates tangents based on a UV-area weighted, triangle angle weighted basis resulting in less biasing from small / thin triangles
- Now has options for splitting vertices when the tangent space basis is either mirrored or rotated around a vertex.
- Tangents can now be stored as a 4-component vector, with the 'w' component containing the parity. Multiply the binormal/bitangent you calculate in your shader by this to render models with mirrored UVs correctly.
- Resource changes
- Resource now has a lightweight way to observe whether it has been reloaded since you last looked at it, via getStateCount(). Other changes known to make derived data out of date may also increment this number. This allows Entity to now pick up when Mesh has been altered and refresh itself on next render.
- You can now query for file modification times via ResourceGroupManager::resourceModifiedTime
- RenderSystemCapabilities changes
- RenderSystem capabilities can now be serialised and these configs used to emulate lesser hardware
- More information about graphics card is exposed in this structure now, including device name, driver version and also enumerates the most common vendors
- SkyBox changes
- Skyboxes now detect and can use materials which use the 'combinedUVW' option to cubic_texture. Allows you to use the same single combined DDS for both reflection maps and skybox (previously the skybox had to be 6 separate images)
- RenderWindow changes
- You can now request the hardware to perform linear-to-sRGB colour space conversions for you, before the blending calculation. Use the 'gamma' name-value pair option on creation of a window or the "sRGB Gamma Conversion" render system config option for the auto-window.
- Render to Texture changes
- You can now enable sRGB conversion on render textures when you create them
- Multisample antialiasing is now supported when rendering to textures, specify the number of samples when you create the texture
- MRTs with different bit depths are now supported if the hardware exposes the facility (check RSC_MRT_DIFFERENT_BIT_DEPTHS)
- Image Changes
- Ogre can now detect the format of an image without needing a file extension, so you can load data from streams without knowing what file it came from. The Codec system has been expanded to provide support for recognising 'magic' signatures.
- Light changes
- Lights now have a 'power' value as well as a colour, for HDR lights (defaults to 1.0)
- Derived light colour auto-params are now factored by the light power
- Lights can now have their own shadow far distance settings (default is to continue to use the SceneManager global one)
- Animation Changes
- You can now use 'skeletal blend masks' to simplify the process of combining multiple layered animations to subsets of skeletons, or temporarily masking out the application of predefined animation to given bones (e.g. in order to manually control them). You create & apply these through AnimationState.
- AnimationTrack::Listener allows you to override interpolation and drive animation procedurally if you wish
- Threading changes
- OGRE_THREAD_SUPPORT can now take 3 values, 0=no threading, 1=full background loading, 2=semithreading (background preparing). The new option allows you to use a background thread just to perform I/O or calculate data, but for the main thread still to be responsible for dealing with the rendersystem. This means less synchronisation is required (since the rendersystem can still run without any threading protection) and thus there are fewer overheads involved in using background loading, at the expense of a slightly more complicated setup.
- Renderable changes
- Added preRender and postRender methods that let you further customise the render operations that are performed by a specific Renderable
- Archive changes
- Added Archive::getModifiedTime to allow you to query for file changes
- Camera changes
- Camera now has an optional 'LOD Camera' which can be used to make LOD decisions based on a different camera
- Shadow changes
- Texture shadows now base LOD on the main view's camera, not on the shadow camera
- Multiple textures per light are now supported, allowing techniques such as Parallel Split Shadow Maps, Dual-parabaloid Shadow Maps and Cubic Shadow Maps to be implemented
- Implementation of Parallel Split Shadow Maps (PSSM) is included, use the new class PSSMShadowCameraSetup. Integrated shadows are required since shaders are required to pick the appropriate shadow map. See PlayPen::testTextureShadowsIntegratedPSSM for an example.
- Geometry shader support
- Currently supported in OpenGL only (until Dx10 renderer complete)
- ParticleGS and IsoSurf demos added
- RenderToVertexBuffer support also added
- Memory management changes
- Custom allocators now supported
- New debug memory tracker for tracking memory usage by pool, and identifying leaks
Changes since 1.6.0RC1
- Native VC9 (2008) projects added
- Correctly deal with decompressing DXT data that is less than 4 pixels in width/height
- Fix assertion bug when mesh does not contain any UV
- Added missing virtual destructors to new script compiler classes, fixes memory leak
- Added PCZ plugins to SDK build script
- Make LOD camera position available to shaders (lod_camera_position)
- Fix passless technique handling in OgreEntity.cpp
- Various GLX Config Dialog fixes
- Add void* cast to deallocateBytes call to guarantee compatibility; this fixes luabind+ogre
compile error for example
- Safety change - don't assume that shadow texture cameras and shadow texture list
is entirely in sync, in case an exception has made this temporarily not the case
before shutdown
- Simple ease-in, ease-out for camera motion in samples
- Fixed new script compiler not respecting the 'gamma' option to the texture directive
(hardware sRGB conversion on sample)
- Make sure colour depth doesn't exceed desktop on GL/Win32/Windowed
- gcc 4.3 deprecated the ext/hash_map and ext/hash_set includes. Now backward/hash_map
and backward/hash_set.
- When using manual LOD on an Entity and attaching an object to a bone, still use
that attached object on lower detail versions. If a lower detail skeleton is being
used though and the bone that the child object is attached to no longer exists,
don't display the object.
- Expose the ability to turn off shadows in a compositor in script
- Fix for "No Contacts Requested" bug in ReferenceApp
- Bugfix for segfault in Root::loadPlugins() when empty plugin directory specified
- Fix wave_xform and scaling factors.
- Allow Animation to change lengths, useful for editors; just document caveats.
- Remove all 'using namespace OIS' directives, since OIS has a Vector3 now so it can
be ambiguous, better to refer to external project explicitly
- When increasing the number of shadow textures, use the settings from the end of
the list if it is not empty. This avoids confusion when a user for example sets
the size or format first, then increases the count.
- OctreeSceneManager should be checking for duplicates in createCamera like the other
SMs
- texture_source now supported in new script compilers
- Add missing ColourValue::getHSB method
- Const fixes to Polygon, and adding missing obvious method (isPointInside)
- Deal with D3D9 lost device condition where a texture is no longer contained in the
TextureManager resource list, but still exists through some other shared pointer
reference. Previously these were not released / restored (if in the default pool)
and could cause a failure to restore the device, they now are dealt with properly.
- Normalise rotation quaternions to eliminate the progressive drift which can happen
in some cases (resulting in skewed matrices)
- Fix a bug in the new compositor script compiler - the 'clear' and 'stencil' passes
are supposed to pick up their settings (buffers, colour_value etc) from nested sections,
not attributes directly under the pass. Added new translators to handle these nested
areas and moved the attribute parsing into them. This fixes bad parsing of compositors
with custom clear / stencil settings that used to work in 1.4.
- Fix transposed matrix parsing in new script compiler; affected 'transform' attribute
in texture_unit and also shader parameters expressed as a matrix in script. Addressing
of matrix4 is [row][column] and not [column][row].
- Fix to InstancedGeometry::destroy - clear list
- Change Windows SDK script so that uninstall doesn't remove any new nested folders
created by the user underneath it.
- Fix compile when using (deprecated) GTK platform
- Patch autotools files for PCZSceneManager and new Samples
- InstancedGeometry should be looking for the best technique, not the first technique
- Fixed Technique::movePass when moving a pass forward
- Camera::getCameraToViewportBoxVolume extra plane generated, also added optional
far plane inclusion as requested, non interface breaking
- Extra checking in AutoParamDataSource to prevent accidental out of bounds access
to light arrays
- Protect Pass hash recalculation process from race conditions by adding mutexes to
cover the change conditions
- Mac/Carbon support for "border" and windowClosing event
- Rename OgreOctree.h in OctreeZone plugin to avoid name clash with existing file
on OctreeSceneManager plugin.
- Limit FOV on standard shadow camera setup so it doesn't approach 180 degrees
- Added support for leading '/' in tokens in new script compiler
- NedMalloc now added as an option for faster memory allocation / deallocation
- Fix problem with setting up a controller on a TextureUnitState when one already
exists (e.g. calling setAnimatedTextureName more than once)
- Slight optimisation to BillboardSet - use Matrix3 instead of Quaternion to orient,
uses less instructions.
- Default preferred render texture mode to FBO in OS X now - this appears to be working
just fine in Leopard on my July 2007 MBP.
- Improve LiSPSM quality when camera direction becomes parallel with the light direction
(scale up the opt adjust factor automatically)
- Fix weird darkening of grass blades in Demo_Grass while camera moves (bug 190)
- Compatibility with libtool 1.6+
- Use forward slashes in q3settings.cfg
- Fixed some gcc warnings & const correctness issues
- XCode & MinGW build fixes
- Documentation fixes
v1.4.9 [Eihort] (16 June 2008) - Maintenance Release
- Fix crash on Linux with NVIDIA cards when probing FBO formats
- Fix corrupt mipmaps on NVIDIA with 175.x drivers
- Fix GL clip planes for off-centre objects
v1.4.8 [Eihort] (10 May 2008) - Maintenance Release
- Mac OSX:
- Workaround for a few GL driver bugs on older machines, in
particular first-gen iMacs and old PPC machines
- Workaround for GLSL vertex attribute aliasing problems.
- Linux:
- Don\'t use non-conformant GLX visuals.
- Workaround for FBO problem with some Linux NVIDIA 169.x drivers -
if this fix doesn't work for you, see this
forum thread for a more drastic temporary workaround.
- Windows:
- Safety check in D3D9RenderSystem::__SetTextureStageState should
ignore texture stages above 7. Could cause errors in D3D9 debug mode
with large numbers of textures.
- Add NOMINMAX declaration to WindowEventUtilities header since it
includes windows.h - ordering of includes could start complaining
about std::min/max in other Ogre headers.
- GetModuleHandle calls fixed to deal with debug plugins more
correctly
- Terrain:
- Allow creation of terrain before any camera/viewport
- Report an exception when terrain isn't found rather than just
asserting
- Fix Maya exporter vertex colours - use packed RGBA instead of
float4
- Camera::setWindow() fixed
- Fixed FileSystemArchive::exists bug with absolute filenames
- MayaExport ported to OSX, phong materials supported
- Update the manual to list all the new automatically bound GLSL custom
vertex attributes (those to replace built-ins if you need to use all
custom attributes to avoid aliasing problems on some drivers)
v1.4.7 [Eihort] (6 March 2008) -
Maintenance Release
- Mac OS X:
- Fixed CGL and uint issues when building against the Leopard (10.5)
SDK
- Carbon and CGL context's now manage the life of the pixel format,
since this is needed to context share.
- Window destruction and resize fixes.
- Added in support for WindowEventUtilities to function properly on
OS X.
- OgreCEGuiRenderer now builds on demand rather than being in the
dependencies
- Dependencies package updated, OIS version updated & CEGui
package issue resolved
- Added the Preprocessor Macro NDEBUG to disable assertions in a
release build
- Linux:
- Add 2 missing headers to Makefile.am so they get installed
correctly in Linux
- Fix a bootstrap warning - extra characters after backslash
- Fix problem where configure wasn't completing because of a spurious
tab character
- GL:
- Remove call to _setCullingMode in GLRenderSystem::initialise - no
reason for it to be there and if an auto-window was not used it could
cause GL functions to be called before a window & context were
available.
- GL bugfix: unbind vertex / fragment programs at the end of a frame.
This avoids having pointers to these programs stored when they could
potentially be removed from the resource manager, e.g. during
shutdown.
- D3D9:
- D3D9: Avoid setting texture transform flags if a vertex program is
bound - this could cause a crash if a user incorrectly set a
fixed-function transform on a shader-based material.
- Fix SceneManager::findLightsAffectingFrustum bug; directional lights
should have been assigned a zero tempSquaredDist. This could lead to
discrepancies between the documented behaviour of shadow texture ordering
and the results.
- Prevent any unnecessary rendering where iterate_once_per_light doesn't
find any lights of the right type to iterate over
- Unregister Entity from Mesh listener list when destroying. Also
reorganise background loading event - queue the event, not the event and
listeners, since listeners may get destroyed & removed in between the
event getting queued and fired.
- Fix Math::intersects ray/convex list of planes
- Initialise Entity::mHardwarePoseCount properly
- SceneManager::setShadowTextureCasterMaterial and
setShadowTextureReceiverMaterial should cope with cases where there is no
supported technique gracefully
- Copy main camera FOV to reflection camera in Demo_RenderToTexture
example; some people have changed the FOV and then wondered why they get
arefacts.
- FreeImage codec - make it drop alpha & downgrade to 24 bit if the
format doesn't support 32-bit.
- Allow OverlayElement::setMaterialName to accept a blank name and thus
to reset the material to nothing, to return it to the original state of
not rendering.
- Fix movement speed for high frame rates in example framework
- Make Node::getRenderOperation() more robust under resource reloading
situations. Lower performance, but this is only a debug routine anyway so
robustness is better.
- Correct compositor script syntax - 'target_output' should allow all the
same options as 'target'
- Win32 Ogre::Timer: now sorts out proper use of system cores
- Fix MemoryDataStream leaving garbage on unexpectedly short read
- Make SceneManager::setSkyBox tolerant of materials with no supported
technique or incorrectly constructed with no passes or no texture
units.
- Fix a rather obscure bug with compositor chains attached to viewports
which get destroyed and later recreated
- Allow objects in render queues between RENDER_QUEUE_OVERLAY and
RENDER_QUEUE_MAX to function correctly with compositors
- XMLConverter resilience fixes
- Minor doc corrections
v1.4.6 [Eihort] (28 December 2007) -
Maintenance Release
- DirectX9:
- Fix a bug when using fixed-function texture blending with manual
source values. It only occurred when you used a manual colour as
source2 and a manual alpha value as source2, together.
- Fix a bug with compositors where the sequence {1. device lost 2.
compositor disable/enable 3. device restore} would result in
corrupted compositor resources.
- OpenGL:
- Fix a DXT compression problem on Apple / Intel GMA machines.
- Deal more gracefully with gluErrorString returning null; really
shouldn't for a valid GL error code but FireGL has been shown to do
so
- Workaround for nvidia
169.x GLSL driver bug resulting in "Bad scope in
ConvertLocalReferences()" in HDR compositor
- Dependency updates:
- Freetype 2.3.5
- Cg 2.0
- FreeImage 3.10.0
- Fix Animation::clone exception in Visual Studio 8 (release mode)
- Cg & HLSL: Fix bug with unload / reload if a compile error was
encountered
- Fix a potential deadlocking issue between HardwareBufferManager
allocateVertexBufferCopy and _notifyVertexBufferDestroyed, order the
locks the same way to avoid
- Make resource listener list threadsafe
- Shadows:
- Fix divergent behaviour in focused / LiSPSM shadows between debug
and release.
- Fixed edge case issues with focussed shadow camera setup: up dir
should be camera up dir; deal with zero vector
- Added setDebugOutputEnabled function to Log class
- Add missing format initializer in Ogre::Image
- Fix bounding box updates wh en background loading entity
- Fix bug with TextAreaOverlayElement GMM_RELATIVE_ASPECT_ADJUSTED
- Fix TerrainRenderable::_calculateNormals
- Fix RibbonTrail::removeNode preserving associated ChainSegments
- Link zlib[d].lib in static builds, avoid problem when referenced
externally
- GLX: Move restoration of desktop resolution from GLXWindow destructor
to destroy() method, should be symmetric with create
- gcc 4.3 fix - needs C stdlib includes explicitly now where used
- TextureUnitState:
- Fix changing from animated texture to cubic texture (was still
trying to be animated)
- Fix inability to combine fixed-function x and y transform
animations
- XSI exporter:
- Fix bug when using advanced rigs - 'RemoveAllAnimation' actually
isn't necessary any more
- Several usability enhancements suggested by artists
- Mesh::suggestTangentVectorBuildParams() exception condition - If you
have more than one submesh and you find existing tangents in the mesh,
avoid throwing an exception because of mismatching targets
- Maya exporter:
- Use correct Eihort default for tangent generation ie
VES_TANGENT
- Enable the GUI option to switch between texcoord and tangent
semantics when building tangents
- Put debug & release plugins in consistent location
- BSP support:
- Fix use of BSP geometry with compositors
- Security fix (buffer overrun) for BSPSceneManager
- Various documentation corrections and code tidy ups
v1.4.5 [Eihort] (29 September 2007) -
Maintenance Release
- D3D:
- Fix checking of capabilities in D3D when selecting non-default
device
- Fix HLSL preprocessor_defines in edge cases such as ending string
with a ';' and empty clauses
- GL:
- Ensure that GL RTTs generate a unique render target name in all
cases, don't make it deterministic based on the texture name. This
resolves an issue when if you removed a RTT but did not cause it to
be destroyed, then created a new RTT with the same name, the render
targets would have the same name and there would be issues with
destroying them.
- Fix isFullScreen reporting in GLXWindow (was using own member
variable)
- OS X:
- Frameworks reorganisation - now we default to embedding all
frameworks in the .app to support drag & drop install of
applications in the traditional OS X way
- No longer expect frameworks in /Library/Frameworks, and don't copy
Ogre.framework there after building - link dependency frameworks from
Dependencies/ now (deps archive reorganised)
- After building all samples, symlink all frameworks into
Foo.app/Contents/Frameworks. This means we don't have to duplicate
them but the app is still self-contained. Real apps would genuinely
copy of course.
- Enable stripping on release builds to see if that makes them
smaller
- Fix SDK sample project so it only tries to build the included
architecture.
- Specify a local PCH directory rather than the default shared
directory, which causes problems if you use multiple branches of the
same project.
- Linux:
- Fix "make distclean" problems
- Fix for random crashing in some cases when using /fp:fast and certain
combinations of renderer / debug & release settings
- Prevent an std::advance overrun in SceneManager::renderSingleObject
when using start_light, and max_simultaneous_lights would run off the end
of the light list.
- When using additive stencil shadows, the 'only for light type' pass
iteration option was not being respected. Every iteration once_per_light
pass was being executed no matter what.
- Fix problem with light_direction_object_space when using non-uniform
scaling.
- All light_direction_* auto params now have 0 in the w component to make
them safe to transform in shaders by 4x4 matrices with translations
- In focused texture shadow camera setups (e.g. uniform focused or
LiSPSM), truncate the scene AABB by the plane formed by the shadow far
distance. This allows much tighter focus regions and thus better shadow
quality in sprawling scenes.
- Fix a minor bug where the shadow camera lists were not updated in some
variants of destroyCamera
- Compositor scripts: fix grammar bug that prevented multiple techniques
from being defined.
- Fix to Plane::projectVector in some cases
- Use std::istringstream in StringConverter::parseUnsignedInt for direct
correlation with toString and std::ostringstream outputs. Could cause
some problems in other locales with non-symmetric behaviour.
- Grass demo shader - make grass waving based on UV not absolute Y so
people can move the grass if they want
- Fix segfault when logging a FreeImage error that returns null for
FreeImage_GetFormatFromFIF
- Root::initialisePlugins should iterate in forward order of plugins, not
reverse (looks like bad copy & paste from shutdownPlugins)
- Fix ResourceGroupManager potential deadlock
- Fix FileHandleDataStream::read, was returning incorrect counts (and is
never used in core OGRE, hence why missed)
- Fixed build when memory manager is turned on (default is off now)
- Documentation updates
v1.4.4 [Eihort] (20 August 2007) -
Maintenance Release
- GL:
- Fix small buffer overrun in mTextureCoordIndex - should be as
largeas the max number of texture units, not max number of texture
coord sets
- Optimise setting of texture coords in fixed-function mode
slightly
- Call ReleaseDC in Win32Window::destroy when window is external,
since CS_OWNDC won't handle it
- Fix buffer overrun when writing contents of a window to a file
whose width is not 4-byte aligned
- DirectX:
- Support NVPerfHUD 5
- Fix some potential problems when switching between fullscreen and
windowed mode
- OS X:
- Build changes: make Ogre and Samples projects build into the same
folder structure. This allows us to reference the Ogre framework
relative to the build folder and not in /Library/Frameworks, this
means we can have more than one major version of Ogre & samples
building independently.
- SDK build scripts created, now generate a DMG
- Ocean and Compositor demos now work on OS X
- StaticGeometry now deals with non-uniform scaling of normals
- StaticGeometry should transform VES_TANGENT and VES_BINORMAL elements
in the same way as VES_NORMAL.
- Override OctreeNode::removeAllChildren so that it updates the
octree.
- Fix a potential crash & inaccurate visibility masks if a viewport
was removed directly after rendering to it.
- Compositors now carry more viewport options across to the automatic
'original scene' compositor: 'shadows enabled' and 'material scheme'
- For bitmap font definitions, support definition of the glyph as a
unicode decimal as well as a single character
- Fix a params bug with assembler shader usage, when using the same
assembler shader twice
- RibbonTrail now behaves better when jumping large distances (high speed
or low framerate)
- AxisAlignedBox::transform should setNull() before merging transformed
points back in.
- Fixed stack overflow when calling Node::_getDeribed* in
MovableObject::_notifyMoved() callback
- Remove assert when trying to derive parameters from Cg program that
fails compilation, just derive no parameter names instead
- Add optional listener parameter to ResourceBackgroundQueue 'unload'
methods - both for consistency and also to prevent garbage listener
pointer problems
- A couple of safety checks in animation tracks to check for null
pointers
- Don't create 2 logs in MeshUpgrader, and error handling improved in
XMLConverter and MeshUpgrader
- SkeletonSerializer internal methods now protected, not private, to
allow extending
- Deal with display colour depth changes in windowed mode under
Windows
- Linux pkg-config fix: package defined as OGRE not ogre
- Linux SSE check - only enable SSE on recognised platforms instead of
turning off for just powerpc
- Fix some lesser-used 64-bit based architectures: ppc64, alpha, ia64,
s390
- Add support for compilation on mips architectures.
- Add support for intel compiler
- Compatibility with Doxygen 1.5.x
- Compatibility with VS9 beta compilation
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 theEihort 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, allworld / view transformsnow 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
- WindowEventUtilitiesintroduced
- 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