Mac Categories

Irrlicht Engine 1.5


Irrlicht Engine Free and high performance realtime 3D engine

System Requirememts
Mac OS X
Download Details
Company Nikolaus Gebhardt
Version 1.5
Post Date April 30, 2009
License GPL
File Size 18.6 MB
There are no screenshots

Irrlicht Engine 1.5


Free and high performance realtime 3D engine
Irrlicht Engine is an open source high performance realtime 3D engine written and usable in C++ and also available for .NET languages.

Irrlicht Engine is completely cross-platform, using D3D, OpenGL and its own software renderer, and has all of the state-of-the-art features which can be found in commercial 3d engines.

Irrlicht Engine runs on Mac OS X, Linux and Windows.


Main features of Irrlicht Engine:

  • High performance realtime 3D rendering using Direct3D and OpenGL
  • Platform independent. Runs on Mac OS, Windows95, 98, NT, 2000, XP, and Linux.
  • Huge built-in and extensible material library with vertex and pixel shader support Seamless indoor and outdoor mixing through highly customizable scene management.
  • Character animation system with skeletal and morph target animation.
  • Particle effects, billboards, light maps, environment mapping, stencil buffer shadows, and lots of other special effects.
  • .NET language binding which makes the engine available to all .NET languages like C#, VisualBasic, and Delphi.NET.
  • Two platform and driver independent fast software renderers included. They have different properties (speed vs. quality) and feature everything needed: perspective correct texture mapping, bilinear filtering, sub pixel correctness, z-buffer, gouraud shading, alpha-blending and transparency, fast 2D drawing and more.
  • Powerful, customizable and easy to use 2D GUI System with Buttons, Lists, Edit boxes, ..
  • 2D drawing functions like alpha blending, color key based blitting, font drawing and mixing 3D with 2D graphics.
  • Clean, easy to understand and well documented API with lots of examples and tutorials.
  • Written in pure C++ and totally object orientated.
  • Direct import of common mesh file formats: Maya (.obj), 3DStudio (.3ds), COLLADA (.dae), DeleD (.dmf), Milkshape (.ms3d), Quake 3 levels (.bsp), Quake2 models (.md2), Microsoft DirectX (.X)...
  • Direct import of Textures: Windows Bitmap (.bmp), Portable Network Graphics (.png), Adobe Photoshop (.psd), JPEG File Interchange Format (.jpg), Truevision Targa (.tga), ZSoft Painbrush (.pcx)...
  • Fast and easy collision detection and response.
  • Optimized fast 3D math and container template libraries.
  • Directly reading from (compressed) archives. (.zip)
  • Integrated fast XML parser.
  • Unicode support for easy localization.
  • Works with Microsofts VisualStudio6.0, VisualStudio.NET 7.0-8.0, Metrowerks Codewarrior, and Bloodshed Dev-C++ with g++3.2-4.0.
  • The engine is open source and totally free. You can debug it, fix bugs and even change things you do not like. And you do not have to publish your changes: The engine is licensed under the zlib license, not the GPL or the LGPL.


    What's New in This Release:

  • 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 behaviour 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& r) to IGUIElement::setRelativePositionProportional(), as it has radically different functionality from setRelativePosition(const core::rect& 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::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.