Some patches to fix or enhance Irrlicht version 1.1
Irrlicht is an open-source
3D engine. This web page provides a number of patches which allow
to easily change the source code of Irrlicht. If there are reasons to revert
these changes, it is usually possible by reverse application of the patch. Thus,
new features can be safely applied and tested.
What is a patch ?
Please do yourself and me a favor and read the information found on this
introductory page if you never applied patches before. Especially when using
Windows as there are some peculiarities (of course ;-)
Origins of the patches
Some of the changes have been extracted from the latest release of
Irrlicht-Spintz which contains some
brilliant improvements and some of the bug fixes posted in the Irrlicht forums.
Irrlicht forum thread
Some of the larger patches were developed by myself. Previous versions were
also posted to the forums or send directly to Niko. I removed the stuff which
is now part of Irrlicht 1.0 such that all patches should work again.
The patches
Here are the patch files and a short description for each of them. I reordered
them, mainly based on their effects.
For patches concerning mesh file formats or image file formats please visit
the File Format patch page.
Bug fixes
Feature enhancements
Feature enhancements with additional files (Add to your Project/Makefile!)
- 3rdPersCam.patch Add 3rd person camera, needs keyInterface.patch. From IrrSpintz. New file: C3rdPersonCameraSceneNode.cpp
- fire.patch Add fire scene node (CZestmyr). New file: CFireSceneNode.cpp
- moreparticles.patch Add some more particle generators and apply some fixes. Requires newparticles.patch. New files: CParticleAnimatedMeshSceneNodeEmitter.cpp, CParticleCylinderEmitter.cpp, CParticleGlitterAffector.cpp
- newparticles.patch New particle nodes and affectors from IrrSpintz. Requires particle-spintz.patch. New files: CParticleAttractionAffector.cpp, CParticleMeshEmitter.cpp, CParticleRingEmitter.cpp, CParticleRotationAffector.cpp, CParticleSphereEmitter.cpp
- GUILoadBar.patch Adds LoadBar to set of GUI elements. Fixed a missing enum type. New file: CGUILoadBar.cpp
Optimizations
- pointinside.patch Optimized intersection check.
- loopOpt2.patch Adds support for memset and memcpy to some loops and propagates already existing optimizations to other loops where also applicable.
- SoftwareRenderer.patch Moves some redundant code from the software renderer modules into the main class. Version two removed a not properly working byte copy replacement. Did not swap bytes.
Misc
Currently not working patches
- 32bit.patch Change vertex indices to 32bit and add triangleFan support. Please ignore a fail in MS3D loader if you did not apply the ms3d-performance patch. Requires planarMapping.patch (to avoid an error while patching, one error can be ignored, comming from vertex2t patch).
- animations.patch Add new animations interface.
- s3dVertexTangents.patch New constructor for S3DVertexTangents.
- flystraight.patch Enhancements for FlyStraight animator with callbacks. Needs animations.patch and animCallback.patch.
- OpenGLExtension.patch Changes the way availability of OpenGL extensions is checked. Second version to honor the need for whitespace after the string to avoid wrong recognition.
- camera.patch Fix wrong camera handling if camera is a child by festini. Needs sceneNodeTransform.patch. Irrlicht forum thread
- transform.patch Reduced computations of transformation matrix.
- terrain.patch Introduction of tiled terrain.
- floatFPS.patch Changes frames per second interface to using floats
- WallWarnings.patch Fix reorder warnings of gcc in order to be able to compile Irrlicht with -Wall without thousands of useless warnings.
- OpenGLARB.patch Untested patch to fix the Linux OpenGL_ARB problem and add shader program support. First version had some ifdef's unchanged, now fixed.
Removed patches
- Added in 1.2: Wrong projection matrix.
- Added in 1.1: Optimized ms3d loader.
- Added in 1.1: Optimized some bit shifting in SColor and some more loop optimizations in conjunction with SColor enhancements
- Added in 1.1: Fix for small lines around pressed buttons from Alan Tyndall/Jonas Petersen
- Added in 1.1: Use default FPU precision for DirectX.
- Added in 1.1: Make the Makefile a little more structured and more compatible (Linux only). Fixed a bug in dependency creation!
- Added in 1.1: Add support for pak archives, by skreamz. New file: CPakReader.cpp
- Added in 1.1: Error with large png files. Fix variable size from IrrSpintz.
- Added in 1.1: Wrong type for some variables possible due to missing template usage.
- Added in 1.1: Fix terrain MaxLOD check.
- Added in 1.1: RTT textures can be locked.
- Added in 1.1: Fix missing OpenGL shininess. From IrrSpintz.
- Added in 1.1: Fix shadow ID. From IrrSpintz.
- Added in 1.1: Make string from float.
- Added in 1.1: Fix hill plane rendering. Alternative version submitted by Isometric God with additional dimension fix. Supersedes Spintz' version.
- Added in 1.1: The fix in Irrlicht 1.0 did not use the available functions anymore. This adds them back.
- Added in 1.1: Fix typos in comments
- Added in 1.1: Fix for rotation matrix.
- Added in 1.1: Fix Aspect which was calculated inversed. Added projection matrix fix also needed for this.
- Added in 1.1: Correctly use the parameter in listbox method.
- Added in 1.1: Fix getAlpha from SColor.h, returned second red bit before.
- Added in 1.1: Add method to return the scale vector (last column).
- yzAngle.patch: Add another vector3d method. Added as getHorizontalAngle some time ago.
- Fixed in 1.0: Add window creation also for software2 renderer (by terefang)
- Partially added in 0.14: New lights (spot and directional). Some advanced features from IrrSpintz not supported, but patch file not working anymore.
- Added in 0.14: Add anisotropic filtering.
- Added in 0.14: Allow 2DImages to use alpha channel.
- Added in 0.14: Correctly wrap GUIStaticText at text end.
- Added in 0.14: Fix some pointer problems on 64 bit architectures.
- collision.patch: Replaced by new spintz collision patch (remove before applying the new one)
- particle.patch: Replaced by new spintz particles (remove before applying the new one)
- SetParticleSpeed.patch: Replaced by new spintz particles (remove before applying the new one)
- Added in 0.12: Add texture support for MS3D files (by atomice)
- Added in 0.12: Adds ExposedData for Linux to access the windows ID of the main Irrlicht window.
- Added in 0.11: Enable antialiasing for D3Dx (by Chips, from afecelis files)
- fixed in 0.11: LinuxMipMaps, parallaxmapping, HLSLmemfault
- fixed in 0.10: CameraFPS, irrHeader, D3DAlphaOP, getcwdLinux, irrList
- XMLReader.patch. Adds single quotes support to XML reader (by Murphy). Not really integrated, but 0.10 accepts both quote signs (and even arbitary mix of the two which is usually not allowd in XML, though!)
- matrixRotate.patch from IrrSpintz for matrix4::rotateVect removed. According to jox Irrlicht 0.9 is doing it correctly.
Older patches are found for
Irrlicht 1.0,
Irrlicht 0.14,
Irrlicht 0.12,
Irrlicht 0.11, and
Irrlicht 0.10.
I have some other patches related to projects using Irrlicht as well. Try
MyWorld.26 Patch or MyWorld.66 Patch for Irrlicht+ODE project by Lofing
making it compilable again (at least for me with Linux/gcc3). Latest version works without changes (Irrlicht forum thread)!
The 3D editor by lantis needs a patch to work with Linux.
Acki made a ragdoll implementation for Irrlicht, here are the patch files. Irrlicht forum thread
[Back to ParSys]
Christian Stehno (hybrid)
E-Mail
(last updated: September 6th, 2006)