- Add support for (experimental) WebGL1 driver for emscripten (still work in process)
- Add support for emscripten. Thanks @labsin for the patch.
- Add IVideoDriver::getAmbientLight function so shaders can access global ambient light easier
- Merge material changes for COGLES1MaterialRenderer_LIGHTMAP and COpenGLMaterialRenderer_TRANSPARENT_ALPHA_CHANNEL which had been done in OGL in trunk (r2740) to ensure materials look the same on all platforms.
- Added support for PVR textures. Loader offer support for compressed DXT1-5, PVRTC/PVRTC-II, ETC1/ETC2 texture formats.
- Add IShaderConstantSetCallBack::OnCreate to allow earlier access to IMaterialRendererServices
- CIrrDeviceWin32::yield() now uses Sleep(0) instead of Sleep(1).
We had Sleep(1) to allow yielding to all processes back in Windows XP time.
But a) This caused Windows apps to sleep for 15ms usually and b) behavior for Sleep(0) was changed after Window XP to do what we want it to do.
- Add ICursorControl::getReferenceRect
- Fix: Listbox no longer sending EGET_LISTBOX_SELECTED_AGAIN instead of EGET_LISTBOX_CHANGED when pressed mouse was moved over item before releasing the mouse button
- Listbox items can now change individual background colors
- Fix some bitfield sizes in SMaterial which were chosen too small for enums (PolygonOffsetDirection, ZWriteEnable, BlendOperation)
- Add ISceneNode::UpdateAbsolutePosBehavior variable to allow nodes to ignore the scale/rotation parts of their parents transformation.
- Add IGUISpinBox functions getValueFor and getOldValue
- Bugfix: IGUIElement::getNextElement now passing includeInvisible and includeDisabled flags recursively instead of disabling those for children.
This fixes problems that elements sometimes didn't get a tab order because some parent was invisible and so tab'ing for them failed completely.
Also setTabOrder(-1) now also checks for disabled elements for the same reason (disabled parent causing children to not get a tab-order).
- core::array::linear_search and linear_reverse_search can now work with any types as long as corresponding operator== is implemented.
- Add checks for sane image sizes in some image loaders (so far: bmp, jpg, tga, png).
Thanks @sfan5 for the original patch (got modified a bit): https://github.com/minetest/irrlicht/commit/dbd39120e7ed8c0c97e48e2df62347627f3c1d42
- Add IImage::checkDataSizeLimit and make IImage getDataSizeFromFormat return size_t so image loaders can check if sizes are sane.
- Fix crash with large jpg files. Based somewhat on a patch in Minetest from sfan5 https://github.com/minetest/irrlicht/commit/594de9915346a87f67cd94e28c7933993efb5d3b
- COSOperator::getSystemMemory now returns some value on OSX (thought same for total and available).
Thanks @sfan5 for patch https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819 and https://github.com/minetest/irrlicht/commit/e469c54f76f6d24f92389b4e8a27b9cce7152888
- Fix CVertexBuffer::setType switching types for non-empty arrays. Before we had some bad casts which could result in random initializing of some vertex data.
- IVertexBuffer interface changes: pointer() now returns void*. Adding a const version of getData(). Some set functions have now overload for all vertex types.
- S3DVertex now always initializes color to 0xffffff. That was previously the only uninitialized variable in there. Also both derived classes have now a constructor taking a const S3DVertex&.
- Fix deserialization in CGUITable. Use now getAttributeAsStringW instead of getAttributeAsString.
Thanks @chronologicaldot for report and patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=7&t=52821
- IIndexBuffer interface changes: Adding a const version of getData(). Some set functions now copy by value instead of per reference, which shouldn't be slower for this and is safer to use.
- Fix CIndexBuffer::setType going from 16 to 32 bit. This had some casts which simply could mess up the results.
- Fix OSX nor resizing properly. Thanks @torleif, Jordach and sfan5 for patch and report: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- X meshloader fixes bug with uninitialized normals. Thanks @sfan5 for patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- stl meshloader now faster, especially with text format
- CMemoryReadFile::seek CMemoryWriteFile::seek and no longer allowed to go _before_ start.
Thanks @sfan5 for patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=2&t=52819
- stl meshloader can now load 32 bit buffers.
Thanks @Foaly for the patch: https://irrlicht.sourceforge.io/forum/viewtopic.php?f=9&t=51441
- Add IMeshBufffer::clone function to create buffer copies. CMeshManipulator::createMeshCopy uses that now and works now with all types of meshbuffers.
- Add IMeshBuffer::getType to allow finding out which class type a meshbuffer has (similar to ISceneNode::getType).
- Add IGUIImage::flip to flip/mirror images
- IBillboardSceneNode got functions to access meshbuffers. So uv-coordinates can now be modified directly (previously only possible via texture matrix).
- vector3d scalar operator/ and operator/= no longer multiply by the inverse but use the expected division.
Costs some speed, but fixes floating point troubles caused by this optimization (like x/x no longer being 1.0).
- Bugfix: XML reader dropped last character in strings if there was a special character replacement for the second-last character.
- Avoid allocating more than 16k on stack in OCT loader. Also avoid potential heap overwrites in there.
- Add equals and set_data functions to core::array for easier working with blocks of data.
- SIrrlichtCreationParameters::IgnoreInput set to false works again on X11.
Thanks @ Victor Gaydov for report + patch + very good test cases! (bug #401)
This had been broken since Irrlicht 1.6
- Add steer parameter to CSceneNodeAnimatorFollowSpline which allows rotating node toward direction of movement.
Thanks @ Bate for the patch (patch #175)
- Add a workaround for XWarpPointer bug that causes mouse to jump when users have set a Coordinate Transformation Matrix for their mouse on X11.
This was mentioned in bug #450 by vikaig.
The fix needs compiling with _IRR_LINUX_X11_XINPUT2_ enabled (so far disabled by default)
- Add IGeometryCreator::createTorusMesh to create donuts.
- Don't try loading broken image files twice with same loader anymore.
- Make CImageLoaderJPG thread safe. Thanks @ Edoardo Lolletti for report and patch (patch #324)
- Add ETCF_SUPPORT_VERTEXT_TEXTURE flag which can be used to enable vertex texture sampling support in Direct3D 9.
Note that this was enabled for a long time in 1.9 svn, but is now disabled by default.
- CGUIListBox now serializes the state of "Selected". Feature wish by chronologicaldot (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=52719)
- Bugfix: Changing focus with tab-keys now also work when elements are inside a modal screen.
- COBJMeshFileLoader using a bit more exact color conversion for 0-1 to 0-255 range (same now as SColorf::toSColor uses).
- Speedup for COBJMeshWriter
- Add blinkMode parameter to IGUIEnvironment::addModalScreen, so blinking can be suppressed
- Speedup: Avoid string copy in CXMLReaderImpl::getAttributeByName
- Fix bug in rect::clipAgainst that had caused rects completely outside to the left-top of the rect to be clipped against ending up with both corners outside.
It still worked for UI in most cases as the resulting rectangle still had an area of 0.
- Add optional multitouch support to X11 (but disabled in IrrCompileConfig by default). Thanks @TheBrokenRail for a patch proposal based on example code from esjeon (patch #322).
- Slightly changed close window handling on X11 (optimized and avoids problems on some shells). Thanks @TheBrokenRail for a patch (was part of patch #322).
- Add getActiveColor functions to IGUIStaticText and IGUIButton (get currently used color).
- Add IGUIEnvironment::addToDeletionQueue to allow save removal of gui elements while iterating over them (like the same named function in ISceneManager).
- IGUIEnvironment::drawAll has now a parameter to allow disabling automatic resize to screensize. Makes it easier to use partial screens with full alignment support.
- Fix bug that AnimatedMeshSceneNode ignored ReadOnlyMaterials flag when checking materials for transparent render passes.
- Unify checks if materials should use transparent render pass with new IVideoDriver::needsTransparentRenderPass function.
- Material.ZWriteEnable is now of type E_ZWRITE instead of bool. This allows now setting materials to always "on" independent of material type and transparency.
This breaks compiling. To have old values replace false with EZW_OFF and true with EWZ_AUTO.
- Materials EMT_REFLECTION_2_LAYER and EMT_TRANSPARENT_REFLECTION_2_LAYER on OpenGL are now same as in D3D9. Before GL used a sphere-map for those instead of reflection.
- Bugfix: CGUIToolBar automatic placement no longer outside of screen when there are modals screens when creating it.
Or when there are other window elements going over full window-size.
Thanks to Stephen Lynx for the bugreport and to S<>rgio Augusto Vianna for writing a test case with a bug example.
Changes: a) Never move the toolbar below it's parents lower border. b) No longer check all element-types, but only try to be below other toolbars or menus.
- Add a normalType parameter to IGeometryCreator::createCylinderMesh
- Add a normalsUpdate parameter to IMeshManipulator::transform to allow updating the normals with the inverse-transpose of the transformation matrix.
- Bugfix: quaternion::slerp now uses lerpN instead of lerp to keep result normalized.
- Add function quaternion::lerpN which is like lerp but normalizes the result.
- Add function ISceneManager::createShadowVolumeSceneNode to allow custom ISceneNode's to use shadows.
- CGUITabControl serialization changed to allow using custom tabs (before only CGUITab could be serialized).
There was a lot of rewriting involved, including some minor interface changes (IGUITab* can now be added directly for example).
See http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52344 for a thread about this.
Thanks @chronologicaldot for bringing this up, writing a patch proposal and even writing test.
- CGUITabControl no longer eats EMIE_LMOUSE_PRESSED_DOWN (doesn't seem to need it, was just done for a planned feature which is not implemented yet).
- Removing a tab in CGUITabControl will now also remove the tab-element. Fixes problems like tabs still being around & visible when you removed the active tab.
- Add example 28.CubeMapping.
Based originally on EnvCubeMap example from irrSpintz engine.
Including a cubemap texture from Emil Persson, aka Humus from http://www.humus.name
- IGeometryCreator::createCubeMesh has a new parameter to allow creating different types of cube meshes.
Added a new cube-mesh with meshbuffers per side.
Also single buffer cube-mesh now normalizes it's normals.
- Bugfix: CBillboardTextSceneNode no longer disregards IsVisible flag
- FPS-camera rotation now smoother.
First bug was that it would sometimes skip back because it worked with wrong values for the screen-center position.
Second (and bigger) bug was that it ignored all cursor-movement which happened between device->run() and the point where
the animator did run. Tiny side-effect your camera will now rotate generally faster.
- Fix ms3d loader to work on big endian systems which need floats to be aligned in memory. Thanks @ kas1e, Corto and Salas for the patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52538).
- Bugfix: COBJMeshFileLoder no longer overwrites transparency value with 1.0 when it's set before the diffuse color value in the mtl file. Thanks @Boshen for bugreport (#445).
- Bugfix: OpenGL no longer antialiasing stencil buffer when driver has antialiasing disabled.
- Add IShadowVolumeSceneNode::setOptimization to allow disabling optimizations for meshes were contour shadows fail.
- Stencil shadows work now also with directional light
- Add example 27.PostProcessing written by Boshen Guan
- Drivers can now try to create textures from images in more exotic color formats (like floating point formats). It depends on the driver how much that works (so far mainly OpenGL can handle it somewhat).
- Fix OpenGL to no longer switch colors red and blue in 24-bit RGB format. But warnings added to documentation to avoid 24-bit textures as they are generally just trouble.
- No longer try to convert ECF_R5G6B5 to ECF_A1R5G5B5 on OpenGL (just made texture-loading seem to fail).
- Add parameter SIrrlichtCreationParameters.WindowResizable. Mainly to work around troubles with SDL+OpenGL on some platforms where resizing later can be tricky/impossible.
- Bugfix: IrrlichtDevice::isWindowMinimized no longer returns true when it's maximized on Windows.
- Ignore degenerated faces in obj file loader when they would generate triangles where 2 vertices use identical indices.
- Add CMatrix4::transformVec4 to transform vectors with 4 elements (thx @ devsh)
- Add ITexture::getOriginalColorFormat to access color format of images used to create a texture
- Add IMemoryReadFile interface which allows direct access to memory block used as file.
- Add IReadFile::getType() interface to all users to find out what kind of class implements that interface.
- .dae/Collada reader/writer now handle whitespace in texture-filenames with escape characters (handle them as xs:anyURI).
- Add function string::insert.
- EditBox now still allows overwriting characters when the text-length is at max.
- Bugfix: CMatrix4::transformPlane was calculating the wrong plane-normal before.
- SViewFrustum::recalculateBoundingBox no longer includes camera position in the bounding-box. Only using frustum corners now. Thx @DevSH for bugreport & patch.
- Camera uses now OGL projection matrices with OpenGL driver. Fixes wrong near-plane values with OpenGL (showed too much before).
- Add a flag to most CMatrix4::buildProjectionMatrix functions to allow creating OpenGL projection matrices (target range of -w to w instead of 0 to w).
- Bugfix: CCameraSceneNode resets the IsOrthogonal flag to false now when it recalculates a projection matrix.
- SViewFrustum::setFrom and SViewFrustum constructor now use a parameter to allow to set the correct near clipping plane when the projection matrix doesn't use a target depth range of 0 to z, but for example -z to z. So OGL projections matrices can now also use it.
- Remove code to read boundingbox element in Collada reader as it's not in Collada specification.
- .dae/Collada reader now converts from Collada's right-handed to Irrlicht's left handed coordinate system (switching z to -z)
- Add irr::string::eraseTrailingFloatZeros to kick out trailing 0's for strings generated from floats.
- .dae/Collada writer now converts from Irrlicht's left-handed to Collada's right-handed coordinate system (switching z to -z)
- Switch Collada writer to utf8 xml's.
- Add IXMLWriterUTF8
- IColladaMeshWriter::writeScene got an additional flag to decide if root should be written.
- _IRR_MATERIAL_MAX_TEXTURES_ now set to 8 by default. So we can use now 8 textures per material without recompiling the engine.
Additionally there's a new global variable irr::video::MATERIAL_MAX_TEXTURES_USED which can be set to lower numbers to avoid most of the costs coming with this for people not needing more textures.
But using more textures via _IRR_MATERIAL_MAX_TEXTURES_ also has become less calculation intensive than it was in the past, so in release builds the difference is hardly noticeable.
- Serialization fixes for materials in irr format (in IVideoDriver::createAttributesFromMaterial/fillMaterialStructureFromAttributes).
- Add serialization for ToolTip to IGUIElement. Thanks @chronologicaldot for patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=52374)
- Try recovering lost device in D3D9 for 3 seconds when device reset fails after resizing Window.
- Add typedefs like value_type and size_type to array, list and map like std containers have. Thanks @SLC for idea (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52363)
- Remove unused enum E_LOST_RESOURCE
- CGUIComboBox uses now EGDS_SCROLLBAR_SIZE instead of EGDS_WINDOW_BUTTON_WIDTH for the width of the listbox button to allow changing that without changing window topbar height.
Thanks @LunaRebirth for reporting. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52297&p=303682#p303682)
- CGUIListbox, CGUITreeView and CGUITable now resize scrollbars when EGDS_SCROLLBAR_SIZE in the skin changes without having to re-create the elements.
This also fixes the problem that drawing looked wrong when this value got changed after the elements were created.
Thanks @LunaRebirth for reporting. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=1&t=52297&p=303682#p303682)
- Scrollbar buttons can no longer get larger than half the ScrollBar element to avoid them overlapping.
- Add IVideoDriver::swapMaterialRenderers to allow swapping the renderer used to render a certain material.
- IMeshManipulator functions createMeshWith1TCoords, createMeshWith2TCoords and createMeshWithTangents no longer weld vertices while converting meshes. Use IMeshManipulator::createMeshWelded if you need that welding.
- Add ITerrainSceneNode::setFixedBorderLOD to handle connecting terrain nodes without gaps. Thanks @diho for the bugreport, testcase and a patch proposal (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=51220).
- PLY loader now works with files which use "st" instead of "uv" for texture coordinates (like generated from Blender or Assimp). Thanks @JLouisB for patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261).
- STL writer does now also write binary files when EMWF_WRITE_BINARY flag is used. Based on patch from JLouisB (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261).
(EMWF_WRITE_COMPRESSED also still works for downward compatibility)
- Improved PLY exporter. Thanks for Patch from JLouisB. (Forum: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=9&t=52261):
- Support for UV and vertex colors.
- Support for binary PLY files export with the EMWF_WRITE_BINARY flag
- Fix for the meshes with 32 bits index
- Fix wrong colors on big endian platforms with burnings renders. Thx @kas1e for reporting and @curaga for the patch (#318). Forum bug discussion at http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52177.
- Fix bug #440 where OpenGL driver enabled second texture for single-texture materials when setMaterial was called twice. Thx@ "number Zero" for bugreport and test-case.
- Irrlicht icon now loaded with LR_DEFAULTSIZE to better support larger icon requests. Thx@ luthyr for report and bugfix.
- Cursor on X11 behaves now like on Win32 and doesn't try to clip positions to the window
- IImage::copyToWithAlpha has a new parameter to allow combining alpha value instead of replacing them. This uses new blitters called BLITTER_TEXTURE_COMBINE_ALPHA. Thx @chronologicaldot for providing this patch and @burningreggae for his feedback.
- Add _IRR_COMPILE_WITH_PARTICLES_ to control compilation of particle system
- Add IGUIImage::setDrawBackground to allow disabling background drawing even when no texture is set.
- Fix: IGUIContextMenu now raises sub-menu when they would otherwise be displayed below bottom-border of root gui element.
- Prevent initializing/quitting SDL several times when using more than one Irrlicht device.
- Reduce log-messages for "loaded texture" and "loaded mesh" from ELL_INFORMATION to ELL_DEBUG.
- Add IGUIButton::setOverrideColor to allow overriding text-color (same function as statictexts and editboxes have).
- Add functions IGUIButton::getClickShiftState and IGUIButton::getClickControlState to get shift/ctrl key-state when a button was clicked. Thanks @StarSonata for patch.
- Add function ISceneManager::clearAllRegisteredNodesForRendering.
- Add function IVideoDriver::queryTextureFormat to allow checking if a driver supports textures with a specific color format.
- ISceneManager::getMesh can now creates meshes with alternative cache-names.
- Lets the BSP loader find textures inserted with relative paths. Thx@ curaga for patch
- Slightly simplified ALLOC_STRATEGY_DOUBLE in arrays
- Add alternative BoundingBox calculation for BillboardSceneNode which can take in a camera node. Thx @Seven and @JacKDuRdEn for bugreports.
- FPS camera now supports keyboard rotation.
- Base FPS-camera movement on last position of mouse instead of always center (works better on platforms where cursor-placement is not allowed)
- Octrees with other vertex types than EVT_2TCOORDS can now also use VBO's.
- Add IOctreeSceneNode interface to control polygon clipping checks for octree scene nodes.
- Add support for different geometric primitives to meshbuffers. Thanks @gerdb for patch proposal (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=45999)
- change SEvent::SUserEvent.UserData1 and SEvent::SUserEvent.UserData1 from s32 to size_t to avoid cutting numbers on some 64-bit platforms (SDL and Windows)
- Improve speed of draw3DBox (OpenGL and D3D9). Thanks @zerochen for patch (https://sourceforge.net/p/irrlicht/patches/256)
- Support more keys on OSX "[]\". Thanks @neoascetic for patch (#313).
- Fix IBillboardTextSceneNode::setTextColor which did nothing in the past. It now maps to setColor instead.
- Add access functions to IBillboardTextSceneNode (getText, getFont).
- Add access functions to ITextSceneNode (getText, getTextColor, setFont, getFont).
- Try harder to move Window to custom WindowPosition set in SIrrlichtCreationParameters on X11. Thx@ Hernan Ezequiel Di Giorgi for the patch (#304).
- Fix bug in virtual filessystem which prevented createFileList from working. Thx @Cube for reporting a problem.
- ITriangleSelector now can also return meshbuffer collision information.
- core::string::split now adds delimiter to token before delimiter when keepSeparators is true. That way we never end up with 2 tokens for an original string with a single character.
- Bugfix: SMesh::recalculateBoundingBox() does now ignore empty boundingboxes of meshbuffers instead of adding them.
- IIrrXMLReader::getAttributeValueAsInt and IIrrXMLReader::getAttributeValueAsFloat can now return a custom default-value when the attribute is not found.
- core::string::split now handles ignoreEmptyTokens=false correct. Thanks @manni63 for bugreport: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=51551&p=299375#p299375
- Bugfix: Previously when some material had a texture matrix and another didn't those materials were still considered identical. Which had prevented correct switching between materials with and without texture matrices.
- IWriteFile::write now returning size_t (like fwrite in c-lib). Also sizeToWrite parameter changed from u32 to size_t.
- IReadFile::read now returning size_t (like fread in c-lib). Also sizeToRead parameter changed from u32 to size_t.
- add clear function to strings.
- Collision manager now using const camera pointers.
- Several fixes for SceneNodeAnimatorCollisionResponse, based on http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=33098&p=290746
Thanks to all people who reported and to JLouisB and kinkreet for the patches:
- Gravity is now fps independent
- Values of gravity now like documented (wasn't 1 unit = 1m before, had been 1m = current frames per second, so maybe 100 units = 1m).
Note that jump-values for fps-camera must also change when adapting gravity!
Several examples got adapted for new ranges.
- Pausing timer now pauses animator. Also doesn't reset values anymore with pauses.
- Clones no longer have 1000 times the gravity of original animator.
- Should now be fps independent
- Speedup CTriangleSelector (mainly for animated meshes)
- CTriangleSelector now supports 32-bit meshbuffers. Thanks @Wol101 for reporting and patch-proposal.
- Fix: CTriangleSelector no longer resets it's boundingbox to 0,0,0 (was wrong when a meshbuffer was not around 0)
- Fix: Collada writer now uses wrap_p for third texture wrap value instead of invalid wrap_w (thx @Yoran for bugreport)
- Several getter functions in IAttributes made const (thx @Erik Schultheis for the patch)
- Fix: CTriangleSelector no longer ignores meshbuffer transformations from skinned meshes (thx @AlexAzazel for report and test-model).
- Randomizer now returns range 0..randMax as documented and no longer 1..randMax as it did before. randMax got reduced by 1.
Note: You will generally get different numbers than before! If you need the exact old calculations, please check the corresponding sources in Irrlicht 1.8 in os.cpp/.h
- Resetting Randomizer with 0 or no longer breaks it (will be set to 1). Same for other numbers for which it wasn't defined.
- Add SMaterialLayer::TextureWrapW for cubemap texture wrap mode at W axis.
- Add cubemap texture support for D3D9 and OpenGL drivers.
- Do no longer re-calculate md2 frames when they don't change (thx @npc for reporting)
- Add multibyteToWString wrapper functions around mbstowcs which work with Irrlicht string class.
- Fix: addFileArchive now grab()'s the archive when you pass one in by pointer.
- Fix: Prevent division by 0 in CGUIScrollBar::setPos
- Fix: Add missing serialization to CSceneNodeAnimatorCameraFPS and CSceneNodeAnimatorCameraMaya
- Fix: File-open dialog now restores the original locale after modifying it internally
- Fix first calculation of the camerascenenode boundingsphere.
- Fix bug with ignored opening brace in .X files with DeclData section. Thx @Alin for bugreport and patch.
- Fix problem with OpenGL textures cache.
- Add clear buffer flags and marked some methods used for clear buffers as deprecated.
- Fix skinned meshes not playing their last frame. Also clarified animation documentation to describe current behavior more exactly.
- Add IWriteFile::flush interface (thx @ JLouisB for the patch).
- CLightSceneNode::updateAbsolutePosition does now light recalculations. This is to fix using animators with lights.
- Fix Collada export for objects with rotations around more than 1 axis.
- Add ISceneNodeAnimatorCameraMaya::setTargetMinDistance and getTargetMinDistance.
- Add override font to IGUITreeView
- CGUIComboBox now updates selection-list when font changes while it's open (thx @ rubixcuber for bugreport)
- CAnimatedMeshSceneNode::setMesh does now set the animation speed again to that of the mesh (had been changed in 1.7, but not for obvious reasons)
- .x meshloader regards now AnimTicksPerSecond (thx @qian for a test-model and bugreport)
- Interface getMeshType moved from IAnimatedMesh up to IMesh.
- Add b3d mesh-writer. Static writer written by Hendu, support for animated meshes added by JLouisB, testing and bugfixes by CuteAlien.
- Node-collision functions of SceneCollisionManager like getSceneNodeFromScreenCoordinatesBB will now ignore collisions against empty boundingboxes.
- Cameras return again an empty boundingbox (at 0,0,0) instead of returning the frustum boundingbox (was changed in very old Irrlicht version).
You can access the frustum boundingbox through the frustum itself.
This means cameras no longer show up in the node-collision of the SceneCollisionManager (showing up there because of their frustum bounding-box was too confusing).
- Fix problem in IrrlichtDevice::setResizable on X11 that caused window titlebars to hide occasionally under the taskbar in some systems (Ubuntu, Mint).
- Added new IRenderTarget interface.
- Replace the swprintf and snprintf defines by swprintf_irr and snprintf_irr to avoid conflicts with the standard libraries (and other libraries).
- XBox support removed as it would need DX8 (this was about the original XBox).
- Support for Direct3D 8 removed after svn revision 5052 due to lack of maintenance.
- _IRR_IMPLEMENT_MANAGED_MARSHALLING_BUGFIX removed. This was a bugfix for VS2003 (in combination with .NET) which we haven't supported in a while.
- VS 2005 support removed after svn revision 5048.
- WinCE 6 supported removed after svn revision 5046.
- NVidia CG support removed after svn revision 5045 due to lack of maintenance. NVidia has also stopped supporting this.
- TA burningvideo:
enabled triangle fan again so that skybox works.[need more testmeshes if other trianglefan than skybox doesn't work]
correct vc2013 project files for x64,static lib
correct alphablend vs add [was broken]
- Add a new core::rect constructor which takes a dimension parameter and set's left-top to 0.
- mtl (obj) format reader and write now regards texture scaling and translation. (thx @thanhle for noticing and patch proposal).
- Added Visual Studio 2013 project files.
- Added new color formats: ECF_R8, ECF_R8G8, ECF_D16, ECF_D32, ECF_D24S8.
- Can now enable/disable background drawing for IGUITable.
- Bugfix: Cloning CBillboardSceneNode now copies colors and sizes.
- EditBox works now with numpad on X11
- Added helper functions for converting between wchar and utf-8. Patch provided by Hendu.
- Added sphere frustum culling support. Patch provided by Hendu.
- Fixed issues with setViewPort method under OpenGL. (reported by anontypist)
- Fixed several selection, highlighting and clipping bugs in CGUITreeview (thx @ AReichl for the patch + test)
- Removed DllMain from the static windows build (thx @ AReichl for reporting)
- Fixed maximize/minimize under Linux by supporting NETWM hints. Patch provided by hendu.
- ISceneNode::deserializeAttributes uses now old values for parameters which are not in the attributes (thx @entity for noticing).
- Add interface for easier access to scrollbars for IGUIListBox, IGUITreeView and IGUITable
- Fix serializing colors as strings. Was previously mixing up strings with number-arrays and hex color values. Now using hex color values always, but also fixed the the handling when it get's number-array strings.
- Fix IAttributes::setAttribute implementation for textures (did do nothing before).
- Added support for separate blending in OpenGL and D3D9 drivers.
- Added pack_textureBlendFuncSeparate and unpack_textureBlendFuncSeparate functions, which allow to use separate blending functions in OpenGL.
- Added BlendFactor field to SMaterial which allow user to set blending factor per SMaterial set call without use EMT_ONETEXTURE_BLEND type.
- Fixed issue with blending operation set to EBO_NONE and some transparent material types.
- Add a code profiler (stop-watch style)
- Add IGUITable::getItemHeight to access item (row) height
- Add override font to IGUITable
- IGUITable can now disable the active column.
- IGUIElement::getElementFromPoint now virtual
- Fixed issue with wrongly enabled Z-writing for transparent shader materials. Thanks Hendu for this fix.
- Allow more control over particle behavior. This also changed the default behavior.
- ISceneNodeAnimators can now be disabled and paused.
- Maya camera no longer get's stuck in "rotating" state when a mouse-up event is lost (thx @ JLouisB for reporting).
- Focus behavior of IGUIEnvironment now controllable (right-click focus, mouse-over focus). Disabled elements no longer get the focus unless users enforce it.
- Buttons can now now have 7 more image-states, 1 more sprite-state and the sprites are now scaleable.
- Spritebanks can now draw scaled sprites and are a little easier to use.
- Improved i18n key input for X11 (languages like cyrillic work now).
- Fix bug that ListBox would not allow to 'tab' to the next element (thx @ FlavourBoat for reporting)
- IGUIEnvironment::getNextElement now public (was only in CGUIEnvironment before).
- Add an overwrite mode to editbox. Patch provided by Adam(aka kingadami).
- Add IGUIImages::setDrawBounds/getDrawBounds to allow coding stuff like progress bars.
- Add IGUIImages::setSourceRect/getSourceRect to allow using only parts of an image (can also be used to mirror and scroll them).
- Dev-Cpp project file removed (wasn't really supported for some time already)
- Collada dae-loader now set's the vertex colors (thx @sf17k for report and test-models)
- IAttributes interface changed. Parameters are now passed by const-ref instead of per value.
- Fix c::b project obj folder names. Some static builds had used the shared folders (thx @ gerdb for reporting)
- Add ITexture::getSource which can be used to check where the last IVideoDriver::getTexture call found the texture.
- Add IMeshTextureLoader interface and replace texture-loading algorithms in most meshloaders.
- CGUICheckBox no longer gives up focus on EMIE_LMOUSE_LEFT_UP (thx @Demre and @REDDemon for reporting)
- Bugfix: IGUIElement::addChild now prevents setting an element as it's own child.
- Bugfix: getFont for xml-fonts now also works for fonts inside archives (thx @Neirdan for bugreport)
- Added function irr::core::mergeFilename
- Add ISceneNodeAnimator::setStartTime/getStartTime to allow resetting movement animators.
- Improve speed for finalizing skinned meshes (removal of unnecessary frames after loading) (thx @ichtyander for the testmodel)
- Collada loader now instantiates camera nodes which had been ignore so far (thx @NemoStein for the test .dae)
- line2d::intersectWith has a new parameter to allow ignoring intersections with coincident lines
- vector2d::equals now has an tolerance parameter for passing the epsilon (like vector3d had). Note that this changes the default
behavior of vector2d::equals as well as functions using it like the operators for ==, !=, <, >, <=, >= when using vector2d with f64
as the tolerance is increased in that case (for f32 and integer values it shouldn't make any difference).
- Material renderers which offers blending feature (eg. EMT_TRANSPARENT_ALPHA_CHANNEL, EMT_ONETEXTURE_BLEND etc.) require SMaterial::BlendOperation set to other value than EBO_NONE.
- Removed support for built-in T&L variables in ASM/GLSL shaders (variables related to vertices eg. gl_MultiTexCoord0 are still supported). This change allow us to reduce CPU overhead in shader material renderers.
- IGUIEnvironment::hasFocus has now a parameter checkSubElements as subelements are usually seen as part of an element. Default unfortunately must be false due to backward compatibility.
- Add IGUIElement::isTrulyVisible which works like ISceneNode::isTrulyVisible and checks for parent visibility as well.
- Improved DDS loader and added support for DXTn (DXT1-5) compressed textures in OpenGL and Direct3D9 drivers.
- Add function ISceneNode::getTransformedBoundingBoxEdges.
- Improve automatic compiling under Solaris (proposed by curaga)
- Add in IGUICheckBox: setDrawBackground, isDrawBackgroundEnabled, setDrawBorder, isDrawBorderEnabled
- IGUISpinBox now passes on the EGET_BUTTON_CLICKED, EGET_EDITBOX_CHANGED and EGET_EDITBOX_ENTER events from it's sub-elements.
- IGUISpinBox no longer validates values after each character type but only on KEY_ENTER and when losing focus. New behavior can be set with IGUISpinBox::setValidateOn
- IAttributes::getAttributeAs functions now can have a customizable default-parameter to return when attributeName is not found
- Added ECFN_DISABLED value (it works like ECFN_NEVER worked before) and changed ECFN_NEVER behaviour
(it works like its equivalent value in OpenGL/Direct3D).
- Removed boolean interface from IShaderConstantSetCallBack, please use integer interface instead of them.
- Add a LeakHunter class which can be enabled with compile-flag _IRR_COMPILE_WITH_LEAK_HUNTER_ to find leaking IReferenceCounted objects.
- Add _IRR_COMPILE_WITH_XML_ define to allow compiling Irrlicht without xml (patch written by curaga)
- Add functions to set/get cursor character and blinktime to IGUIEditBox
- Collada exporter calculates values for orthographic camera now on export
- Collada exporter now exports the camera up-vector correctly.
- Add IColladaMeshWriter::findGeometryNameForNode
- Add getters IGUIButton::isDrawBorderEnabled and IGUIButton::isDrawBackgroundEnabled
- changed CSkyBoxSceneNode to drawIndexedTriangleList instead of drawIndexedTriangleFan (because software renderers don't have fans.. and i needed the demo functionable)
- Update script to generate tutorial.html's in example folders. Add missing ones. Update existing ones. Thanks @Guillian J for noticing those were outdated.
- Fix CIrrDeviceSDL::getVideoModeList which didn't return video modes before. Thx @kas1e for report and patch.
- CIrrDeviceMacOSX now sets the SEvent.MouseInput Shift and Control values on mouse events like the other devices. Thanks @ Zero King for patch (#321)
- isWindowFocused in IrrDeviceSDL device now returns the input focus like the other devices. Before it was returning a mouse-over-window state.
- Prevent SDL device from dropping OpenGL resources on Win32 when setResizable was called with OpenGL driver. Thanks @ kas1e for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52083&start=0)
And thanks to http://www.bytehazard.com/articles/sdlres.html for the workaround.
- Fix isWindowActive when using SDL device. Before it was only active when the mouse was over the window. Thanks @ kas1e for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52083&start=0)
- Fix SViewFrustum::clipLine. Was before clipping at wrong points (inverse places along lines).
- Fix compilation on OSX and prevent capturing mouse cursor when Window is not on top (Patch #319)
Thanks at Artem Shoobovych for bugreport and patch (https://sourceforge.net/p/irrlicht/patches/319/)
- Fix serialization of OverrideTextColorEnabled flag in CGUITab. Thanks @ chronologicaldot for reporting (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52344&p=303891#p303891)
- CFileSystem::getAbsolutePath no longer wrongly converts an empty filename to "/" on unix platforms.
This fixes the bug that CFileSystem::createAndOpenFile("") returned a (strange behaving) non-null file pointer.
Additional check also added in createAndOpenFile to early out on empty names.
- Fix bug in cursor positions when compiled with newer Windows SDK's (v110 in VS2012) and running on Systems >= Windows Vista in windowed mode.
Thanks @Mustapha Tachouct for the bugreport and patch proposal. Also thanks @BakeMyCake for an earlier report.
- IOSOperator::getSysteMemory() no longer returns incorrect values with >2GB. Thanks @Eduline - human development for report and patch.
- Increase KEY_KEY_CODES_COUNT to fix problem with laptop keyboards which return the keycode 0xff for the function key. Thx @Klokancz for bugreport and patch.
- Fix bug when calling activateJoysticks on windows several times. It had appened joystick information instead of replacing it, thereby increasing joystick number on each call.
Only happened compiling with _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ (which is the default). Linux and SDL implementation not affected.
Thx @Andrea Demetrio for the bugreport.
- Fix bug in fast_atof when reading floating point numbers with more than 16 digits past the dot. Those produced completely wrong results (sometimes even causing INF numbers).
This bug also did cause many meshloaders to have problems with certain meshes (basically all text-based formats are affected).
- Accuracy of fast_atof is back to older Irrlicht versions (fixes test warnings, usually not a noticable problem).
- Fix crash in eventhandling when calling remove() on a contextmenu while it has focus.
- CImageLoaderJPG::isALoadableFileFormat uses a test which allows to load more jpg formats (for example uncompressed jpg's). Thx @Yaron Cohen-Tal for report, test-image and his help with the patch.
--------------------------
Changes in 1.8.4 (9th July 2016, svn r5321)
- Tests on Unix now have a short pause between switching drivers to avoid certain X11 errors.
- Fix CEnumAttribute::getInt() which could crash (thx @ luthyr for reporting)
- No longer try to run tests for drivers not supported on a platform
- Update lights and renderTargetTexture tests to work with Windows 10 (can't have so tiny Windows anymore).
- Deprecate CMatrix4::transformBox as the result is no longer a boundingbox. Use CMatrix4::transformBoxEx instead (which has been available for a long time).
- Fix CSceneCollisionManager::getPickedNodeBB which could sometimes miss collisions.
- Add -U__STRICT_ANSI__ option to c::b project files to allow compiling with -std=c++11 and add an error when trying to compile with Irrlicht with __STRICT_ANSI__
- Update libpng to 1.6.23
- Update zlib to 1.2.8
- Fix some compile warnings in aes which got handled as errors by some c++11 compilers.
- Get rid of some misleading-indentation warnings in gcc6
- Fix serialization of the InputReceiverEnabled flag in CCameraSceneNode
- Fix pasting text from X11 applications to Irrlicht. Thanks @est31 for the patch.
- Tests give now a warning when stabilizing screenshots failed. Aslo trying more often now (a hack as taking screenshots otherwise fails often in windowed mode on some systems).
--------------------------
Changes in 1.8.3 (13.9.2015)
- Fix the fix for compiling on GCC5 (thanks to est31 for report and patch)
--------------------------
Changes in 1.8.2 (30.8.2015)
- Add VS2013 project files
- Fix compiling with IRR_LINUX_XCURSOR_
- Fix compiling with NO_IRR_COMPILE_WITH_LIBJPEG_ (thx to anontypist for report and patch).
- Fix compiling on GCC5 on MinGW (thanks to Slipxy for finding the bug and to osense for reporting it).
- Fix loading of .X and .B3D models with non-normalized quaternion rotations (thanks to JLouisB for a test-model).
- Fix compiling on Free BSD (thanks to leper for reporting and patch)
- Fix bug with multiple SetPixelFormat calls. (reported and fixed by anontypist)
- Fix bug related to memory release in PNG image loader. Thanks elephoenix for it.
- Fix crash in CGUIListBox when users pressed end key folled by any other key in an empty, focused list box (thanks at porcus for report and patch).
- Fix use of enabling defines for wal2 (halflife) image loader. Thanks to hendu for noticing.
- Fix userClipPlane test by inserting the stabilizeScreenBackground call
- Demo enables antialiasing now correct (thanks to Mel for noticing).
- Update glext.h (bug #429)
- Example 22 no longer select a random texture after loading a new texture (thanks at mongoose7 for reporting).
- Fix bug in IGUISkin serialization which messed up serialization of the button-pressed offsets (thanks at Midnight for reporting).
- IGUIStaticText::getTextHeight returns now the correct height for texts with newlines even WordWrap is not set.
- Crashfix for CGUIEditBox. CGUIEditBox::setMultiLine must break text when changed or other functions like getTextDimension can crash afterward for strings with newline characters.
- CGUIEditBox and the GUI-Editor now convert pasted text correctly using mbstowcs.
- C::B project files work again on newer Linux-distributions which have cleaned up their dev-lib dependencies.
- Makefile for the new IrrFontTool links now correctly to libfontconfig
--------------------------
Changes in 1.8.1 (17.11.2013)
- Improved OpenGL performance under OSX (Thanks devonsoft for reporting).
- Fixed OSX compilation issues.
- [KNOWN BUG] Software driver doesn't work properly under OSX 10.9.
- For speed improvement the following attributes accessible by ISceneManager::getParameters() are no longer updated in release:
They can be enabled by compiling Irrlicht with the define _IRR_SCENEMANAGER_DEBUG.
Thanks @hendu for reporting, see http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=48211 for the discussion.
- Fix compile problem with CIrrDeviceSDL on VS2008 (and maybe other systems). Thanks @HellFlip for reporting.
- Fix quaternion::rotationFromTo() (Thanks @takamoto for reporting)
- Fix iszero for s64 (Thanks @chronologicaldot for reporting)
- Fix crash in SoftwareDriver2 when Material was EMT_DETAIL_MAP but texture[1] was not set (Thanks for fix by chronologicaldot)
- Fix buffer overrun in x-loader (Thanks for fix by Otaka)
- Fix cursor visibility update problem under Windows 8 (Thanks @luthyr for reporting)
- Fix irredit links in loadScene/saveScene docs.
- Fix issue in CAnimatedMeshSceneNode::clone which caused a crash. (reported and fixed by luthyr)
- Fix compiling errors for c++ builder (thx @Greatwolf for many patches and @cfanderek for reminding)
- Initialized IColladaMeshWriter::GeometryWriting which was uninitialized.
- Fix linker trouble with irr::core::equalsByUl when compiling Irrlicht as managed code (thx @ Memorial76 for a report + testcase)
- Fix crashes in CCubeSceneNode::clone and CSphereSceneNode::clone (reported by marsupial)
- Fix the clipping in the listbox drawing which was only showing the right line of the sunken pane (reported by Mloren and Abraxas).
- Initialize slider in example 05 correct (reported by Zerochen)
- Fix crash in CMeshSceneNode::clone when the mesh had no shadow (reported by christianclavet, bug-fix found by Nadro)
--------------------------
Changes in 1.8 (7.11.2012)
- Let sphere mesh use full opaque color, just as all the other ones do
- Gcc on Win32 (MinGW) now also works with the _w file access functions when compiled with _IRR_WCHAR_FILESYSTEM. (thx @ alexzk for reporting compile troubles)
- Fix a bunch of off-by one errors in irr::core::string in functions equals_substring_ignore_case, findFirst, findFirstChar, findNext, findLast, findLastChar, replace, remove and removeChars.
This prevents some potential memory access errors, find functions no longer try to find the \0, replace no longer replaces the \0 and remove no longer tries to remove it (which did remove the last character instead).
- matrix4::setRotationAxisRadians added
- user clipplanes fixed
- Skip rendering of lines, points, and polygons, as these lead to crahses due to wrong access to the vertex lists. A fix would need major rewrite of the vertex cache, or at least some other render methods.
- Add mipmap generation for makeColorKeyTexture
- Add another saveScene overload which allows to pass in a user-created XMLWriter. Patch suggested by eversilver.
- quaternion conversions to and from matrix4 no longer invert rotations.
To test if your code was affected by this you can set IRR_TEST_BROKEN_QUATERNION_USE in quaternion.h and try to compile your application.
Then on all compile-errors when you pass the matrix to the quaternion you can replace the matrix with the transposed matrix.
For all errors you get on getMatrix() you can use quaternion::getMatrix_transposed instead.
- CGUIEnvironment::loadGui - loading a gui into a target-element no longer messes up when the gui-file contained guienvironment serialization.
- Colladawriter now exports materials per node when those are used in Irrlicht
- Colladawriter now writing matrices for node transformations as old solution did not work with CDummyTransformationSceneNode's.
- Colladawriter no longer create an extra node for the scenemanger as <visual_scene> has that job in Collada.
- Colladwriter no longer makes all Scenenodes children of ambient-light as that can be parallel on the same layer instead.
- Colladareader now creates the ambient-light correct instead of creating a point-light for it.
- Add new parameter to array reallocate function. This prevents a reallocation in case the array would become smaller. As the reallocation operation is quite time consuming, this can be avoided on request now, on the expense of more memory consumption.
- Add IAnimatedMeshSceneNode::getLoopMode (asked for by JLouisB)
- CSceneNodeAnimatorCameraFPS now resets the key-input when it was disabled (thx @ gerdb for reporting and patch-proposal)
- Properly destroy OpenGL resources on linux (thx @curaga for the patch)
- Fix diplay bux in the attribute-panel of the GUIEditor. Fixes bug 3517314 (thx @Darkcoder for reporting).
- Allow caching cursor position on X11 to work around slow XQueryPointer calls (thx @Hendu for reporting+patch proposal)
- Make sure after EGET_EDITBOX_ENTER and EGET_COMBO_BOX_CHANGED event processing no more code is executed for the corresponding editbox or combobox objects to allow clearing the environment on those actions (see comments on bug-id 2995838).
- Fix string::replace which failed replacing substrings at the end when the replacement was longer
- Struct packing works now with gcc 4.7 changes on MinGW (thx @Sudi for reporting).
- Struct packing uses now same solution throughout (by including headers in corresponding places)
- User can now set characters used for decimal point in fast_atof for localisation.
- Add parameter useAlphaChannel to second IGUIEnvironment::addImage function.
- Get rid of unnecessary warning "Could not load sprite bank because the file does not exist" for "#defaultfont".
- Fix MRT disabling. Bug found and fixed by hendu.
- core:::array::reallocate returning now immediately when it has nothing to do. Should reduce a lot of memory thrashing on irrArrays.
- Start mesh animations at first OnAnimate , before start-frame was rather random. Thx @Auria for reporting and patch proposal.
- renderTargetTexture now working with ECF_R5G6B5
- add -fPic in c::b linux fast math shared build.
- Fix by Auria for starting the animated meshes only at first OnAnimate instead of at random times and animation frames.
- Add support for MAX_COMBINED_TEXTURES, which allows more texture support than with the original fixed pipeline texture check under OpenGL. Now, more than 4 textures should also work with newer gfx cards and drivers, which often only support 4 fixed pipeline textures.
- triangle3d::isPointInsideFast now using some epsilon to catch all points on the borders.
- triangle3d::getIntersectionOfPlaneWithLine calculates now with higher precision for more exact results.
- triangle3d::isOnSameSide (used by isPointInside) calculates now with higher precision and uses some epsilon to make it work with larger integers and less floating point troubles. Slightly slower now.
- new function equalsByUlp to test for spacing between floating point numbers.
- speedup for collada writing.
- speedup for xml-writing.
- Fix 8bit grey image TGAs, which were not working due to missing palette. Also switched to RGB8 format, as otherwise a loss in precision would occur. Thanks to Klunk for the error report and a test image.
- fixed issues with a D3D driver and Aero effects.
- Fix font-drawing in CGUIButton to use EGDF_BUTTON again (thx @DJLinux for reporting).
- Add texture cache with proper reference handling. This avoids deletion of textures while still being active on the GPU. Test case and fix by m(att)giuca
- CFileSystem::removeFileArchive now checking for normalized path
- Fix zip's with passwords on 64-bit systems (thx @ Dr. Gladman for writing the bugfix)
- replace asserts in tests with macro assert_log to allow running all tests through on problems.
- added IGUIElement::setName and IGUIElement::getName (similar to ISceneNode)
- irr::s64 support
- line2d::getClosestPoint can now also get the closest point on the line additional to only checking for closest point on the line-segment.
- avoid division by zero in line2d::getClosestPoint when start- and endpoint are identical
- Support for sw drivers under OSX
- Fix font-loading which got broken by fixed xml-loading. Thanks @ pc0de for finding and providing a test and patch.
- Don't crash draw2DSpriteBatch when it get's no textures.
- Add support for int passing in setShaderConstant
- Support for better collada texture wrapping support on loading.
- Fix for render context change where only the window id is given. We now try to change only the window ID, keeping context and display unchanged. Suggestion by vovo4ka from the forum.
- XML-reader now ignores all whitespace-only EXN_TEXT elements as old way didn't work in cross-platform way (and arguably also not well on Windows).
- CXMLReader initializes IsEmptyElement now.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- line2d::intersectWith and and line2d::getClosestPoint work now also with integers.
- line2d::getMiddle and line3d::getMiddle work now also with integers. But can be slower for compilers which are not optimizing division by 2 to multiplication by 0.5 for floats.
- Add Nadro's initial Cg support. Example 10 is enhanced to allow also Cg shaders.
- Add mipmap support from FBO extension, patch by Nadro.
- Add vertex optimization algorithm submitted by curaga
- rename texureBlend functions to textureBlend
- Add threshold for slerp calculation, switching between linear and slerp at this point.
- Fix for bug 3401933 - vertex color interpolation with shadow volumes in the scene
- Fixed bug in button sprites reported by RdR
- Fixed button state sprite animations for pressed, focused and hovered.
- Added serialization for terrain smooth factor, patch by RdR
- Implemented more button states for sprite banks, patch submitted by RdR
- Add IGUIEnvironment::getHovered to get the element most recently known to be under the mouse cursor
- Add FPS settings for animated meshes, which allows to push animation speed from files to Irrlicht animation system
- Maya camera updates
- Add support for bsp brush entities. Written by Hendu.
- weighted normals recalculation fixed
- Billboard improvements
- API docs updates
- triangle selector improvements
- OSX improvements by Auria
- Add new methods for adding and removing file archives based on ifilearchive pointers.
- Add getBackgroundColor, isDrawBackgroundEnabled and isDrawBorderEnabled to IGUIStaticText (thx 4 patch from Nalin).
- Reduction of multiple skinning the same mesh and frame in one render cycle
- Added ISceneNodeAnimatorCameraFPS::getKeyMap and a new ISceneNodeAnimatorCameraFPS::setKeyMap.
- CSceneNodeAnimatorCameraFPS uses now SKeyMap instead of SCamKeyMap (structs were identical which was confusing and there wasn't any explanation in comments, so I decided to simplify it).
- Add some workaround to MeshViewer to show how we can currently fix the FPS-cam when users to alt-tab while moving. We can improve that some day when we have focus-events, but this works for now.
- Fix LZMA decompression
- Ply normal fixes
- HW buffers only support rendering with both vertex and index buffers
- Enables VBOs for water node
- Octree support for non-standard vertex meshes
- Fix rotationFromTo
- Added ConstIterator
- Fix for getScreenCoordinatesFrom3DPosition to use proper RTT sizes
- Add IGUIComboBox::setMaxSelectionRows and IGUIComboBox::getMaxSelectionRows
- Scenemanager switches from type ESNT_UNKNOWN to type ESNT_SCENE_MANAGER.
- Add getActiveFont to all elements which have setOverrideFont for cleaner code
- Add getOverrideFont to all elements which have setOverrideFont to have a consistent interface
- IGUIEditBox: added missing serialization for Border
- IGUIEditBox: remove bug that added spaces to the end of each line
- IGUIEditBox: fix crash that happened when wordwrapping was enabled, spaces were entered beyond the border and then cursor-key was pressed.
- IGUIEditBox::setDrawBackground added.
- CGUISkin::draw3DSunkenPane no longer ignores fillBackGround in non-flat mode. Also borderlines are no longer drawn overlapping to avoid ugly corners.
- CDummyTransformationSceneNode::clone() added.
- IParticleSystemSceneNode::doParticleSystem now public to allow rendering outside scenegraph.
- getRelativeFilenames updates and fixes
- Renamed IOSOperator::getOperationSystemVersion to getOperatingSystemVersion. Changed return type from wchar_t to core::stringc, as that's the internal representation the name is built on.
- Added IGUITabControl::insertTab, IGUITabControl::removeTab, IGUITabControl::clear and IGUITabControl::getTabAt
- Add 32bit support to some mesh manipulator methods
- Fix mipmap locking under OpenGL
- Improvement of screenshot function to support more color formats and targets
- getAngle fix to avoid NaNs
- Available gfx memory output in log messages
- Improved 2d render settings and caching
- Initial suppport for sRGB render functions
- Improved terrain scene node rendering
- Paletted png image support fixed
- Gamma settings in image loaders improved
- Support for relative filenames in serialization
- Access to selectors inside meta selectors implemented
- DirectInput joystick support
- Support for scaling with draw2dimage with burnings video
- More gl extensions have correctly initialised return values
- Some fixes for quaternion to euler function
- Properly return nullptr if RTT creation fails on low levels
- Added IGUIListBox::getItemAt
- Add more image formats tried to load by q3 level loader
- Add fast_atof improvements from assimp, also strtoul10 method
- Add blend equation function for MRTs
- Add new material fields for blend operation and polygon offset (depth bias).
- Reorder texture stage assignments
- Improved VSync handling
- Fix Ogre loader for materials with more than one texture
- Fix createMeshCopy material handling
- Framework target for OSX project added
- Terrain scene node fixes
- Fix HSL color class
- Fix color selection GUI element
- Transparency issues in particle system fixed
- Particle sphere emitter rand values fixed
- Support Unicode SHY dynamic hypen in word wrap
- Fix OBJ reader sometimes running over EOF
- Added IGUITable::getColumnWidth
- Billboard text animates in OnAnimate now
- Fix mountpoint reader to properly sync file names and firectories
- Added the ability to open an archive from an IReadFile*, added a FileToHeader tool with instructions of how to make a portable app that consists of a single executable file.
- Added suppport for right-to-left (RTL) text, supplied by Auria from STK
- Added ISceneManager::createSceneNodeAnimator to create animators by name
- The Makefile now creates a symlink from the soname to the binary name during install. Binary compatibility is only confirmed between same minor releases.
- Added SMF mesh loader, loads meshes from 3D World Studio. Originally written by Joseph Ellis
- The loader selection process now consistently checks loader lists in reverse order, so new loaders added to Irrlicht override the internal ones. This applies when adding external mesh, image, scene and archive loaders, image writers, plus node, animator and GUI element factories.
- Added getters to retrieve mesh, scene and archive loaders.
- Added ISceneLoader interface and .irr loader. Users can now add their own scene loaders to the scene manager and use them by calling loadScene.
- Renamed IGUIElement::bringToBack to sendToBack, like in Windows
- Send EGET_ELEMENT_CLOSED event when context menus should be closed (thx @ Mloren for reporting).
- Added treeview to GUI editor, provided by Armen
- Added root type for GUI environment
- zip archive fixes: Fix directory tags in file list. Fix loading of stream zip files which have file sizes only in the central directory.
- Fixed panel scrollbars in GUI editor, reported by Armen
- Fix b3d loading of files with mixed mesh/bone sections.
- Fix particle emitters which used integer random numbers so far. The distributions of the particles should be much better (and the code also somewhat faster) now.
- Add new random method frand: Returns a random number in the interval [0..1] and gives better distributions than using fmodf on the integer number.
- Add node parameter to saveScene and loadScene. saveScene saves the given node and all descendants to the file (if 0, the full scene is saved as before). loadScene loads all elements of the scene as childs of the given node. As before, 0 would load the file on the top level (scenemanager).
- Add method to make a filename relative to a given directory.
- Fix setMesh to correctly update the joints cache.
- Fix setting transition time of skinned meshes back to 0.
- Add some getters to IGUIImage: getImage, getColor
- Fix OpenGL FBODepthTexture to create less overhead
- Fix MRT disabling under OpenGL
- API change: Added write only lock mode for textures. The lock method has changed the signature and uses an enum parameter now instead of a bool. The default is still to lock for read/write (previously 'false'). The old 'true' value should be replaced by ETLM_READ_ONLY.
- Speedup deleting of particles
- Add function IParticleSystemSceneNode::clearParticles
- Fix RTT render states under OpenGL
- Fix AntiAliasing setup under Windows/OpenGL in case no AA is available
- Fix transformation matrices when RTT used
- API change: getScreenCoordinatesFrom3DPosition has a new parameter, which needs to be set to true to get the original behavior. Now, the method returns coordinates which would fit as render coordinates of a currently enabled viewport. With the parameter set to true the result would fit only after the viewport is reset to full window rendering.
- More checks for Stencilbuffer
- Improve render state resets
- Fix MRT handling
- Fix file search
- Add flag and method to disable clipping of the text to the gui element rectangle in GUI static text.
- addShadowVolumeSceneNode now replaces an existing shadow. One should avoid to call this method multiple times without changing any parameter, as it is quite time consuming and cannot recognize the duplicate calls.
- Add function IGUIEnvironment::removeFont (TODO: Does not remove the texture from cache so far)
- Fixed mem leak in mountfilesystem
- Update to libjpeg 8b, zlib 1.2.5, bzip2 1.0.6, libpng 1.4.4 and lzma from 9.20 SDK
- Functions in IMeshCache expecting IAnimatedMesh* parameters removed as similar functions with IMesh* can be used since a while. Fixes also problems when IAnimatedMesh* got upcasted to IMesh*. (thx @ Greenya for reporting)
- Fix blend states for MRTs
- 64bit targets for MSVC added
- The following functions will now use a "ISceneNode *" instead of a "const ISceneNode *":
ITriangleSelector::getSceneNodeForTriangle, ISceneNodeAnimatorCollisionResponse::getCollisionNode, ISceneCollisionManager::getCollisionPoint and ISceneCollisionManager::getCollisionResultPosition.
As collision functions often are followed by changing node positions users where so far forced to using const_casts (found by Greenya).
- Add vector3d::getAs3Values (patch provided by slavik262)
- Add function to SViewFrustum to get corners of the near plane (patch provided by Matt Kline, aka slavik262)
- ParticleFadeOutAffector::setFadeOutTime can no longer be set to invalid values
- ParticleFadeOutAffector uses now throughout u32 for fadeOutTime (found by greenya)
- Add missing access function CParticleSystemSceneNode::getAffectors() (seen by B@z)
- Add missing setters/getters for particle emitters (seen by B@z)
- Compile-defines can now be disabled from Makefiles/Projectfiles instead of having to change IrrCompileConfig.h each time.
- IGUITabControl::setActiveTab should only take IGUITab* and not IGUIElement* (thx to greenya for finding)
- Add new skin-colors: EGDC_GRAY_WINDOW_SYMBOL, EGDC_EDITABLE, EGDC_GRAY_EDITABLE, EGDC_FOCUSED_EDITABLE
- Disabled state is now extended to sub-elements
- Make disabled state for several elements more visible
- Bugfix: Icons in tabcontrol get now affected immediately by skin-changes
- Proper cleanup if visual not created
- XML reader bugfix
- Disable mipmaps in 2d mode everywhere
- Add xml example written by Yoran Bosman.
- Fix cursor cleanup under Linux when using multiple devices
- Fix collada parser
- Fix MRT reset under D3D
- Add a generic attribute interface for querying video driver attributes which are not necessarily of type bool. This interface allows to check certain supported features, such as the number of user clip planes, supported lights and textures, MRTs, and other things. The interface might change in the future, but it's fully functional already. The supported attributes are listed in the API docs of the function:
The following names can be queried for the given types:
* MaxTextures (int) The maximum number of simultaneous textures supported by the driver. This can be less than the supported number of textures of the driver. Use _IRR_MATERIAL_MAX_TEXTURES_ to adapt the number.
* MaxSupportedTextures (int) The maximum number of simultaneous textures supported by the fixed function pipeline of the (hw) driver. The actual supported number of textures supported by the engine can be lower.
* MaxLights (int) Number of hardware lights supported in the fixed function pipeline of the driver, typically 6-8. Use light manager or deferred shading for more.
* MaxAnisotropy (int) Number of anisotropy levels supported for filtering. At least 1, max is typically at 16 or 32.
* MaxUserClipPlanes (int) Number of additional clip planes, which can be set by the user via dedicated driver methods.
* MaxAuxBuffers (int) Special render buffers, which are currently not really usable inside Irrlicht. Only supported by OpenGL
* MaxMultipleRenderTargets (int) Number of render targets which can be bound simultaneously. Rendering to MRTs is done via shaders.
* MaxIndices (int) Number of indices which can be used in one render call (i.e. one mesh buffer).
* MaxTextureSize (int) Dimension that a texture may have, both in width and height.
* MaxGeometryVerticesOut (int) Number of vertices the geometry shader can output in one pass. Only OpenGL so far.
* MaxTextureLODBias (float) Maximum value for LOD bias. Is usually at around 16, but can be lower on some systems.
* Version (int) Version of the driver. Should be Major*100+Minor
* ShaderLanguageVersion (int) Version of the high level shader language. Should be Major*100+Minor.
- Fix getRotationDegrees
- Add creation parameter which allows to disable highres timers on Windows upon device creation.
- Several transparency setup bugs fixed. Now, alpha_vertex_blend uses proper alpha blending instead of a mixed add/alpha blending.
- Added a method to get real time and date in a human readable struct
- Fix add folder archives method to support files without trailing slashes.
- fix transparent_reflection_2_layers
- Add support for MSVC 2010
- Fix "unsupported format" warning on RTT usage
- Add IGUIElement::bringToBack (patch written by DtD, although I'm to blame for the function-name)
- In IGUITreeView "clearChilds" and "hasChilds" deprecated for "clearChildren" and "hasChildren" (thx @Greenya for noticing)
- add CGUIEditBox::getOverrideColor and CGUIEditBox::isOverrideColorEnabled
- add dimension2d::operator-
- Add logging level ELL_DEBUG
- Add parameter DisplayAdapter to creation params to allow selecting the card when more than one card is in the system.
- Added support for custom cursors
- WM_SYSCOMMAND - SC_KEYMENU message is now ignored (F10 and ALT in Win32 windowed mode)
- Avoid argument lookup ambiguity in swap when used in combination with stl. Using same trick as boost now and use 2 different template parameters in it.
- Add UseMipMap flag in material
- Add occlusion query support. Based on code by Nadro
- Add support for vertex_array_bgra extension in OpenGL driver. This will speed up OpenGL rendering quite a lot as it skips the silly color conversion thing we have to do otherwise.
- Replace raw xml char implementation with template struct in order to decouple the type from POD types. May also help for 64bit problems or changes needed there.
- Fixed bug causing memory access violation in string::replace found and patched by Nalin.
- Fix windows32 class unregister
- Add parameter to line2d::intersectWith to allow getting intersections outside the segments (thx Yoran).
- External windows are not destroyed anymore
- clamp values in getRotationDegrees to avoid nan values
- texture size in terrain mesh fixed
- ms3d fixes
- Add new matrix methods for infinite projection matrix
- Support new OpenGL 2.x shader creation
-----------------------------
Changes in 1.7.4 (not yet released)
- fixed getDepthFunction in IQ3Shader which always returned ECFN_EQUAL due to missing break (found by the cppcheck tool)
- STL loader improved to handle arbitrary file starts
- Compiler problem with gcc4.6 and big endian systems fixed
- Change include order to get example 21 compiling on MinGW.
- Irrlicht.dll has correct name now again (was named libIrrlicht.dll in c::b). This fixes bugreport 3518765 reported by tetho.
- Fix linker path in example 16 for C::B project file (linker path was in include path section).
- Link with opengl32 and gdi32 in Example 14 in C::B.
- Remove --no-export-all-symbols which got recently added to the windows build as that flag is not known by gcc on Windows.
- Fix bug in example 23 where Width and Height got mixed up. Thanks @Lazier for reporting.
- Fix for R5G6B5 converter submitted by XMight
- Fix conversion warning under mingw, found by Randajad
- Set EMF_NORMALIZE_NORMALS correct for syndey model in Demo (thanks @ Midnight for reporting).
- SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
- Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
-----------------------------
Changes in 1.7.3 (20.02.2012)
- SceneNodeAnimatorFlyCircle fixes serialization of RadiusEllipsoid (was writing Radius). Thx @ wing64 for reporting.
- Yield on Linux now uses nanosleep with 1ns as 0 isn't guaranteed to yield (thx @ hendu for finding + fix)
- GUIEditor attributes have now scrollbar to be editable
- Remove warning when compiling line2d::intersectWith with other types than f32.
- Document that triangle3d::isPointInside should not be used with int's.
- triangle3d::isPointInsideFast handles 'on-border' cases now consistently.
- Some more editbox fixes
- Harden Linux joystick usage, in case the driver returns illegal values
- Some more editbox fixes
- Harden Linux joystick usage, in case the driver returns illegal values
- Bugfix: vector2d.normalize() and vector3d.normalize() had returned wrong results with very short vectors since Irrlicht 1.5. Thanks to Willem Swart for Bugreport + testcase.
- Unknown keymappings now use the X11 keycode instead of 0 to make such keys at least usable in games.
- KeyMapping for KeyInput.Key on X11 ignores states like shift&ctrl now like on Windows.
- Additional keymappings for X11 (tested with german and us keyboards which seem to work now in all cases).
- Fix crash in multiline editbox when pasting several lines into it on Windows (found by Reiko)
- example 09.Meshviewer no longer catches keys while a modal dialog is open
- Fix SSharedMeshBuffer
- Fix right handed ortho matrix
- editbox no longer displays cursor when disabled
- editbox autoscrolling now at least works good enough to actually show the text which the user is typing in.
- editbox no longer moves text into next line when it fails wrapping creating senseless empty lines which mess up scrolling.
- Fix crash in editbox when scrolling up with empty first lines caused by textwrapping.
- Fix endianess conversions
- Changes to isPointInside
- Fix focus problem when removing an unfocused modal dialog reported by Reiko here: http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=44358
- Fix md2 normals problem again
- Add integer template specialization for vector3d::getSphericalCoordinateAngles which rounds angles to nearest integer now.
- Recalculate FrameRect and ScrollPos in CGUIEditBox when AbsoluteRect gets changed (thx @ serengeor for report + testcase)
- Fix crash in editbox
- Fix crash in editbox
- Fix 'k' in bigfont.png (thx @ Scrappi for reporting)
- fix serialization for CBillboardSceneNode, it had missed 2 color (thx for finding + patch from pc0de)
- EMIE_MOUSE_WHEEL messages now handled correctly in several gui-element when wheel isn't just 1.0 or -1.0 (thx @ Reiko for reporting)
- Fix problems in Textwrapping in CGUIStaticText. Did use wrong size and did ignore last word of the text (thx @ Reiko for bugreport)
- Fix crash in collada (.dae) loading
- Fix bug handling in case RTT is not properly created
- Fix SColorf interpolation
- Fix bug handling in case RTT is not properly created
- Fix SColorf interpolation
- Fix memory-leaks in example 22 MaterialViewer
- Fix array::erase which did destroy objects more than once when used with a range (thx @ RedDragCZ for reporting + testcase).
- Copy now all membervariables for CCameraSceneNode when cloning.
- ICameraSceneNode::IsOrthogonal is correctly serialized and cloned now.
- CGUIScrollBar passes unused mousemove-events now to parent element. Fixes focus-bug in ComboBox reported by REDDemon here: http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=43474&highlight=
- Fix getAngle and getAngleWith
- Fix clipping in CGUITabControl
- Fix clipping in CGUITable, reported by ceyron
- Skip bone weights and additional information in ms3d file if no joint was defined before.
- Fix mem leak in CImage, found by mloren.
- Fix tga writing, reported by xirtamatrix
- Tab-positions care now about the borders correctly
- TabControl now respositions it's tabs when setTabVerticalAlignment is changed (thx @ ceyron for reporting+testcase)
- CGUIModalScreen now no longer takes focus itself, but tries to give it first child when possible to fix modal windows losing focus all the time
- Modal screens no longer blinks when gui-elements call removeFocus on themself (thx @ yaten for reporting+testcase)
- Fix crash in multiline-editbox when selecting with mouse (thx @ ceyron for reporting and testcase)
- Fix render context creation for OpenGL under Windows.
- Fix the reset problem of d3d9 driver in combination with hardware buffers.
- Fix .x loader in case of unused vertices.
- Avoid empty line in texts with very large words. Text wrapping would introduce an empty line in earlier versions.
- Add a new attribute which assigns hw mapping hint to the whole Mesh.
- Allow creation of water scene node without mesh.
- Fix regeneration of skydome.
- Fix scene node type and factory support for volume light
- Q3 maps no longer crash when faces try accessing lightmaps which are not mentioned to be loaded in the file.
- Fix crash on null-readfile in texture loading
- Get particles saved before 1.7.2 (for example in irrEdit) working again (thx to smashly for problem reporting)
- Fix IGUIScrollBar setMax and setMin which had been restricted wrongly (reported by REDDemon)
- Fix CNullDriver::createImage - Creating the image from a texture-rectangle which doesn't start at 0,0 works now again (thx @ ceyron for bugreport+testcase)
- Menu no longer sets highlight state when clicking disabled menu-item (reported by Mloren)
- Treeview can now be disabled
-----------------------------
Changes in 1.7.2 (15.11.2010)
- Fix in d3d9 driver, which caused a crash when device creation failed. Bug found and fixed by Kostya
- Fix a wrong access to Value instead of ValueW. Found and fixed by vroad.
- Fix line loop rendering in d3d drivers. Fix submitted by tonic.
- Fix tar recognition in tar reader.
- Fix blend mode setup in OpenGL driver, when using the material2d override, as pointed out by Auria
- Avoid crash due to tcoords2 handling. Might need some more fixing to work correctly.
- Fix 2d line intersections. Has had problems with consecutive, but non-overlapping line segments and with overlapping line segments.
- Fix image creation from texture, found by dataslayer
- Fix crashes when taking Screenhots for DirectX in Windowed mode (thx to agamemnus for reporting)
- StaticText does now serialize the background color
- Fix gui-elements which didn't care when skin-colors changed. That made it impossible to make the gui slowly transparent (thx to PI for reporting).
Note that it couldn't be completely fixed for the SpinBox without breaking the interface, so for that element you have to enforce this by calling for example element->setValue(element->getValue()) once.
- Fix CXMLReaderImpl::getAttributeValueAsInt which returned wrong values with large integers (thx to squisher for finding)
- Fix compile problem in swap when using irrlicht in combination with stl (backport from trunk r3281)
- Add EGET_TREEVIEW_NODE_COLLAPSE and deprecate EGET_TREEVIEW_NODE_COLLAPS (found by greenya)
- Fix serialization in CParticleSystemSceneNode (found by B@z)
- Prevent crash in BillboardTextSceneNode when a custom font is used. Found and fixed by Nalin (bugtracker id: 3020487)
- Fix problem in animation system that currentFrame got messed up after long pauses (especially when not starting at frame 0).
See forum thread (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=210537#210537) and bug id 2898876.
Also remove BeginFrameTime in CAnimatedMeshSceneNode as it hasn't been used anymore since some time.
- Add framerate and current frame information for animations in example 09 and do some minor cleanup.
- Added another test for xml-reader.
- Fix serialization in several particle emitters and affectors (thx to Ion Dune for reporting).
- Fix compile-error on VS for vector2d::getAngleTrig when used with integers. (thx to greenya for reporting)
- Fix bug in dimension2d::getInterpolated that caused wrong results when used with integers as template parameter. (thx to Greenya for noticing a warning which made me look over this code).
- Remove 2 minor memory leaks in meshloaders (found by tool cppcheck-1.43)
- reduce file dependencies for IGUIEventReceiver.h (thx ngc92)
- Initialize GUIEvent.Element in several places (found by greenya)
- Add EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH and deprecated EGDS_MESSAGE_BOX_MAX_TEST_WIDTH (thx to greenya for reporting).
- Fix colors in irr files.
- Fix several places where "used" in core::string was used wrongly preventing some memory corruption
- Remove additional slash in pathnames in X-Loader
- Fix crash in CGUIListBox when environment was cleared on events
- Bugfix: Clear up depth-textures which could not be attached in OpenGL to prevent crashes.
- Fix arrowMesh boundingbox.
- Fix rounding problem in getInterpolated in the color classes
- Scrollbar in GUIListbox now uses default id -1 instead of 0
- Fix octree clipping issues.
- Fix obj loader.
- clone function fixes.
- Fix tooltips.
- Fix Ogre parser.
-----------------------------
Changes in 1.7.1 (17.02.2010)
- Fix octree with frustum+parent checks enabled (didn't clip at all before). Now using plane-checks instead of edge-checks for frustum-box intersection.
- Prevent that X11 selects larger resolutions in fullscreen even when perfect fits are available.
- Ignore setResizable also on X11 when we're fullscreen to avoid messing up the window mode.
- Work around a crash when pressing ESC after closing a Messagebox (found by Acki)
- Prevent borland compile warnings in SColorHSL::FromRGB and in SVertexColorThresholdManipulator (found by mdeininger)
- Improve Windows version detection rules (Patch from brferreira)
- Make it compile on Borland compilers (thx to mdeininger)
- Make sure that CAnimatedMeshSceneNode::clone calls the virtual updateAbsolutePosition for the new object
- Fix that clones got dropped too often when SceneNodes without parent got cloned (found by Ulf)
- Make sure TAB is still recognized on X11 when shift+tab is pressed. This does also fix going to the previous tabstop on X11.
- Send EGET_ELEMENT_LEFT also when there won't be a new hovered element
- Update docs for EGET_ELEMENT_LEFT and EGET_ELEMENT_HOVERED
- Fix tooltips: Remove them when the element is hidden or removed (thx to seven for finding)
- Fix tooltips: Make (more) sure they don't get confused by gui-subelements
- Fix tooltips: Get faster relaunch times working
- Fix tooltips: Make sure hovered element is never the tooltip itself
- Fix string::remove which got in an endless loop when remove was called with an empty string (found and fixed by Ulf)
- Correctly release the GLSL shaders
- Make sure we only release an X11 atom when it was actually created
- Fix aabbox collision test, which not only broke the collision test routines, but also frustum culling, octree tests, etc.
- Fix compilation problem under OSX due to wrong glProgramParameteri usage
- mem leak in OBJ loader fixed
- Removed some default parameters to reduce ambigious situations
---------------------------
Changes in 1.7 (03.02.2010)
- Implement minimize and deminimize under OSX.
- Define sorting order for vector2d and vector3d in operators <, <=, > and >= to fix bugs 2783509 and 2783510. Operators order now by X,Y,Z and use float tolerances.
- Ogre mesh 32bit indices fixed.
- Fix tooltips for gui-elements with sub-element like IGUISpinBox (id: 2927079, found by ArakisTheKitsune)
- ITimer no longer stops when started twice
- wchar_t filesystem updates under Windows.
- Joystick POV fixed under Windows, ids fixed under OSX.
- Some updates to skinned mesh for better bones support and scaling animations.
- OSX supports external window id in creation parameters now.
- Fix bbox collision tests.
- Updates for win32 key handling
- new convenience method for flat plane creation.
- Sky dome and other meshes use VBOs by default now.
- Speed up b3d loading for files with many frames, material color flags and vertex color support enhanced.
- Add hasType to IGUIElement as a dynamic_cast substitute.
- Add another parameter to IGUISkin::draw3DWindowBackground to allow getting the client area without actually drawing
- Add function getClientRect to IGUIWindow for getting the draw-able area
- Fix bug that menus on IGUIWindows with titlebar got drawn too high (id: 2714400)
- Renamed OctTree to Octree
- Allow getting a ConstIterator from a non-const core:list
- Add swap functions to irrMath and to the core classes.
- Deprecate map::isEmpty() and replace it with map::empty() to make it similar to other base classes.
- Allow to set the logging level already in SIrrlichtCreationParameters.
- Add clearSystemMessages to devices (implemented only for Linux and Win32 so far).
- Support changing the render window from beginScene also with OpenGL driver.
- Add getMaterial2D which allows to alter the 2d render state settings, such as filtering, anti-aliasing, thickness, etc.
- Fix incorrect cursorpos for resizable windows on Windows Vista (found and patched by buffer)
- Change the beginScene window parameter from void* to SExposedVideoData&. This will allow to manage contexts for OpenGL at some point.
- Add bzip2 and LZMA decompression modes for zip loader.
- Add OBJ_TEXTURE_PATH and B3D_TEXTURE_PATH to SceneParameters to allow setting texture-paths for obj and b3d.
- Irrlicht keeps now filenames additionally to the internally used names, thereby fixing some problems with uppercase-filenames on Linux.
- Bugfix: Mousewheel no longer sends EMIE_MOUSE_WHEEL messages twice on Linux.
- Use latest jpeglib
- refactoring: E_ATTRIBUTE_TYPE and IAttribute have now own headers
- CStringWArrayAttribute speedup
- SceneNodeAnimatorFollowSpline can now loop and pingpong
- Meshviewer.example got some fast-scale buttons.
- Support AES-encrypted zip files. Should work with 128, 196, and 256 bit AES. This addition also adds a new PRNG, SHA, and other algorithms to the engine, though no interface is yet added for them. The implementation of the encryption algorithms is provided by Dr Brian Gladman.
- flattenFilename and getAbsolutePath fixed and properly added at several places.
- Added geometry shaders for OpenGL. A first version of the code was submitted by Matthew Kielan (devsh).
- Bugfix: irrArray should no longer crash when using other allocators.
- Add MaterialViewer example.
- Texture activation now back in setMaterial, which simplifies writing external material renderers (OpenGL only).
- Checkbox uses now disabled text color when disabled.
- Changed colors for window-title caption to keep them readable when not active.
- Draw sub-menus to left side if they would be outside main-window otherwise.
- Give ListBox better defaults for the ScrollBar stepsizes.
- Double and triple click events now for each mouse-button. Old events for that got removed.
- Fix adding archives twice, which caused multiple archives of the same name and type covering each other. This one required a texture name change from using backslashes to slashes under Windows.
- Give access to texture mipmaps. You can provide custom mipmap textures upon generation, regeneration, and locking.
Make sure the provided data is large enough and covers all miplevels. Also the returned pointer (from lock) will only cover the smaller data of the mipmap level dimension chosen (level 0 is the original texture).
- Separate TextureWrap mode into U and V fields
- Add mirror texture wrap modes
- windows show now active/inactive state
- remove unneeded drop/grab calls found by manik_sheeri
- fix rounding problem in IGUIElements which have EGUIA_SCALE alignments.
- MessageBox supports now automatic resizing and images.
Deprecated EGDS_MESSAGE_BOX_WIDTH and EGDS_MESSAGE_BOX_HEIGHT
- Let maya-cam animator react on a setTarget call to the camera which happened outside it's own control
- new vector3d::getSphericalCoordinateAngles method.
- new triangle3d::isTotalOutsideBox method.
- Newly introduced VertexManipulator interface. This allows for very easy creation of vertex manipulation algorithms. Several manipulators, e.g. vertex color changer and transformation algorithms are already available.
- Parallax/normal map shader rotation bug under OpenGL fixed
- bump map handling for obj files fixed
- Fog serialization added
- New context menu features added
- Bounding Box updates for skinned meshes fixed
- The current FPS for an animated scene node can be queried now, added some variables to serialization
- Scrollbars fixed
- Fixed 2d vertex primitive method to correctly handle transparency
- Fullscreen handling has been enhanced for Windows, now proper resolution is restored on Alt-Tab etc.
- Cameras can now be added to the scene node without automatically activating them
Clone method added
- New video driver method getMaxTextureSize
- PAK archive reader fixed
- TRANSPARENT_ALPHA_CHANNEL_REF uses modulate to enable lighting
- LIGHTMAP_ADD now always uses add operator
- Some Unicode file system fixes
- destructor of irrString not virtual anymore, please don't derive from irrString
Some new methods added, for searching and splitting
Assignment operator optimized
- new lightness method for SColor
- draw3DTriangle now renders filled polygons, old behavior can be achieved by setting EMT_WIREFRAME
-----------------------------
Changes in 1.6.1 (13.01.2010)
- Fix pingpong for CSceneNodeAnimatorFlyStraight (found by gbox)
- Fix bug with IGUIEditBox where the cursor position is reset on text change.
- Make sure the window top-left corner on Windows is not negative on start so that Windows sytem-menu is always visible.
- Fix problem that the window did sometimes not get the keyboard focus in X11 in fullscreen. Add more debug output in case focus grabbing goes wrong.
- Fix screensize in videodriver when we didn't get the requested window size. This also prevents that gui-clicks are no longer synchronized with gui-drawing and elements can't be hit anymore.
- Bugfix: Prevent a crash when getTypeName was called for the guienvironment. EGUIET_ELEMENT got changed for this.
- Bugfix: Horizontal centered font with linebreaks draw now all lines. For example multiline TextSceneNodes work again.
- Bugfix: spinbox can no longer get in an endless loop due to floating point rounding error (found by slavik262)
- !!API change!! Disabled AntiAliasing of Lines in material default
Please enable this manually per material when sure that it won't lead to SW rendering.
- IGUIComboBox: clicking on the statictext displaying the active selection does now close and open listbox correctly. (Bug found by Reiko)
- Scrollbuttons in IGUITabControl adapt now to tab-height.
- Fix texturing of cylinder mesh
- Fix modal dialog position (found by LoneBoco: http://sourceforge.net/tracker/?func=detail&aid=2900266&group_id=74339&atid=540676)
- Fix DMF loading
- Fixing left+right special keys (ctrl, shift, alt) on Win32 (thanks to pc0de for good patch-ideas).
- Make stringarrays for enums in IGUISkin a little safer
- Add support for keys KEY_PRINT, KEY_HOME (on numpad) and KEY_NUMLOCK on Linux.
- Fix material handling in createMeshWith1TCoords
- Fix another (OldValue == NewValue) before drop()/grap(), this time in CTextureAttribute::setTexture.
- Fix LIGHTMAP_LIGHTING for D3D drivers.
- AntiAliasing disabled for debug render elements.
- Bugfix: CGUIToolBar::addButton does no longer mess up when no image is set and does now actually work with the text.
- Fix ninja animation range which got messed up a little when b3d animations got fixed (thx gbox for finding)
---------------------------
Changes in 1.6 (23.09.2009)
- Added IFileSystem::createEmptyFileList, exposed IFileList::sort, addItem and added getID
- Fix MAKE_IRR_ID so it can be used from outside the irr namespace (Micha's patch)
- Renamed some methods in ISkinnedMesh to match the official Irrlicht naming scheme according to createXXX()
- Change debug data to draw using lines instead of arrows, which is much faster. Patch by pc0de
- Fix a bug with FPS camera animator causing stutters. Patch by FuzzYspo0N
- Fix scrolling controls in CGUITabControl
- Fix a bug when getting optimal texture size in D3D drivers, by Jetro Lauha (tonic)
- Added EGDS_TITLEBARTEXT_DISTANCE_X and EGDS_TITLEBARTEXT_DISTANCE_Y to GUI, submitted by FuzzYspo0N
- Fix for UFT8 filenames displayed in file dialog, patch by MadHyde.
- Added const method for array::binary_search, potentially slow as it doesn't sort the list!
- Add support for scaling button images.
- Irrlicht can now come with multiple device types compiled in, the device to use is selected by SIrrlichtCreationParameters.DeviceType. This defaults to EIDT_BEST which automatically select the best device available starting with native, then X11, SDL and finally the console.
- Added support for EXP2 fog distribution. This required a change in the setFog parameters where now an enum value instead of the bool linear is given.
- IFileSystem changes:
- Renamed the following functions-
IFileArchive::getArchiveType to getType
IFileSystem::registerFileArchive to addFileArchive
IFileSystem::unregisterFileArchive to removeFileArchive
IFileArchive::openFile to createAndOpenFile
- New enum, E_FILE_ARCHIVE_TYPE. getType on IArchiveLoader and IFileArchive now both return this.
- IFileSystem::addFileArchive takes a parameter to specify the archive type rather always using the file extension. IFileSystem::addZipFileArchive, addFolderFileArchive and addPakFileArchive now use this but these functions are now marked as deprecated. Users should now use addFileArchive instead.
- Added TAR archive loader.
- The ZIP archive loader can now load gzip files, combined with the TAR loader this means Irrlicht now has native support for .tar.gz
Currently this must be done in two calls, for example:
- Fix highlighting in IGUIEditBox where kerning pairs are used in the font. For example in future italic, OS or other custom fonts.
- IOSOperator::getTextFromClipboard returns now const c8* instead of c8*
- Support for copy&paste on linux (X11) added (fixing bug 2804014 found by Pan)
- bugfix for 2795321 found by egrath: Don't rely anymore on broken XkbSetDetectableAutoRepeat.
- bugfix: CMountPointReader::openFile no longer returns true for empty files. Corresponding test added.
- Direct3D now also uses screen coordinates in 2d mode, just like OpenGL. This means that screen coords are going from 0..ScreenWidth and 0..ScreenHeight instead of -1..1.
- ALT+F4 keypress now closes Windows SDL device
- Allow Direct3D drivers in SDL, patch by Halifax
- Added compiler error when attempting to compile with VC6.
- Use setWindowTextA in Windows device for WIN64 platform, posted by veegun
- ELL_ERROR log events are now created when shaders fail to compile or link, reported by Halan
- irrList now uses irrAllocator, fixed by Nox
- Added IGUIWindow::setDraggable and IGUIWindow::isDraggable, by Nox
- Added SGI RGB file reader by Gary Conway, for loading Silicon Graphics .rgb, .rgba, .sgi, .int and .inta textures
- Renamed setResizeAble to setResizable
- Added new device method minimizeWindow which minimizes the window (just as if the minimize button has been clicked).
- SkyDome is now serialized correctly
- Added PLY mesh reader and writer
- Ensure ListBox on combo box doesn't hang off the bottom of the GUI root, by Matthias Specht
- Made IGUIElements recalculate clipping rectangle after setNotClipped, reported by Aelis440
- Bug fix for the combo box where it showed white text instead of skin color before being focused, fix posted by drewbacca
- EGDS_MESSAGE_BOX_HEIGHT is now honoured, bug reported by Spkka
- Fixed a bug in the edit box where events are sometimes sent to a null parent, reported by Sudi.
- Coordinate system fix for OpenGL in SDL device
- Added generic console device. You can now use Irrlicht to create and manipuate graphics on a shell where no graphics hardware
or windowing system is available. To enable it uncomment #define _IRR_USE_CONSOLE_DEVICE_ in IrrCompileConfig.h
- The console device can now present images from the software drivers and display them as ASCII art in the console
- By default it replaces the default font in the skin, to prevent fonts from being huge.
- Fixed problems with changing cursor visibility while mouse is pressed on windows
- Allow control of background drawing in listbox
- Allow control of drawing background and titlebar in windows
- Improved window serialization
- Add mouse events EMIE_MOUSE_DOUBLE_CLICK and EMIE_MOUSE_TRIPLE_CLICK (thx to Ulf for patch proposal)
- Set "ButtonStates" for mouse events also on Linux (was only for Windows formerly)
- Add Shift+Control states to mouse event
- bugfix (2003238): serialize modal screens
- allow stacking modal screens
- allowing hiding modals
- replace many IsVisible checks with virtual isVisible() checks in IGUIElement
- bugfix: reset selected row when clearing CGUITable
- adding events EGET_EDITBOX_CHANGED and EGET_EDITBOX_MARKING_CHANGED
- prevent editbox from recalculating its textbreaking each frame
- let spinbox react on each textchange without waiting for enter to prevent getting value changes without corresponding EGET_SPINBOX_CHANGED events.
- new test for zipreader
- prevent dropping objects accidentally in many set functions
- Reversed change in vector3d::normalize.
Works now again as documented and a corresponding test has been added.
Does fix bug 2770709 (https://sourceforge.net/tracker/?func=detail&aid=2770709&group_id=74339&atid=540676)
- Animations can now be paused by setting the fps to 0.
- Avoid fp-precision problem in getPickedNodeBB (see also http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=33838&highlight=).
This change might also fix the problem with picking nodes found by aanderse (http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=32890&highlight=)
- implemented isALoadableFileFormat ( File *file ) for the Archive Loader
- PixelBlend16 and PixelBlend16_simd are working for the new rules.
Burning checks this flag and when set, it bypasses the power2 size check,
which is necessary on 3D but can be avoided on 2D.
used on fonts automatically.
- added Support for Destination Alpha
- Direct3D8
- added 32 Bit Index Buffer
- compile for XBOX
- Direct3D9
- fixed crash on RTT Textures DepthBuffer freed twice.
added deleteAllTextures to destructor
- NullDriver
- removeallTextures. added setMaterial ( SMaterial() ) to clean pointers for freed textures
- ISceneCollisionManager::getSceneNodeAndCollisionPointFromRay() allows selection by BB and triangle on a heirarchy of scene nodes.
- Triangle selectors created from animated mesh scene nodes will update themselves as required to stay in sync with the node.
- IVideoDriver has methods to enumerate the available image loaders and writers.
- Octtree scene nodes are now IMeshSceneNodes rather than ISceneNodes, and so you can call getMesh() on them.
- New scene parameter B3D_LOADER_IGNORE_MIPMAP_FLAG to ignore the often missing mipmap flag in b3d files. If this parameter is true, the old pre Irrlicht-1.5 behavior is restored.
- Added Mipmap LOD Bias attribute to MaterialLayer.
- Added ColorMask support to selectively disable color planes on rendering.
- Added support for all available depth test functions.
- Add an outNode to getCollisionPoint() that returns the scene node that was hit, as well as the triangle.
- Initial support for Alpha To Coverage, needs some more fixing until it works on all supported platforms.
- Added support for Anti-Aliasing modes per material
- Added an ICollisionCallback to ISceneNodeAnimatorCollisionResponse, to inform the application that a collision has occurred. Thanks to garrittg for this.
- Added an startPosition parameter to createFlyCircleAnimator() to allow starting the animator at any position on the circle.
- Many uses of dimension2d<s32> changed to dimension2d<u32>, including IImage, ITexture and screen dimensions. You will have to change (at least) createDevice() calls to use dimension2d<u32>
- Added Doublebuffer flag to SIrrCreationParameters, for better finetuning
- Added Stereo-Framebuffer support for professional OpenGL cards
- Added IFileSystem::createMemoryWriteFile() to allow creation of an IWriteFile interface that uses an application supplied memory buffer.
- Added an IVideoDriver::writeImageToFile() overload that can take an IWriteFile interface.
- (Internal) Replaced CMemoryReadFile with CMemoryFile, that also implements an IWriteFile interface.
- Added an optional light manager to the scene manager to allow the user application to turn lights on and off during scene rendering. This can be used to produce "zoned" lighting. See example 20.ManagedLights.
- Added a method to flip the Y movement of the FPS camera.
- The Anisotropy filter can now be set to the AF value per texture layer. So no forced MAX_ANISOTROPY anymore. .irr files will probably fail, though.
- AntiAlias parameter in SIrrCreationParameters is now an u8 value specifying the multisampling level (0 for disabled, 4,6,8, and others for anti-aliasing)
- D3D devices use DISCARD for windowed renderbuffers now, can be faster.
- Changed behavior of PixelBlend16() / PixelBlend16_simd() so that they treat the 1 bit alpha of the source pixel as boolean, i.e. they draw either the source pixel, or the destination pixel, rather than "blending". (Issue revealed by the fix to IVideoDriver::makeColorKeyTexture()).
- IVideoDriver::makeColorKeyTexture() bug fixed so that only alphas, not whole texel colors, are zeroed. An optional parameter allows using the old (buggy) behavior for backwards compatibility.
- position2d is now a synonym for vector2d. position2d is therefore marked as deprecated, although it's unlikely to be removed.
- ISceneNodeAnimator now has a hasFinished() method.
- ISceneNodeAnimatorCollisionResponse exposes the target node. Setting the node again resets the last position, allowing the node to be teleported.
- Add a hitPosition out parameter to ISceneCollisionManager::getCollisionResultPosition() - this is a (small) API breaking change.
-------------------------------------
Changes in version 1.5.2 (16.12.2009)
- Properly check boundaries in getFont and setFont.
- Reinit values in the driver when scene manager is cleared.
- Normals handling fixed in createMeshWithTangents, existing normals are not always destroyed now.
- Fix terrain smoothing, bug found by loverlinfish
- SOLARIS recognition removed. Please specify the platform define manually. This allows for compilation under sparc/Linux and sparc/Solaris
- Some uninitialized variables fixed
- FreeBSD joystick support added (for Debian package)
- Fix cursor problems found by buffer and by rvl2 as described in http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=34823&highlight=
- OSX/XCode updates
- MS3D loader bug fixed
- Float parse bug fixed
-------------------------------------
Changes in version 1.5.1 (05.08.2009)
- Make sure a missing font does not corrupt the skin.
- Fix getAngle in vector2d as suggested by xray. This has only a minor impact on s32 vectors.
- bugfix: CGUIFont::getCharacterFromPos regards now kerning (found by Arras)
- Add support for range fog in some OpenGL versions.
- Fix for shadow volume removal, submitted by vitek.
- Avoid using X11 autorepeat to deal with broken X11 versions.
- Speculars are properly exported into mtl files now, instead of corrupting them.
- Binary type loading in attributes fixed.
- bugfix: Use make_lower throughout for spritebank filenames (found and patched by Ion Dune)
- STL loader fixed: Right-handedness corrected, normals and bboxes are correctly added now.
- bugfix: CUnZipReader::openFile no longer returns true for empty files. Corresponding test added.
- Big endian issues in .x loader fixed.
- HSLColor methods repaired.
- copyToScaling fixed.
- Fixed problem with highlighting menus when mouse was outside sub-menu area.
- bugfix (2796207): menu acted (wrongly) on left-click down instead of left-click up.
- bswap16 fallback macro fixed
- getBaseName fixed to work correct with dots in filenames.
- static method isDriverSupported allows for simple check of available drivers.
- Some defines added to check for the Irrlicht version of the library.
- Make sure all renderstates are properly initialized
- Wrong size for main depth buffer fixed.
- Fix 3ds shininess to the allowed range.
- Fix loading of Collada files from irrEdit 1.2
- Remove texture pointers after texture clear.
- WindowsCE pathnames fixed.
- Some virtuals are now overridden as expected.
- Incomplete FBOs are properly signalled now
- Update to libpng 1.2.35, fixed issues on 64bit machines with system's libpng.
- Fixed wrong grab/drop in setOverrideFont
- Added draw2dRectOutline
- rectf and recti added.
- Fix ALPHA_CHANNEL_REF to a fixed check for alpha==127 as expected.
- Fixed OSX device bug where screen size was not set in fullscreen mode.
- cursor setVisible changed to be called less often.
- OpenGL version calculation fixed.
- OSX device now supports shift and ctrl keys.
- Fixed ambient light issues in burningsvideo.
- device reset for d3d fixed when using VBOs.
- Fix dimension2d +=
- MD2 mesh loader: Now uses much less memory, reduced number of allocations when loading meshes.
- OpenGL render state (texture wrongly cached) fixed.
- Fixed animator removal.
- Checnged collision checks for children of invisible elements to also be ignored (as they're actually invisible due to inheritance).
- Fix terrain to use 32bit only when necessary, make terrain use hw buffers. Heightmap loading and height calculation fixed. Visibility and LOD calculations updated.
- Some mem leaks fixed
- FPS camera resets the cursor better
-----------------------------------
Changes in version 1.5 (15.12.2008)
- Construction calls for FPS camera changed to take speed in units/milliseconds, just as the setSpeed method does.
- Code::Blocks workspaces added. C::B projects (using gcc) now output to /lib/gcc and /bin/gcc, when built on either Windows or Linux.
- Added a test suite in the /tests directory. This can be used to perform regression tests, and should be updated with new tests to verify fixes or validate new features.
- Changed the preferred way of altering light node's radius: Use the new member methods of ILightSceneNode instead of directly modifying the SLight structure.
- Changed the initial attenuation back to (0,1/radius,0). To override this value simply change the attenuation in the SLight (lightnode->getLightData().Attenuation.set(x,y,z))
- Dirty fix for OSX device setResizable and a bug fix to do with resizing the device.
- Terrain heightmap and texture were flipped in order to draw them as expected (looking onto the terrain from high above will just look like the actual texture/heightmap).
- Significant internal change to the way that FPS camera jump speed and collision response animator gravity interact. The behavior is now much more realistic, but it will require you to adjust your jump speed and gravity.
- Skybox won't be culled anymore by nearplane or farplane.
- BBoxes of animated meshes (skinned meshes) are updated again.
- Lost devices (as found with D3D) are properly handled now. So the screen can be resized or minimized without crashing the app.
- Renamed IGUIElement::setRelativePosition(const core::rect<f32>& r) to IGUIElement::setRelativePositionProportional(), as it has radically different functionality from setRelativePosition(const core::rect<s32>& r)
- Added IGUIElement::setRelativePosition(const core::position2di & position) to set a new position while retaining the existing height and width.
- Many Collada fixes. z_up coords are supported now, texture coords are properly loaded. Transparency is supported.
- Camera scene node rotation and target can now be bound together so that changing one automatically changes the other (as the FPS camera has always done). See ICameraSceneNode::bindTargetAndRotation()
- Removed the extra libpng files for OSX. OSX now also uses the default libpng.
- Enhanced PCX support with some more color formats and write support.
- Fixed LMTS problems with extra data in files.
- Removed VS6 .dsw / .dsp project files - VS6 is no longer supported.
- Particles can be scaled during animations. Particle scaling needs to happen in the emitter now, instead of in the Particle system scene node. Deprecation methods will guide the user.
- ISceneNode::setParent and addChild now updates node SceneManager pointers if the node was from another SceneManager.
- Basic support for joystick input events on Windows, Linux, SDL and OSX. Tested with wired Logitech and Thrustmaster wired controllers and XBox 360 wireless controller ( http://tattiebogle.net/index.php/ProjectRoot/Xbox360Controller/OsxDriver )
- Fixed scaled octree nodes being incorrectly frustum culled.
- FSAA under OpenGL and Win32 added. Now all hw drivers and platforms should support it.
- Unlimited RTT fix for D3D systems. Depth buffers are now shared if possible, otherwise a new depth buffer is generated. In order to save VidMem one should create RTTs starting with the largest one.
- Avoid RTTs with nonFBO-support under OpenGL which are larger than the screen. Since we rely on rendering into textures in this case we need to clamp the size by the screensize.
- Fixes for getAbsoluteFilename under Linux in order to return a filename instead of en empty string in case the file doesn't exist.
- Use absolute path names when creating / finding textures.
- Font tool implementation for Linux with xft, by Neil Burlock.
- Support for normals and UV coords from DeclData in .x files.
- Modified line2d<T>::intersectWith() to cover more cases.
- Added IVideoDriver::drawPixel().
- Moved the window pointer from endScene to beginScene, as this is required for OpenGL support of external window pointers.
- Fix for terrain culling.
- Added minimize button to win32 window (if resizable)
- Major API change: RTTs are now created via addRenderTargetTexture instead of createRenderTargetTexture, which allows to retrieve them from the texture cache, but also changes the way of removing the RTTs, and especially one must not drop the pointer anymore.
- WindowsCE-Bugfix
- disableFeature can be used to override feature support of the video driver.
- draw2DImage can now also handle RTTs under OpenGL (which were flipped before).
- Ogre mesh format fixes for proper texture support.
- Added .obj mesh writer.
- Some core::string constructors made explicit to avoid unintended conversions. Just add core::stringc() or core::stringw() around the old code to avoid warnings.
- IdentityMatrix is now a properly defined global, with external visibility on all platforms.
- Bugfix for context releases with glx 1.3 on error.
- Removed constraints for sizes of the terrain scene node.
- Support for 32bit indices in a special MeshBuffer class.
- isBetweenPoints return true now even for the begin and end points, i.e. line segments are now including their start and end.
- Fix XML reader creation for non-existing files and invalid callbacks.
- Changed interpretation of MaterialTypeParam==0 in transparent materials. Now it's consistent with all other values, but one has to set the value to 0.5 to get the old behavior (slightly faster rendering, but no smooth borders)
- Replaced transformBox by transformBoxEx in some internal methods to avoid major malfunction of the transformations.
- Fix use of zip file inside zip files.
- Avoid loading textures which are not used by the mesh in b3d loader.
- Added scaleTCoords methods to MeshManipulator
- Enable use of other meshes for shadow mesh generation, can be used to speed up shadow generation and rendering for complex meshes. Patch based on a version by tonic.
- Fixed usage of SIrrCreationParameters struct, which dind't have copy constructor and assignment operator anymore, since the Irrlicht version string was made const.
- New glext.h (version 41) and glxext.h (version 20) supporting OpenGL 3.0
- Added support for read-only locking of textures. Can speed up those calls.
- Added support for locking RTTs under OpenGL.
- Implementation of UserData events from system events.
- ICameraSceneNode::setIsOrthogonal replaced by a parameter to setProjectionMatrix.
- All meshbuffers are now dynamically allocated to avoid problems with grabbed buffers, which may be deleted before the last drop happens (due to static memory allocation).
- Enhanced scene graph traversal with example from rogerborg.
- FPS camera disabling of event receiver works better now.
- scene deserialization allows for a user defined callback after a new scene node is created.
- Fixed tangent mesh loading from .irrmesh files.
- OpenGL clamp modes are now properly set.
- IMeshManipulator::transformMesh renamed to transform, also supports meshbuffers now.
scaleMesh renamed to scale, supports meshbuffers as well.
- vector3d::rotationToDirection added.
- New mesh generators for cone and cylinder.
- Hardware accelerated Vertex and Index Buffer support finally integrated into Irrlicht. Thanks to a resource handling idea by Klasker and the almost immediate implementation by Luke, Irrlicht now supports VBOs under OpenGL and D3D.
Hardware buffers make rendering the same vertices much faster. To use this feature with a mesh, simply set a usage type via MeshBuffer->setHardwareMappingHint(scene::EHM_STATIC). The driver will upload the vertices and indices on the next draw and reuse this information without the need to upload it each frame.
Vertex and Index buffers can also be updated separately, which is e.g. useful for the terrain node's LOD.
- Changed FBO creation according to Nadro's patch. Seems to have zbuffer problems currently.
- Update to libpng 1.2.29
- Compiler flag for PerfHUD support added.
- recalculateNormals and tangent space creation enhancements by ryanclark.
- Added getColorFormat methods for device and driver, returning the color format of the device's window and the driver's framebuffer.
- Added isFullscreen method.
- Added isWindowFocused and isWindowMinimized methods.
- Screenshots are now always made from the frontbuffer, so always the last completely rendered image is captured. However, overlapping windows may corrupt those parts of the screenshot (as was previously happening with d3d already).
- New device creation parameter to disable Irrlicht's system event handling.
- New device creation parameter to specify depth bits.
- New device creation parameter to request alpha channel in framebuffer.
- Draw2DImage methods under OpenGL now also handle RTTs correctly.
- Fixed RTT bug which lead to strangely clamped textures.
- Speed improvement for screenshots on some Intel cards under OpenGL.
- My3D file loader fixed.
- Terrain mesh performance increased.
- Fixed mem leak in cube node.
- Compiler errors in shaders won't corrupt the material renderer list anymore.
- Quake3 shader files now have properly working texture matrices again.
- FPS and Maya style cameras are now standard cameras with a special animator.
- ISceneNodeAnimator now inherits IEventReceiver
- New method ISceneNodeAnimator::isEventReceiverEnabled, returns false by default
- CCameraSceneNode::OnEvent passes events to animators with enabled event receivers
- ISceneNodeAnimatorCameraFPS and ISceneNodeAnimatorCameraMaya interfaces for changing camera settings at run-time.
- Changed SExposedVideoData to use void* instead of s32. Fixed 64bit portability.
- Added support for front face culling.
- Fix for HLSL shaders in one file.
- Billboard::setColor bug fix by rogerborg.
- Scene node sorting uses squared distances now.
- Enhanced API for hte math functions. Many of them will now return a reference to *this for chained method invocations.
- prevent .x loader to load .xml files.
- AntiAlias support for OSX device.
- Period character handling bug fixed.
- New filesystem methods for filename handling.
- added getVideoModeList and getDesktopResolution support for OSX
- Octree supports tangent meshes now. Some performance improvements for the generation.
- Fix mouse pointer and fullscreen mode problems in OSX.
- Make cube and sphere scene node a mesh scene node (for access to the cube/sphere mesh).
- Support for normal maps in 3ds files. Mem leak fixed. Loading for files with keyframe data fixed.
- BillboardTextSceneNode is now an IBillboardSceneNode and an ITextSceneNode.
- Support for external windows under Linux.
- .X loader bug fixes.
- Better debug visualization for MeshSceneNodes.
- Fixed bug in material serialization when using the NullDriver.
- Fix for Win32 CursorControl::setVisible
- Support for LWO files.
- Support for Collada 1.4 files.
- Better and faster terrain smoothing by Frosty Topaz.
- Fixed a performance bug in ISceneNode constructor reported by izhbq412
- Win32 device now makes the cursor invisible immediately when setVisible(false) is called.
- Command line tool for mesh conversion added.
- Added volume light scene node
- .obj files now won't duplicate vertices unnecessarily. This allows recalculation of smooth normals and other things, and is also faster when rendering. The loading is a little slower now.
They also support normal maps and texture clamping now. Group support added, can be ignored via scene manager attribute scene::OBJ_LOADER_IGNORE_GROUPS.
Normals will be calculated if the file doesn't provide them.
- Better fix for hires timers on dual core machines by RogerBorg
- added Initial Windows Mobile 6 Version.
- Windows Mobile 6 SDK
- Visual Studio 2005
- Added checks to avoid buffer overrun in b3d loader. Enabled normals calculation in all cases, previously it was not done for lightmapped meshes.
Fixed transparency support. Added mipmap creation flag support which might disable mipmap creation too often. Should be checked.
- Burningvideo: MipMap Selection repaired
- renamed private Driver function getTextureSizeFromImageSize to getTextureSizeFromSurfaceSize
- Added collision manager speedup patch by RogerBorg.
- D3D drivers now releases the IImage member from initialization, thus freeing lots of memory. The image is accessible via the driver anyway.
- SDL device character handling enhanced.
- MeshBuffers can now access the elements of the S3DVertex base class in all vertex types directly, instead of using the getVertices() pointer access. This simplifies simple mesh manipulations as it does not require a switch statement over all vertex types.
- More OpenGL renderstate bugs fixed
- GLSL changes for setting arrays. Also allow for only pixel or vertex shader to be set.
- Bugfix for removeChild in AnimatedMeshSceneNode.
- Some bugfixes for Joint handling and skinned meshes. Added getJointCount in IAnimatedMeshSceneNode and isStatic in ISkinnedMesh.
- Added WAL image format support based on the original loader by Murphy McCauley, written for Irrlicht around version 0.7.
- OpenGL RTTs now also support alpha values.
- New method driver->getVendorInfo() to query information about the actual hardware driver.
- Fixed somed CQuake3ShaderSceneNode problems.
- Changed BurningsVideo internal Vertex Format. version changed to 0.39
- SceneManager:
Removed the seperate rendering states for quake3 Shader Scene Nodes.
Nodes are now solid or transparent. ( but still more states are needed )
- GUI:
- Editbox didn't draw children
- Checking IsEnabled is now consistent across all GUI elements
- Move window to front bug fixed.
- Disabling the BMP loader now compiles without the built-in font
- Added setTextAlignment to IGUIComboBox
- Avoid dropping skin pointer which is in use.
- Better warning for fonts without regions (sometimes wrong file is loaded by the user).
- Fixed a bug in CGUISpriteBank which caused a crash when a non-looping animated sprite reached the end of its animation.
- Modal screens no longer flash invisible children when rejecting a focus change.
- Finally added StarSonata patch with table element and TabControl additions. Table is based on MultiColor listbox by Acki, and has loads of changes by CuteAlien.
-------------------------------------------
Changes in version 1.4.2 (22.9.2008)
- Unified the handling of zwrite enable with transparent materials on all hw accelerated drivers. This means that all transparent materials will now disable ZWrite, ignoring the material flag.
There is a scene manager attribute, though, which will revert this behavior to the usual SMaterial driven way. Simply call
SceneManager->getParameters()->setAttribute(scene::ALLOW_ZWRITE_ON_TRANSPARENT, true) and set the SMaterial flag as desired.
- Some changes for texture matrices in q3 shaders.
- Added BlindSide's irrAllocator patch for proper TextureMatrix release under Win32 with any CRT library.
- Added VC9 project files.
- Added getEmitter for particle system scene nodes.
- Fixed rounding problem in getScreenCoordinatesFrom3DPosition
- Fixed Software renderer color flicker, was a shift bug I believe.
- irrMap fix to make root node always black, by rogerborg.
- Possible core dump fixed in particle system node, by CuteAlien.
- Mem leak fixed in b3d loader.
- Avoid double rendering of child nodes of joints.
- Support for d3d draw2dimage clipping by CuteAlien.
- Fixed an animation transition bug, pointed out by wuallen.
- Fixed the major problem with OpenGL drivers, that claim to be 2.x compatible, but don't offer NPOT support (well, they do, but only in sw rendering...). Now we check for the extension string only.
- Fixed .obj loader bug which inserted vertices in wrong buffers.
- Fixed minor mem leak in Linux device.
-------------------------------------------
Changes in version 1.4.1 (04 Jun 2008)
- MD3 meshes are movable again.
- New JPG image writer version by Vitek.
- Texture matrix fixes, all methods should now work as expected.
- Some container methods now return the this pointer after member functions have been called on them, in order to allow call chains.
- Some new methods for SColorf access, for uniform API of all colors.
- bug fix for SMaterialLayer equality check. Did only check the TextureMatrix pointers, instead of the matrices.
- New getMesh method for the SceneManager, which takes an IReadFile instead of a filename.
- Support for flags _WIN32 and _WIN64 in addition to WIN32 and WIN64 added, this simplifies usage of Irrlicht headers under MSVC.
- Fixed a crash in GUIMeshViewer
- new string method findLastChar by Halifax
- GUIEditBox got the 1 pixel shift after click fixed.
- Some debug visualization has been fixed for skinned meshes
- Undef PI symbol before declaring core::PI to avoid compilation problems
- SAnimatedMesh now properly returns properties of Meshes[0] if those exist, such that it should be usable in place of an SMesh again.
- Fixed 2d initialisation in opengl and d3d9 driver. This should fix problems with render states mixing up and distrubing, e.g. skin effects.
- Avoid a crash when passing setSkin the current skin
- Fixed current frame calculation for non-looped animations. Bug reported by greenya.
- Fixed bug in CBillboardSceneNode::setColor, reported by rogerborg
- Fixed clipping of menu, toolbar and combo box GUI elements, reported by greenya
- setNotClipped now applies all the way up to the root of the GUI environment, rather than just to the next parent
- Made new scene managers use the original manager's GUIEnvironment, reported by MasterGod
- Fixed IGUICheckBox::setEnabled, reported by Dorth
- Fixed the FollowSpline animator to avoid crashes when only one waypoint is given.
- OpenGL VolumeShadow now uses glPolygonOffset to avoid zbuffer artifacts.
- Fixed meshbuffer corruption in append methods.
- Fixed mem leaks in irrArray.
- Fixed minor bugs in ISceneNode and ISceneManager.
- Fixed the MeshCache handling of GeometryCreator meshes.
- Terrain LOD bugfix.
- Some Collada 1.3 loader enhancements and bug fixes.
- Fixed a bug in CGUISpriteBank which caused a crash when a non-looping animated sprite reached the end of its animation.
- Enhanced the .obj loader with the patch from ryanclark. This allows for recalculation of smoothed normals of the mesh, also should decrease the tri count on some meshes.
- Avoid the global Logger to be destroyed too early.
- Function setbit was renamed to setbit_cond to avoid name clashes.
- Fixed .x animations with multiple references to the same joint from different meshes. Fixed texture path problems.
- Support for Milkshape 1.8 files, also with multiple weights per joint.
- The config file now also supports _IRR_OSX_PLATFORM_ and _IRR_USE_OSX_DEVICE_. This allows to use the Linux device (X11 support) on OSX.
- Avoid terrain scene node crash when heightmap cannot be loaded.
- Speed improvements for WaterSceneNode.
- FlyCircle animator now also works for upvectors (Direction parameter) which are not (0,1,0). Is also faster now, since most calculations are done on init. Thanks to Dorth for working on this.
- The 3ds loader correctly creates a texture matrix when texture tiling properties are found in the file.
- Fix for S3DVertex comparison operators. Used some wrong logic.
- Bugfix getCurrentRenderTargetSize in D3D drivers. Due to signature differences a wrong virtual method was chosen. Thanks to Jiang for finding it.
-------------------------------------------
Changes in version 1.4 (30 Nov 2007)
- Major API change: All material properties which are available per texture layer (curently texture, texture matrix, texture filters, and texture wrap mode) are separated into a new struct SMaterialLayer. You can access them via the array TextureLayer[] in SMaterial. The texture matrix methods in SMaterial are still alive, and also textures can be accessed via methods in SMaterial now. But still, many places in user code need some update (usually changing material.Textures[i] to material.TextureLayer[i].Texture etc.)
- Major API rewriting for proper const usage. Now, most getter methods are const and so are the larger parameters and return values. Moreover, many methods taking only unsigned numbers now use u32 instead of s32 in order to recognize this limitation from the method's signature.
- the base class for nearly all Irrlicht classes has been renamed from IUnknown to IReferenceCounted
- Fixed Skybox texture orientations. They are now displayed non-flipped. Existing skyboxes have to be changed, though: Exchange left and right texture. Textures from Terragen and other tools can be used directly, now. Quake maps will also need the right/left exchange.
- Added ITexture::isRenderTarget()
- Added STL mesh file format reader and writer.
- Added IMeshManipulator::createMeshWelded which creates a copy of the mesh with similar vertices welded together.
- Irrlicht now has its own file format for static meshes. It is based on xml and has the
extension .irrmesh. Irrlicht is able to write every IMesh to this file format, and of course to
read it back again.
- Irrlicht is now able to write Meshes out into files. Use ISceneManager::createMeshWriter()
to obtain an interface with which you can write out meshes. Currently, an own .irrmesh
file format is supported as well as the COLLADA file format.
- fixed the keyboard autorepeat difference between Linux and Windows. Thanks to denton we now have only KeyPressed events on both systems in case of autorepeat.
- Added several new particle emitters and affectors from IrrSpintz. Also some new getter and setter methods were added.
- D3D transparent materials do not disable zbuffer writing automatically anymore. This has to be done by the user to keep those settings configurable.
- OpenGL texture now also require a regenerateMipmapLevels() after unlocking. This is the same as for d3d devices now.
- Point sprite support in the driver. Point sprites use just one 3d vertex and a size to create a textured billboard on the GPU. This can provide fast particle systems, especially in combination with shaders. The proper particle extension will follow later on as it needs some more refactoring.
- OpenGL 2D drawing accuracy fix by tuXXX
- Added OnResize and getCurrentRenderTargetSize to the software video drivers.
- Added Spot light type for dynamic lights. Note that both position and direction for all dynamic lights are now determined by the LightSceneNode, the SLight attributes are only used for internal purposes.
API change! One can easily work around this change by setting the LightSceneNode's Position and Rotation instead of the SLight's. This change won't provoke a compile error, though, and can hence go unrecognized besides the visual problems.
The lights use a default direction (0,0,-1) which is rotated by the usual scene node transformations and can hence be modified by scene node animators.
A change in the Radius usage can lead to strange artifacts. Just increase the Radius in this case. further handling of Radius is to be discussed.
- Added per pixel fog support for OpenGL.
- Added driver support for user defined clip planes, based on mandrav's patch.
The OpenGL version is more picky about ModelView matrices, so it's best to set the projection plane at the time it is used.
- .obj files now load relative indices correctly. Collada files load textures.
- A new MeshBuffer implementation is publicly available. It supports a shared vertex list for all MeshBuffers, used for MS3D meshes.
- MeshBuffers can recalculate their BoundingBoxes on their own now, no need for MeshManipulators. New append methods help to merge MeshBuffers. take care that the types match!
- The new texture generation mode is working. With ETCF_NO_ALPHA_CHANNEL textures are generated without ALPHA bits reserved.
- D3D9 hardware mipmap updates are re-enabled, problems should be reported.
- In some cases fullscreeen modes under win32 should have a better frame rate now.
- Fixed the hillplane mesh to work with non-quadratic dimensions as well. Changed the interface also, so use a u32 dimension to specify the tilecount now.
- Hires timers are disabled on windows systems with more than one CPU, due to bugs
in the BIOS of many multi-core motherboards. To enable hires timers in your project,
use SetProcessAffinityMask to set to use only one CPU before creating the device.
- OpenGL render targets now the same way up as the other drivers. If you have
written opengl shaders that use render targets then you'll need to change your
texture coordinates accordingly.
- Fixed some OpenGL renderstate stuff. setBasicRenderstate returns with
active texture layer 0. The material renderer must return from OnUnset
with the same active texture layer. The alpha test is disabled and the
texture mode should be GL_MODULATE.
- Fixed CSoftwareTexture2::getOriginalSize, reported by CaptainPants. Added a
new method CSoftwareTexture2::getMaxMipMapSize to return the size of the largest
mipmap, which is used by texelarea instead of getOriginalSize.
- Changed parameter order of addArrowMesh and added default parameters such
that it's enough to set the color (or even just the name).
- Fixed bugs in MY3D and OBJ loader.
- Added IMeshCache::clearUnusedMeshes(). This allows the user to remove
meshes that are sitting in the mesh cache but aren't used by any scene nodes.
This is useful for example when changing levels.
- Added IUnknown::getReferenceCount()
- createDevice now reports errors if the driverType is unknown, previously it
created a window but populated it with a null driver without any warning.
- Fixed a bug in CBillboardTextSceneNode::setText where the old text was not
cleared.
- Changed irrArray::linear_search to use the == operator rather than <
This may be slower in some cases, but it no longer returns false positives
when searching arrays of classes that override the < operator but
!(x<y) && !(y<x) does not necessarily mean x==y (vectors, positions etc).
- Fixed getSize/getOriginalSize method inversion in OpenGL textures.
- Added per texture-layer filter settings, i.e. one can choose to filter
only chosen texture layers. If all layers are set to the same value the
convenience function material.setFlag(EMF_BILINEAR_FILTER, boolean) can be
used, TRILINEAR_FILTER and ANISOTROPIC_FILTER do work, too. In all other
cases material.BilinearFilter[i] (resp. TrilinerFilter[i] or
AnisotropicFilter[i]) shall are to be used.
- Added adjustable Attenuation for dynamic lights. This allows to change the
intensity of a light based on its distance. The default attenuation changed
from (0,1/radius,0) to (1,0,0) which means no effect by distance. Good
values for distance effects simply add small values to the second and third
element.
- Fixed a typo to do with 2nd light vectors in opengl parallax and normal map
renderers.
GUI:
- Fixes to menu and listbox (de)serialization, and custom listbox colors by CuteAlien.
- Added EGET_ELEMENT_CLOSED GUI event type. Absorb this event to cancel closing a window.
- Added _IRR_COMPILE_WITH_GUI_ to allow compiling without the GUI.
This is useful if you use another GUI system (ie CEGUI) or are using Irrlicht
inside another window. You will have to supply an external IGUIFont if you wish
to use font scene nodes as there will be no GUI environment available to load fonts.
- Added 7 more symbols to the built-in font and skin.
reason: to continue searching reverse on a specific position
(parameter is checked against boundaries )
- added operation reciprocal_squareroot to irrmath.
core::reciprocal_squareroot = 1.f / sqrtf ( x )
changed the core::vector3df normalize vector.
specialized templates are not allowed in irrlicht currently, so it's only for f32 for now.
a C function and a NVidia Version are in irrmath.h
- add Primitives to CFPSCounter
and changed interpolation to 1500ms instead of 2000ms
and rounding to ceiling..
- added Interface setAmbientLight to ISceneManager
it was a Bug, because SceneManager always calls Driver therefore AmbientLight has to be set in SceneManager.
- changed GUIFont & FontTool to support kerning ( on a global basis )
very basic mode.. apply an offset for position
useful for example if you want to apply an outline stroke in your favorite
and therefore let the texture grow.
and to correct the border back on drawing, specify the parameter in IGUIFont.
this is quite useful if you want to use more artistic fonts.
default = 0
better kerning would need a seperate coordinate set for each symbol.
- changed MD2_FRAME_SHIFT to lower framerate
-> lower IPol
problems can occur if somebody uses hardcoded frame-numbers instead
of Animation name...
- changed spelling "frustrum" to "frustum"
-> changed also SViewFrustrum.h to SViewFrustum.h
- changed Parameter AutomaticCulling from bool to enum E_CULLING_TYPE
to support more than two culling modes.
added Frustum culling ( it's a copy & paste from the octree )
added initial bounding sphere
used for culling point lights..
- Added getSystemMemory and getProcessorSpeedMHz for Windows and Linux to the OSOperator, submitted by Vitek.
-------------------------------------------
Changes in version 1.2 (29 Nov 2006)
- Added Solaris/Sparc port (basically some compiler define statements). Irrlicht and the examples should compile out-of-the-box on Suns with the usual Makefiles and gnumake.
- Added texture matrix support for hardware accelerated drivers. This allows for efficient texture coord manipulations for complete meshes at once.
- Multisampling with OpenGL under Linux added
- Non-power-of-two textures are left unscaled if the driver supports such textures.
- new draw2DImage method that speeds up drawing many quads from the same texture. Font drawing is improved by this under OpenGL.
- TGA files are now always correctly flipped and loaded if compressed. All PNG color formats are now supported, including correct alpha handling.
- 3ds mesh loader fix in texture loading, now loads some textures that were not loaded before, but might introduce problems with very recent files. OGRE mesh loader bugfixes and lightmap support. Several B3d mesh loader updates. Obj and mtl loader enhancements.
- A new compile flag (IRR_OPENGL_USE_EXTPOINTER) allows Irrlicht to either use OpenGL extension function pointers or direct OpenGL calls.
- OpenGL now uses frame buffer objects for render targets larger than the screen, supplied by Mandrav
- Split ESNRP_LIGHT_AND_CAMERA passes into ESNRP_LIGHT and ESNRP_CAMERA to fix a problem with lights being rendered before cameras in OpenGL (thanks again to Vitek for finding this). ESNRP_LIGHT_AND_CAMERA is now deprecated.
- Fixed many OpenGL render state problems which were related to wrong texture states. The textures are now enabled and disabled by the material renderers in OnSetMaterial. Also enabled the texture state cache which helps preventing texture changes just as the one for D3Dx. Thanks to hey_i_am_real for some good hints on where the problem was located.
- Added compile flag _IRR_COMPILE_WITH_X11_ which is by default enabled. Disabling the flag removes all X11 dependencies from Irrlicht and allows for a headless Linux Irrlicht server - added by request :-)
- Win32 OpenGL driver tries to use the requested bpp size.
- Default texture format is now A8R8G8B8 if not explicitly specified. This fixes some color artifacts with lightmaps. Bugfix submitted by hey_i_am_real.
- In OnPostRender all transformations were taken as relative and multiplied with the root transformation matrix every time due to a wrong check for the real root node. This shoudl increase render performance for scenes with lots of (invisible) nodes.
- Added correct list copy constructor.
- Color selection dialog added.
- New GUI skin "Burning Skin".
it's a black & white skin. look elegant on true-color.
and looks ok on 1-Bit ( e.g. no vertex color in burnings video )
- GUIStatic text is correctly grayed out if disabled.
- Added getHeight method for terrain node submitted by Spintz. It calculates the height from the base mesh instead of requiring ray casts and collision detection and is much faster.
- New methods core::lerp to linearly interpolate two floats and SColor.getLuminance to calculate luminance of RGB color.
- MAJOR API CHANGE:
Fixed matrix access methods mat(x,y). These were previously said to be (row,column) but actually were (column, row). This lead to some confusion and made their use quite tricky. Irrlicht code is updated for the new method, but applications will silently fail now (i.e. compile without errors, but not working as expected).
- Update to zlib-1.2.3
- Fixed vertex alpha handling in DirectX drivers.
- Image writers fixed and working (at least for little endian systems).
- VSync under Linux fixed and correctly working.
- New os::Byteswap::byteswap methods which can be used for byteswapping (endianess correction) in mesh loaders and image loaders.
- New video driver feature to check for multitexture feature.
- Direct3D drivers update the devicelost variable if reseeting failed with this return code.
- VideoModeList under Linux is correctly filled now. No glX calls are made if GLX extension is not found - only software drivers are available then. RandR extension can be enabled with a new compile flag in IrrCompileConfig.h, either instead of XF86VidMode or in addition.
- Big Endian support for MS3D loader.
- Apfelbaum software renderer: basic mipmap support (per triangle), switch for using w-buffer instad z-buffer ( default on )
- Better FPU support: Changed various fpu-call's in whole project (main reason to use faster float to int conversion on x86. ( fistp ))
- changed Visual Studio 7.1 vcproj project config "Release Fast FPU" to __fastcall in /QIfist
- CGUIFont added True Alpha Font Support. (currently it's a little hack, but it'a good starting point. Fonts are back compatible. To use the new feature make first pixel half transparent in the font file.)
- Scolor: replaced s16 color with u16 color, replaced s32 color with u32 color to get rid of unnecessary arithmetic shift
- Colorconverter: X8R8G8B8toA1R5G5B5, set Alpha High, minor: A1R5G5B5toA8R8G8B8 changed if (a) to conditional set
- The scene manager now sets an ambient light color when calling ISceneManager::drawAll().
You can influence this by calling ISceneManager::setAmbientLight(). That light color
is also stored when saving .irr files via ISceneManager::saveScene().
- Loaded COLLADA files which contained only one single mesh now behave like all the
other loaded meshes, and the #meshname workaround has been removed.
- File lists are now sorted.
- Dynamically checking the OpenGL version now instead of at compile time to call the supported methods of the executing machine, not that one of the compile host. This should fix the extension check and the automatic mipmap update.
- Fixed vertex alpha handling of 2D images with OpenGL.
- Default depth buffer under Windows now 24bit to avoid zbuffer fighting.
- Fixed light count in OpenGL.
- Particle emitters can now be enabled/disabled via a new method.
- Sky dome is rotatable just like the sky box.
- Rotation animator can be applied to several nodes now, before it only rotated the first one it was applied to.
- Support for drawing other vertex primitive lists such as triangle strips.
- Default specular color is white again, thus simply enabling shininess is enough to get speculars.
- Some .x loader and animator improvements. Vertex color support.
- isActive now also work under Linux.
-------------------------------------------
Changes in version 1.1 (06 Aug 2006)
- New example to show some features of the .irr format
- Added support for making screenshots in all video drivers and a general
possibility to save any IImage to several file formats.
Some image writers are not yet implemented. As a testcase screenshots
are now available in the demo by pressing F9.
This code was contributed by Travis Vitek.
- Changed EAMTS_OCT to EAMT_OCT.
- Improved .3ds and .obj file importers.
- Added support for .b3d (Blitz Basic) submitted by Luke Hoschke and
.pak (Quake archive) files submitted by skreamz.
- Added sky dome implementation contributed by Anders la Cour-Harbo (alc).
- In addition to the Cube scene node (formerly test scene node) there is now also a sphere scene node available,
with an adjustable amount of polygons. Use ISceneManager::addSphereSceneNode to create it.
Thx to Alfaz93 for making available his code on which this node is based on.
Note that both nodes now use default material settings, e.g. lighting is enabled by default.
- Fixed Linux keyhandling for many keys.
- The aspect ratio has been inverted in the matrix, which means when setting a new aspect ratio
for cameras, set it to screen.width/screen.height now instead of screen.height/screen.width
as previously.
- added support for reading/importing binary .x files.
- .ms3d and .x normals are now correctly transformed in animations, bounding
boxes are slightly better transformed, but not yet correct.
- Added possibility to load and save Irrlicht scenes to and from xml files via
ISceneManager::saveScene and ISceneManager::loadScene. Note that not all
scene nodes are supported yet, but most features should already work.
- Bounding box of the Skybox corrected (set to null)
- The SMaterial structure now supports 4 textures. (Currently ignored by the renderers and their materials.)
- Test scene node renamed to CubeSceneNode.
- Added scene node animator factories. This is the same as scene node
factories, but for scene node animators.
- Added scene node factories. This is an interface making it possible to dynamicly
create scene nodes. To be able to add custom scene nodes to Irrlicht and
to make it possible for the scene manager to save and load those external scene nodes, simply
implement this interface and register it in you scene manager via ISceneManager::
registerSceneNodeFactory
- Introduced IMeshSceneNode interface with the possibility to set readonly materials to make
it possible to use the mesh materials directly instead of overriding them. In this way
it is possible to change the materials of a mesh causing all mesh scene nodes
referencing this mesh to change, too.
- Added possibility to load OGRE .mesh files directly, thanks to Christian Stehno who contributed
a loader for this.
- Merged with Irrlicht 1.0 for MacOS
- Added a method getType() to ISceneNodeAnimator.
- There is now a system to serialize and deserialize attributes of scene nodes. In this way
it should be quite simple to to expose the attributes of your scene node for scripting
languages, editors, debuggers or xml serialization purposes.
- Irrlicht containers and strings now have allocators, making it possible to
use them across .dll boundaries.
- Changed the name of scene nodes from wide character to to char* for speed and memory reasons.
- Renamed IStringParameter class to IAttributes and enhanced it to be able to
serialize its content into and from xml.
- Textures now have a method getName().
- Added the methods getTextureCount() and getTextureByIndex() to IVideoDriver.
- Most classes now derive virtually from IUnknown.
-------------------------------------------
Changes in version 1.0 (19 Apr 2006)
- Irrlicht now will load d3d 9 dlls (like d3dx9_27.dll) manually if needed. If you compile irrlicht
with an SDK which needs one of these dlls, irrlicht will now also start up on a pc without
these Dlls installed. Note that now these dlls will also only be loaded if your application
uses shaders. If the dlls are missing, shader support will be disabled.
- The Apfelbaum Software Software Renderer now works in 32 bit and is capable of rendering dynamic
lighting as well as doing alpha channel blending.
- Added support for the Code::Blocks IDE (http://www.codeblocks.org)
- It is now possible to draw temporarily to foreign windows, by specifying a window handle when
calling IVideoDriver::endScene(). Note: This does not work in fullscreen mode and is not
implemented for all devices (only for D3D8, D3D9, Software1 and Software2, and only for Windows).
In addition, you can also specify the source rectangle to present.
- Picking is now more accurate and also works with view ports and better with orthogonal cameras.
- Scene Nodes now have an additional flag, IsDebugObject. This denotes if a
scene node is a debug object. Debug objects have some special properties,
for example they can be easily excluded
from collision detection, picking or from serialization, etc.
- Scene Nodes now have the possibility to return their type using
virtual ESCENE_NODE_TYPE getType().
- Improved support for orthogonal rendering: Skyboxes and billboards can be
used with orthogonal cameras now, too.
- Fixed a bug in collision
- Fixed some marshalling bugs in Irrlicht.NET
- Some fixes to make gcc 4 happy.
- Fixed a bug which caused the engine to crash when trying to use the
apfelbaum software rasterizer with linux
- Several improvements to Irrlicht.NET, for example string output for vectors, viewfrustrum access
for cameras, drawing of bounding boxes, support for orthogonal cameras.
- Updated DMF importer to support new DeleD functionalities, solid materials will now be
shown correctly again in Irrlicht. Thanks to Salvatore "Il Buzzo".
- Added a method to change the return value of ICameraSceneNode::isOrthogonal
- Improved md2 animation playback
- Fixed the REFLECTION_2_LAYER materials. Now also works for OpenGL. Had to change the parameters
of this material (for all drivers), the reflection is now at texture 2 and the diffuse map at
texture 1. This was the other way round before.
- Added examples for csharp, visualbasic, delphi.net and boo.