Irrlicht - Le Bottin des Jeux Linux



Title: Irrlicht Type: Tool
Genre: Development Status:
Category: Development ➤ Engine ➤ 2D & 3D ➤ Misc. Commercial:
Tags: 2D & 3D engine Demo:
Released: Latest : 1.8.3 / Dev : 19435a2 Package Name: libirrlicht-dev
Date: 2015-09-16 Extern Repo:
License: zlib & (libpng) Deb Repo: Debian
View: Third & First person Package: ✓
Graphic: 2D & 3D Binary: ✓
Mechanics: Real Time Source: ✓
Played: Single & Multi PDA: ✓
Quality (record): 5 stars Quality (game):
Contrib.: Goupil & Louis ID: 11504
Created: 2011-09-15 Updated: 2015-10-03


[fr]: Un moteur graphique 3D multiplateforme libre, supportant le rendu matériel accéléré (Direct3D / OpenGL) et son propre rendu logiciel, en plus des fonctionnalités classiques de tout moteur commercial [en]: A multi-platform high performance realtime 3D engine written in C++, featuring a powerful high level API for creating complete 3D and 2D applications such as games or scientific visualizations


Trailer / Gameplay [en] / [en] / [fr] :


Website & videos
[Homepage] [Dev site 1 2] [Features/About] [Screenshots] [Videos t t t t t g g g g g g g g g[fr] g g g g g] [Reviews] [WIKI] [FAQ] [RSS] [Changelog 1 2 3 4]

Commercial : (empty)

• (empty)
Technical informations
[Open Hub] [Irrlicht (Irrlicht Powered Games)] [ (Site communautaire Français)] [Blitz Research (3D Engines list)]

Devs (Irrlicht Team [fr] [en]) : [Site 1 2] [twitter] [YouTube] [Interview 1 2]
Game : [Blog] [Forums] [twitter] [YouTube]

On other sites
[Wikipedia (Irrlicht) [fr] [en]]
[UBUNTU [fr]] [The Linux Game Tome] [Debian] [DevMaster] [Linux Journal]

[Cygon's Blog (7 Engines You Should Know)]

News / Source of this Entry (SotE) / News (SotN)

Description [fr]

Un moteur graphique 3D multiplateforme, par la Irrlicht Team.
En C++.

Irrlicht est un moteur graphique 3D multiplateforme libre, supportant le rendu matériel accéléré (Direct3D / OpenGL) et son propre rendu logiciel, en plus des fonctionnalités classiques de tout moteur commercial 3D.

Utilisé par ces jeux / Used by these games : Buggy Race, Build A World, Choria, Coup de foot 2006, Dakar 2011, FormulaRetro, Irrlamb, IrrRPG Builder, Minetest, Nethack 3D, Puzzle Moppet, Stair Dismount, SuperTuxKart, TANK@WAR, Voxelands,

Wikipedia :
Irrlicht est un moteur 3D temps réel multiplateforme.

Il s'agit d'un logiciel libre sous licence zlib. Son utilisation est libre, y compris pour des programmes à vocation commerciale. Il existe déjà plusieurs forks du projet, dans le but d'accélérer la correction des bugs ou l'ajout de nouveautés.

Ce moteur supporte aussi bien OpenGL, Direct3D que son propre rendu logiciel; ainsi qu'un nouveau rendu, plus rapide (Apfelbaum rendering, du nom de son auteur).

L'intégration à de nombreux langages est possible, l'API est écrite nativement en C++.

Irrlicht possède aussi plusieurs fonctionnalités autres que celle de moteur 3D ce qui facilite entre autres le développement de jeux vidéo : Parseur XML rapide, Gestion physique basique, Moteur de particules.

Description [en]

The Irrlicht Engine is a multi-platform high performance realtime 3D engine written in C++.

It features a powerful high level API for creating complete 3D and 2D applications such as games or scientific visualizations. It comes with an excellent documentation and integrates all state-of-the-art features for visual representation such as dynamic shadows, particle systems, character animation, indoor and outdoor technology, and collision detection. All this is accessible through a well designed C++ interface, which is extremely easy to use.

Irrlicht is an open source game engine written in C++. It is multi-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox (up to 1.8.1), PlayStation Portable,Raspberry Pi, SymbianOS,iPhone and Google Native Client.

Irrlicht is known for its small size and compatibility with new and older hardware alike, a shallow learning curve and a large friendly community. Unofficial bindings for many languages exist including .NET, Java, Perl, Ruby, Python, FreeBASIC, Lua, Delphi, C++Builder, AutoIt and even Game Maker, though most of them have been unmaintained for more than five years.

Irrlicht's development began in 2003 with only one developer, Nikolaus Gebhardt. Only after the 1.0 release of Irrlicht in 2006 did the team grow to currently ten members, most of them being developers.

"Irrlicht" is a common German term for a will-o'-the-wisp.


Irrlicht supports 3D rendering via OpenGL, DirectX 8, 9, and 11 (with DirectX 11 extension), and internal software rasterizers. DirectX 8 will not be supported after 1.8.1, effectively ending support for XBox. External renderers and windowing systems plug in through simple interfaces, giving rise to community-made SDL, iPhone and SymbianOS devices. The engine comes with a library of standard material renderers, allowing fallback materials where user hardware is unable to handle advanced techniques. New materials can be added to the engine at run-time, allowing users to write their own as required. In addition to legacy fixed-function pipeline materials, programmable Pixel and Vertex Shaders (1.1 to 3.0 and 4.0 using GLSL), ARB Fragment and Vertex Programs, HLSL, Cg and GLSL materials are supported.
Per-Pixel Lighting in Irrlicht
Lightmaps and vertex lighting in Irrlicht, rendering a simple dungeon scene

Irrlicht supports many file formats. It will load and display 3ds Max files, Quake 2 MD2 Models, Wavefront .obj objects, Quake 3 .bsp maps, Milkshape3D objects, and DirectX .x files. Additional format loaders have been written as external plugins. Lights, cameras and 3D objects are managed as a tree of 'Scene Nodes', arbitrary groupable entities linked together in a scene graph. These nodes are responsible for their own behaviour, but can also be managed by animators, each other, or manually by the user.

A large number of built-in node types exist and can be used together to make complex indoor and outdoor scenes. New nodes are trivial to make and can be added at runtime; many additional node types are available from the community. Node types packaged with Irrlicht include a terrain renderer and sky domes/boxes for outdoor rendering, BSPs for indoor rendering, bone based animated meshes, stencil shadows, billboards and particle systems, water surfaces and primitives.

A skinnable 2D GUI is available, supporting many controls and the ability for users to plug in their own (or community made) custom widgets at runtime. Irrlicht's internal event system provides mouse, keyboard, joystick and GUI events without having to rely on additional libraries.

Filesystem access is abstracted allowing platform-independent file and folder access, and transparent access to files within ZIP archives. Other I/O features include an XML reader and writer, the ability to take screenshots, manipulate images and meshes and then save them in several different file formats.

Irrlicht's provides support for simple collision detection including mouse picking, but users are advised that this is not intended as a replacement for a full featured physics engine.

Engine extensions

Irrlicht was designed to be able to load and save the current scene to an XML file; this combined with the engine's open-source licensing model has attracted various programmers and developers to create world editors for Irrlicht to simplify the world-creation process. One such example is the irrEdit world editor, developed by Nikolaus Gebhardt and other members of the company Ambiera. IrrEdit contains a radiosity lightmap generator and a scripting interface using Squirrel scripts.

Since Irrlicht does not support sound by itself, Ambiera has also developed irrKlang, a non-free, proprietary audio library with an API similar to Irrlicht. Being developed by the same group, irrEdit supports the use of sounds in levels made by irrEdit for use with irrKlang-enabled compiled DLLs. Also among Ambiera's creations is irrXML, Irrlicht's XML parser.

Many physics libraries have had plugins and wrappers written for Irrlicht, including Nvidia PhysX, Bullet, and Open Dynamics Engine.

More extensions can be found in the Irrlicht forums and in the irrExt project, a side-project of Irrlicht for special purpose add-ons.

There are also some new technologies in forums such as Deferred shading or Shadow mapping. Many users contribute extensions such as Compute Shaders (OpenGL 4.3) and Tessellation Shaders (Shader Model 5.0).


☯ Features :
The Irrlicht Engine is a multi-platform high performance realtime 3D engine written in C++. It features a powerful high level API for creating complete 3D and 2D applications such as games or scientific visualizations. It comes with an excellent documentation and integrates all state-of-the-art features for visual representation such as dynamic shadows, particle systems, character animation, indoor and outdoor technology, and collision detection. All this is accessible through a well designed C++ interface, which is extremely easy to use.

☑ High performance realtime 3D rendering using Direct3D and OpenGL [more]
☑ Platform independent. Runs on Windows, Linux, OSX, Solaris, and others.[more]
☑ Huge built-in and extensible material library with vertex, pixel, and geometry shader support [more].
☑ Seamless indoor and outdoor mixing through highly customizeable scene management. [more]
☑ Character animation system with skeletal and morph target animation. [more]
☑ Particle effects, billboards, light maps, environment mapping, stencil buffer shadows, and lots of other special effects. [more]
☑ Several language bindings which make the engine available to other languages such as C#, VisualBasic, Delphi, Java ...
☑ 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, customizeable, 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 oriented.
☑ Direct import of common mesh file formats: Maya (.obj), 3DStudio (.3ds), COLLADA (.dae), Blitz3D (.b3d), Milkshape (.ms3d), Quake 3 levels (.bsp), Quake2 models (.md2), Microsoft DirectX (.X)... [more]
☑ 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)... [more]
☑ Fast and easy collision detection and response.
☑ Optimized fast 3D math and container template libraries.
☑ Directly reading from (compressed) archives. (.zip, .pak, .pk3, .npk)
☑ Integrated fast XML parser.
☑ Unicode support for easy localisation.
☑ Works with Microsoft VisualStudio, Metrowerks Codewarrior, Bloodshed Dev-C++, Code::Blocks, XCode, and gcc 3.x-4.x.
☑ 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 licence, not the GPL or the LGPL.

☯ Special effects
There are lots of common special effects available in the Irrlicht Engine. They are not difficult to use, in most cases the programmer only has to switch them on. The engine is constantly extended with new effects, here is list of effects which are currently implemented:
☑ Animated water surfaces
☑ Dynamic lights
☑ Dynamic shadows using the stencil buffer
☑ Geo mip-mapped terrain
☑ Billboards
☑ Bump mapping
☑ Parallax mapping
☑ Transparent objects
☑ Light maps
☑ Customizeable Particle systems for snow, smoke, fire, …
☑ Sphere mapping
☑ Texture animation
☑ Skyboxes and skydomes
☑ Fog
☑ Volume Light

☯ Drivers
The Irrlicht Engine supports 6 rendering APIs, which are 5 more than most other 3D engines do:
☑ Direct3D 8.1
☑ Direct3D 9.0
☑ OpenGL 1.2-3.x
☑ The Irrlicht Engine software renderer.
☑ The Burningsvideo Software Renderer
☑ A null device.
When using the Irrlicht engine, the programmer needs not know, which API the engine is using, it is totally abstracted. He only needs to tell the engine which API the engine should prefer.

There are three reasons why the engine not only focuses on one API:
☑ Performance. Some graphic adapters are optimized for OpenGL, some simply run faster with Direct3D.
☑ Platform independence. Direct3D will not be present on a Mac or a Linux Workstation, while maybe OpenGL will. And when OpenGL is not available either, there are still the Irrlicht Engine software renderers, which will always operate on any platform. In this way, the user will see something on the screen for sure.
☑ Driver problems, which are a common problem a user encounters when using 3D software. There are thousands of hardware configurations out there, and often games and 3D applications are crashing, because there is an old driver installed. Letting the user switch the driver might solve the problem.

☯ Materials and Shaders
To be able to create realistic environments quickly, there are lots of common built in materials available in the engine. Some materials are based on the fixed function pipeline (light mapped geometry for example) and some are relying on the programmable pipeline (normal mapped/parallax per pixel lighted materials for example) todays 3d hardware is offering. It is possible to mix these types of materials in a scene without problems and when using a material which needs features the hardware is not able to do, the engine provides fall back materials. However, if the built in materials are not enough, it is possible to add new materials to Irrlicht at runtime, without the need of modifying/recompiling the engine.
Currently supported shader languages for this are:
☑ Pixel and Vertex Shaders 1.1 to 3.0
☑ ARB Fragment and Vertex Programs

☯ Platforms
The Irrlicht Engine is platform independent, currently there is official support for:
☑ Windows 98, ME, NT 4, 2000, XP, XP64, Vista, CE
☑ Linux
☑ Sun Solaris/SPARC
☑ All platforms using SDL

For the serious mobile developer there are work-in-progress OpenGL ES drivers, which have enabled the Irrlicht community to develop iPhone, Android and Nokia Symbian ports. The Engine works with all supported platforms in the same way. The programmer only has to write the game/application code once, and it will run on all supported platforms without the need to change one single line of code.

☯ Scene Management
Rendering in the Irrlicht Engine is done using a hierarchical scene graph. Scene nodes are attached to each other and follow each others movements, cull their children to the viewing frustum, and are able to do collision detection. A scene node can for example be a camera, an indoor or outdoor level, a skeletal animated character, animated water, a geomipmap terrain, or something completely different.

In this way, the Irrlicht engine can seamlessly mix indoor and outdoor scenes together, gives the programmer full control over anything which is going on in the scene. It is very easily extensible because the programmer is able to add his own scene nodes, meshes, texture loaders, GUI elements, and so on.

The geometry creator gives easy access to simple gemetrical bodies, such as cylinder, cube, etc. Objects can be rendered as polygons, wireframe, or points, using triangles, lines, point and point sprite primitives.

☯ Character Animation
Currently there are two types of character animation implemented:
☑ Morph target animation: Meshes are linearly interpolated from one frame to the next. This is what is done in the Quake game series, and how the Irrlicht engine does it when importing .md2 and .md3 files.
☑ Skeletal animation: A skin is manipulated by animated joints. The Irrlicht Engine will do this when loading .ms3d, .x, and .b3d files. It is easily possible to attach objects to parts of the animated model. It is, e.g., possible to attach a weapon to the hand of a model, which will be moved as the hand moves, with only one line of code.

The programmer doesn’t need to know about all this, if he doesn’t want to. All he has to do is to load the files into the engine and let it animate and draw them.

☯ Supported Formats
Lots of common file formats are supported, and are able to be loaded (and partially also saved) directly from within the engine. In this way, you don’t need to convert your media before using it with the Irrlicht Engine, saving development time. The internal ressource management of Irrlicht provides simple access to all file formats and takes care of fetching already loaded meshes or textures from its own cache instead from disk if the data was already loaded before. The list of all supported formats is constantly growing, and there are many community-made plugins which add new formats without having to recompile the engine.

If you need the Irrlicht Engine to be able to load a file format which it cannot currently handle, simply ask for it by raising a feature request on our issue tracker.

Currently supported textures file formats:
☑ JPEG File Interchange Format (.jpg, r/w)
☑ Portable Network Graphics (.png, r/w)
☑ Truevision Targa (.tga, r/w)
☑ Windows Bitmap (.bmp, r/w)
☑ Zsoft Paintbrush (.pcx, r/w)
☑ Portable Pixmaps (.ppm, r/w)
☑ Adobe Photoshop (.psd, r)
☑ Quake 2 textures (.wal, r)
☑ SGI truecolor textures (.rgb, r)

Currently supported mesh file formats:
☑ Animated objects:
• B3D files (.b3d, r, skeleton)
• Microsoft DirectX (.x, r) (binary & text, skeleton)
• Milkshape (.ms3d, r, skeleton)
• Quake 3 models (.md3, r, morph)
• Quake 2 models (.md2, r, morph)

☑ Static objects:
• Irrlicht scenes (.irr, r/w)
• Irrlicht static meshes (.irrmesh, r/w)
• 3D Studio meshes (.3ds, r)
• Alias Wavefront Maya (.obj, r/w)
• Lightwave Objects (.lwo, r)
• COLLADA 1.4 (.xml, .dae, r/w)
• OGRE meshes (.mesh, r)
• My3DTools 3 (.my3D, r)
• Pulsar LMTools (.lmts, r)
• Quake 3 levels (.bsp, r)
• DeleD (.dmf, r)
• FSRad oct (.oct, r)
• Cartography shop 4 (.csm, r)
• STL 3D files (.stl, r/w)
• PLY 3D files (.ply, r/w)

☯ Supported Render Features
Irrlicht supports all general render features needed for high quality rendering of materials and effects. Besides a few exceptions, all features are supported in all hardware accelerated APIs, and some are supported by the software renderers as well. The following list contains all supported render features of the current version of the Irrlicht Engine. Please ask for extending this set to certain features required.

Currently supported render features:
☑ Predefined materials
• Solid
• Solid with alpha blending 2nd texture
• Light maps with configurable pre-multiplication and additional dynamic light support
• Detail map
• Sphere map
• Environment reflection
• Transparency by adding the texture
• Transparency by using the texture alpha
• Transparency by using the texture alpha without blending
• Transparency by using the vertex alpha
• Normal maps
• Parallax maps
• Flexible blend mode rendering
☑ Material Colors (ambient, diffuse, emissive, specular)
☑ Shininess
☑ Line thickness (only OpenGL)
☑ ZBuffer write/test modes
☑ Per mesh anti-aliasing settings
☑ Alpha to Coverage
☑ Color masking
☑ Vertex colors with configurable interpretation
☑ Wireframe/Point cloud rendering
☑ Gouraud/Flat shading
☑ Lighting mode configurable
☑ Backface/Frontface culling
☑ Fog enabling per mesh
☑ Automatic normals normalization
☑ Texture coordinates repeat/clamp modes
☑ Per texture filtering (bilinear, trilinear, anisotropic)
☑ Texture LOD Bias
☑ Texture matrices
☑ Arbitrary number of multi-textures