Some patches to fix or enhance Irrlicht 1.0
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.
Another source of patches is the enhanced Irrlicht engine of
IrrlichtNX.
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
- GUICloseHandler.patch Allows to enable or disable the default handling of the GUI window close button
- Makefile.patch Make the Makefile a little more structured and more compatible (Linux only). Fixed a bug in dependency creation!
- gtk_external_window.patch Fix support for external windows under Linux by Mandrav. Requires the LinuxDevice* patches. Irrlicht forum thread
- collisions.patch New collision method. Irrlicht forum thread
- rotationMatrix.patch Add methods for creating rotation matrices by festini. Irrlicht forum thread
- sceneNodeTransform.patch Add methods for scene node transformations (rotate, translate) by festini. Needs rotationMatrix.patch. Irrlicht forum thread
- clamp.patch Allow to enable/disable OpenGL texture clamp. From IrrSpintz.
- animCallback.patch Add event system for animation status changes.
- animatorDelete.patch Remove animator upon deletion event. Needs animCallback.patch.
- flystraight.patch Enhancements for FlyStraight animator with callbacks. Needs animations.patch and animCallback.patch.
- followspline.patch Enhancements for FollowSpline animator with callbacks. Needs animCallback.patch.
- particleattract.patch Add option to reverse particle attraction. Requires newparticles.patch.
- keyInterface.patch New keypress interface to change game controls without recompiling.
- particle-spintz.patch Major improvements to particle system.
- 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).
- guiskintype.patch Ability to change skin type.
- mesh2T.patch Method to convert mesh to 2TCOORDS type. Needs s3dVertex2T.patch.
- s3dVertex2T.patch New constructor for S3DVertex2T.
- animations.patch Add new animations interface. Not working yet
- s3dVertexTangents.patch New constructor for S3DVertexTangents. Not working yet
- planarMapping.patch Allow makePlanarTextureMapping to use 1st or 2nd texture coordinates. Changed parameter order compared to IrrSpintz due to API incompatability. Hence, old tools will correctly compile and run (!) without changing their code.
- arrayOps.patch Allows to access an array as a matrix. Simple helper function needed by Katoun's water node.
- KatounWater.patch Updates the WaterSceneNode to new one posted by katoun. Does not look that good anymore since Irrlicht 0.11, though. API CHANGE!
- beginScene.patch Call beginScene without parameters and get/set attributes instead. API CHANGE!
- LinuxDevice.patch Adds support for XShmem under Linux which should improve performance of the software renderer. Also adds support for 24bit and 32bit visuals. Support for XDBE extension is included but disabled (Double buffer support under X). A new compilation options lets you disable the XF86 extensions if compiling on a system without XFree86.
- LinuxDeviceUpdate.patch Some additions to the Linux Device, primarily on creating the XWindow, and fixing some problems from my earlier patches which have to be installed. Includes also some ideas from IrrlichtNX. Includes the core dump fix for non-software renderer. Requires LinuxDevice.patch
Feature enhancements with additional files (Add to your Project/Makefile!)
- pak.patch Add support for pak archives, by skreamz. New file: CPakReader.cpp
- 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
- ms3d-performance.patch Optimized ms3d loader.
- 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.
- SColor.patch Optimized some bit shifting in SColor and some more loop optimizations in conjunction with SColor enhancements
Misc
IrrlichtNX(++) patches
Here is a first round of patches from IrrlichtNX. Please note that these are
patches for original Irrlicht files, NOT to patch IrrlichtNX. They
rather add IrrlichtNX features to Irrlicht.
Currently not working patches
- 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
- 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 light (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 0.14,
Irrlicht 0.12,
Irrlicht 0.11, and
Irrlicht 0.10.
My Video Texture provides video playback with the avifile library on textures. The interface is based on Emil Halim's video texture.
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: August, 12th, 2006)