Some patches to fix or enhance Irrlicht 0.14
Irrlicht is an open-source
3D engine. Since there is no CVS support, yet, enhancements and bug fixes
have to be maintained by other means while the next release is prepared by
the Irrlicht developer. 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 ?
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 0.14 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.
Bug fixes
- dotXStrings.patch Fix parsing of strings with spaces. Irrlicht forum thread
- 3ds.patch Fix some bugs and limitations of the 3ds loader. Now transparency, vertex colors and other things are supported. Added support for an undocumented but quite often found version chunk which prevented to load most 3ds files found on the web. Some more rather severe problems fixed, and in the same time new features added. If any material had more than one texture defined, only the last one was taken, although this is usually for bump mapping etc. Now all extra textures are stored and some of them can already be used (I don't know if I use the correct Irrlicht materials, though). Ambient color is now stored as ambient in Irrlicht, not as emissive as before. Seems to be better. Added OpaqueMap support and keyframe reading. No animations yet, and no real benefits from this structure (due to missing understanding of the data found). Irrlicht forum thread
- cgeometry.patch Fix hill plane rendering. Alternative version submitted by Isometric God with additional dimension fix. Supersedes spintz' version hillPlane.patch Irrlicht forum thread
- fov.patch Wrong calculation of projection matrix. Irrlicht forum thread
- png.patch Error with large png files. Irrlicht forum thread
- rectType.patch Wrong type for some variables possible due to missing template usage. Irrlicht forum thread
- terrain1.patch Fix terrain MaxLOD check. Irrlicht forum thread
- RTT_D3D.patch RTT textures can be locked. Irrlicht forum thread
- aabbox.patch aabbox too large. Irrlicht forum thread
- software2linux.patch Add window creation also for software2 renderer (by terefang) Irrlicht forum thread
- clamp.patch Fix OpenGL texture clamp.
- oglShininess.patch Fix missing OpenGL shininess.
- animatedmesh.patch Fix missing API methods for animated meshes.
- shadowid.patch Fix shadow ID.
- collisions.patch Many bugfixes to collision handling. Irrlicht forum thread
- fpu.patch Use default FPU precision for DirectX. Irrlicht forum thread
- winKeyboard.patch Fix input focus with existing Win32 windows.
- png_sizet.patch Fix variable size.
- quaternion.patch Fix assignment operator. Irrlicht forum thread
- my3d-16.patch Bring My3D Loader to latest version 3.16 (by ZDimitor) Irrlicht forum thread
- my3d-material.patch Additional material changes by ZDimitor, no D3D9 yet
- OpenGLLightmapAlpha.patchFix for OpenGL driver where Lightmap materials disappear in conjunction with transparent vertices, posted by ZDimitor.
- LinuxKeyboard.patchFixed some problems of the Linux keyboard events. Now many keys are working, some strange garbage characters are not printed anymore. Tested with GUIEditBox. No real Unicode support yet, although some parts have been included already.
- irrString.patchMake string from float. Irrlicht forum thread
Feature enhancements
- gtk_external_window.patch Fix support for external windows under Linux by Mandrav. Irrlicht forum thread
- binaryX.patch Add support for binary X format by Tiberius. 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
- image.patch Add some details to Image class by festini. Now with fix from CuteAlien included.Irrlicht forum thread
- compressedTexture.patch Add support for compressed textures by festini. Needs image.patch. Now also compiling under Linux. Irrlicht forum thread
- 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 animCallback.patch.
- followspline.patch Enhancements for FollowSpline animator with callbacks. Needs animCallback.patch.
- particleattract.patch Add option to reverse particle attraction.
- 8bitcolor.patch Add support for 8bit Bitmaps.
- yzAngle.patch Add another vector3d method (from Arras), used with particle generators.
- keyInterface.patch New keypress interface to change game controls without recompiling.
- 32bit.patch Change vertex indices to 32bit and add triangleFan support. Please ignore a fail in MS3D loader if you did not apply that patch also.
- animations.patch Add new animations interface.
- guiskintype.patch Ability to change skin type.
- mesh2T.patch Method to convert mesh to 2TCOORDS type. Needs s3dvertex.patch.
- s3dvertex.patch New constructor for S3DVertex2T.
- 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.patchAllows to access an array as a matrix. Simple helper function needed by Katoun's water node.
- KatounWater.patchUpdates the WaterSceneNode to new one posted by katoun. Does not look that good anymore with Irrlicht 0.11, though. 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.patchSome 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 NX.
- LinuxQuit.patch The Linux device patches were missing a check if SoftwareImage was really used. This resulted in core dumps upon quit. Fixed with this 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.
- rdtarga.patch An enhancement to libjpeg which becomes necessary if libjpeg is used for Targa support
Feature enhancements with additonal files (Add to your Makefile!)
objmtl.patch Add MTL file support for OBJ files. Original version by looneychewy. Added several new texture map features, fixed the color inversion, enabled transparency, fixed some file parsing glitches. Multiple materials per group and even materials without groups etc. now supported, also negative indices. Added a patch by mandrav to fix some path issues while loading material files and textures. Added a second one by mandrav fixing the coordinate system. Irrlicht forum thread
cob.patch Add COB file format, supports ascii and binary format and some materials. Original version for ascii cob by Morrog. Irrlicht forum thread and Irrlicht forum thread for original version
dxf.patch Add DXF file format, support for 3d elements only (3DFACE, VERTEX, POLYLINE). Fixed parsing problems with DOS line ends. Irrlicht forum thread
ase.patch Add ASE file format, support for 3d faces only (no lights etc.). Basic material features including all colors, first texture and transparency included. Needs libase (LGPL). Irrlicht forum thread
md3.patch Add MD3 file format, submitted by madinitaly. Irrlicht forum thread
dds.patch Add support for DDS images by festini. Needs compressedTextures.patch. Irrlicht forum thread
WAL.patch Add WAL texture file format, submitted by Murphy McCauley. Irrlicht forum thread
rawimage.patch Add Loader for RAW images. Needs 8bitcolor.patch.
3rdPersCam.patch Add 3rd person camera, needs keyInterface.patch.
fire.patch Add fire scene node (CZestmyr).
moreparticles.patch Add some more particle generators and apply some fixes. Probably needs the other Spintz Particles as well.
particle-spintz.patch Major improvements to particle system.
TrueTypeFont.patchAdds support for TrueType fonts posted by zgock. You have to add new file CGUITTFont to your project file/Makefile.Irrlicht forum thread
GUILoadBar.patch Adds LoadBar to set of GUI elements. You have to add new file CGUILoadBar to your project file/Makefile! Fixed a missing enum type recently.
Optimizations
- pointinside.patch Optimized intersection check.
- ms3d-performance.patch Use index buffer for MS3D objects (by Andi|xng).Irrlicht forum thread
- 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.
- AnimXNormals.patchCXAnimationPlayer normals fix by yin nadie.
- getAlpha.patchFix getAlpha from SColor.h, returned second red bit before.
- getScale.patchAdd method to return the scale vector (last column).
- GUIButton.patchFix for small lines around pressed buttons from Alan Tyndall/Jonas Petersen
- md2.patchTypo in MD2 handling.
- MY3DRename.patchRename Trasparency to Transparency, _A to __A, _B to __B etc. Fixed some variable types to match constant types. This is more than NX does...
- OctTreeCull.patchActivate automatic culling in OctTreeSceneNode, add some more boxes in debug mode.
- overrideFont.patchAllows to set a new font in GUIListBox. Don't know if it is really needed -why just there?
- skyboxrotation.patchFix for rotation matrix.
Currently not working patches
- 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.
- beginScene.patch Call beginScene without parameters and get/set attributes instead. Works, but breaks API.
- OpenGLARB2.patch Untested patch to fix the Linux OpenGL_ARB problem and add shader program support. First version had some ifdef's unchanged, fixed in version 2.
- GUICloseHandler.patch Allows to enable or disable the default handling of the GUI window close button
- newTGA.patch Adds a new possibility to load TGA files using libjpeg. Seems to have some problems with 0.10!
Removed patches
- 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.
Most patches for Irrlicht 0.12 are still available on this page.
Most patches for Irrlicht 0.11 are still available on this page.
Most patches for Irrlicht 0.10 are still available on this page.
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: April, 18th, 2006)