An automatically updated mirror of the Irrlicht SVN repository on sourceforge
Clone or download
cutealien
cutealien Switch Irrlicht to 8 textures per Material as default by increasing v…
…alue of _IRR_MATERIAL_MAX_TEXTURES_.

Reason is that 4 haven't been enough anymore for even pretty common graphic pipelines for a while now. 
8 might still not be enough, but let's see first if people are happy with it.

This has some costs for people not needing more textures, as we have fatter Materials now. 
- Memory usage increases by 64 bytes per SMaterial.
- Serialization files for the irr-format are now larger. 
- Slight speed cost, thought mainly in debug

For people who don't need this and want to avoid some of the costs there is a new variable irr::video::MATERIAL_MAX_TEXTURES_USED which can be set to the maximal number of textures a project will need
before creating any device. This avoids pretty much all speed-costs involved with this change.

Software drivers are not much affected as they use their own texture-limits (2).

I did a few speed-comparison with varying numbers of _IRR_MATERIAL_MAX_TEXTURES_. The numbers displayed are FPS, so higher is better. I had 2 tests - one which forced many material changes and the other used a single material for all nodes. When there are 2 numbers in a result then I got different (generally lower) FPS when forcing material changes. The test used a simple model with 500 polygons and rendered it 4500 times.
OLD means - before working on all changes related to increasing texture-numbers and without changing materials (found a bunch of places to decrease the impact of this change which also sometimes did speed up Irrlicht generally). 1.8 refers to Irrlicht 1.8 with same test. All tests done on Windows/VisualStudio.

Max.textures    4       8       16      64      64 MATERIAL_MAX_TEXTURES_USED=4
GL/debug        50/68   44/58   35/45
GL/release      117     117     117     80/100  117	
D3D9/debug	51/56	45/49	37/39				
D3D9/release    168     168     152/168 90/87   168
OLD GL/debug    63
OLD GL/release  117
OLD D3D9/debug  44
OLD D3D9/rel    168
1.8 GL/debug    23/29
1.8 GL/release  94/117
1.8 D3D9/debug  59/63
1.8 D3D9/rel    142/152

Take all results with a grain of salt, it probably often is limited by fill-rate and doesn't even notice the texture-number changes (especially in release). 

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@5682 dfc29bdd-3216-0410-991c-e03cc46cb475
Latest commit 957d34f Jan 17, 2019

readme.txt

==========================================================================
The Irrlicht Engine SDK version 1.9
==========================================================================

  Welcome to the Irrlicht Engine SDK.

  Content of this file:

  1. Directory Structure Overview
  2. How To Start
  3. Requirements
  4. Release Notes
  5. License
  6. Contact


==========================================================================
1. Directory Structure Overview
==========================================================================

  You will find some directories after uncompressing the archive of the
  SDK. These are:

  \bin         The compiled library Irrlicht.DLL and some compiled demo
               and example applications, just start them to see the
               Irrlicht Engine in action. Windows only.
  \doc         Documentation of the Irrlicht Engine.
  \examples    Examples and tutorials showing how to use the engine with
               C++.
  \include     Header files to include when programming with the engine.
  \lib         Libs to link with your programs when using the engine.
  \media       Graphics and sound resources for the demo applications and
               examples.
  \source      The source code of the Irrlicht Engine. This code is
               not needed to develop applications with the engine,
               but it is included to enable recompilation and
               debugging, if necessary.
  \tools       Useful tools (with sourcecode) for the engine.



==========================================================================
2. How to start
==========================================================================

  To see the engine in action in Windows, just go to the \bin\Win32-VisualStudio
  directory, and start some applications. There should also be an
  application named Demo.exe which should show the most
  interesting features of Irrlicht.

  To start developing own applications and games with the engine take
  a look at the 01.HelloWorld example in the \examples directory.
  There is also a .html file with a tutorial which should be
  easily comprehensible.

  The Irrlicht Engine is a static lib under linux. A precompiled version can be
  generated from the sources using the Makefile in source/Irrlicht. Run 'make' in 
  that subfolder. After this you should be able to 'make' all
  example applications in /examples by calling the buildAllExamples script. You 
  can run the examples then from the bin folder.

  It is also possible to use Irrlicht as shared object
  (libIrrlicht.so.versionNumber). Use the proper makefile target for this by
  running 'make sharedlib' in the source folder. See the Makefile for details.

  For OSX you can find an XCode project file in source/Irrlicht/MacOSX. This will
  build the libIrrlicht.a library necessary to create the apps.

==========================================================================
3. Requirements
==========================================================================

  You can use one of the following compilers/IDEs to develop applications
  with Irrlicht or recompile the engine. However, other compilers/IDEs may
  work as well, we simply didn't test them.

  * gcc 4.x
  * Visual Studio 2010(10.0)-2013(12.0)
  * Code::Blocks (& gcc or visual studio toolkit)
  
  If you ever want to (re)compile the engine yourself (which means you don't
  want to use the precompiled version) you need the following:

  * Windows:
	* Needed: PlatformSDK (which usually comes with all IDEs, download
			it separately for MSVC Express 2005)
	* Optional: DirectX SDK, for D3D9 support
	* Optional: DirectX SDK prior to May 2006, for D3D8 support

  * Linux:
	* Needed: XServer with include files
	* Optional: OpenGL headers and libraries (libGL.so) for OpenGL support
		GLX +
		XF86VidMode [package x11proto-xf86vidmode-dev] or XRandr
		(X11 support libraries, the latter two for fullscreen mode)

  * OSX:
	* Needed: XCode and Cocoa framework
	* Needed: OpenGL headers and libraries

==========================================================================
4. Release Notes
==========================================================================

  Informations about changes in this new version of the engine can be
  found in changes.txt.

  Please note that the textures, 3D models and levels are copyright
  by their authors and not covered by the Irrlicht engine license.

==========================================================================
5. License
==========================================================================

  The license of the Irrlicht Engine is based on the zlib/libpng license.
  Even though this license does not require you to mention that you are
  using the Irrlicht Engine in your product, an acknowledgement
  would be highly appreciated.

  Please note that the Irrlicht Engine is based in part on the work of
  the Independent JPEG Group, the zlib, and libpng. This means that if you use
  the Irrlicht Engine in your product, you must acknowledge somewhere
  in your documentation that you've used the IJG code and libpng. It would
  also be nice to mention that you use the Irrlicht Engine and the zlib.
  See the README files in the jpeglib and the zlib for
  further informations.


  The Irrlicht Engine License
  ===========================

  Copyright (C) 2002-2012 Nikolaus Gebhardt

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgement in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be clearly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.


==========================================================================
6. Contact
==========================================================================

  If you have problems, questions or suggestions, please visit the
  official homepage of the Irrlicht Engine:

  http://irrlicht.sourceforge.net

  You will find forums, bugtrackers, patches, tutorials, and other stuff
  which will help you out.

  If want to contact the team of the engine, please send an email to
  Nikolaus Gebhardt:

  irrlicht@users.sourceforge.net

  Please also not that parts of the engine have been written or contributed
  by other people. Especially: (There are probably more people, sorry if I forgot one.
  See http://irrlicht.sourceforge.net/author.html for more informations)

  Christian Stehno (hybrid)   Contribution Coordinator/Developer
  Michael Zeilfelder (cutealien) Developer
  Patryk Nadrowski (Nadro)    Developer  
  Yoran Bosman (Yoran)        Webserver administrator
  Gareth Davidson (bitplane)  Developer/ Forum admin
  Thomas Alten (burningwater) Wrote the burningsvideo software rasterizer
  Luke P. Hoschke (luke)      Wrote the b3d loader, the new animation system, VBOs and other things
  Colin MacDonald (rogerborg) All hands person
  Ahmed Hilali (blindside)    The shader and advanced effects man
  Dean Wadsworth (varmint)    OSX port maintainer and game developer
  Alvaro F. Celis (afecelis)  Lots of work in the community, for example video tutorials about Irrlicht, forum admin
  John Goewert (Saigumi)      Wrote some tutorials for the Irrlicht Engine and doing admin stuff
  Jam                         Takes care of moderating the forums and keeps them clean from those evil spammers.

  Many others (this list hasn't been updated in a while, but they are often mentioned in changes.txt)
  Etienne Petitjean wrote the MacPort of the engine
  Mark Jeacocke	Wrote lots of helpful comments and ideas in the forums and per email.
  Julio Gorgé	Created the 'Unofficial DirectX 9.0 Driver for the Irrlicht Engine'
  Andy Spurgeon	Wrote the Dev-Cpp tutorial.
  André Simon	Wrote the Codewarrior tutorial.
  KnightToFlight	Created the unoffical terrain renderer addon for the Irrlicht Engine.
  Jon Pry	Wrote the code to load compressed TGA files.
  Matthew Couch	Wrote the tokamak integration tutorial.
  Max Winkel	Wrote the splitscreen tutorial.
  Gorgon Zola	Wrote the ODE integration tutorial.
  Dean P. Macri	Sent in code for curved surfaces and PCX Loading.
  Sirshane	Made several bug fixes, sent in code for making the mouse cursor invisible in Linux.
  Matthias Gall	Sent in code for a spline scene node animator and reported lots of bugs.
  Mario Gruber	Suggested triangle fan drawing and sent in code for this.
  Ariaci	Spotted out a bug in the ATI driver.
  Dr Andros C Bragianos	Improved texture mapping in cube scene node.
  Philipp Dortmann	Sent in code for stencil buffer support for OpenGL.
  Jerome Nichols	Created the Irrlicht/Ruby interface located at irr.rubyforge.org
  Vash TheStampede	Sent code for missing Draw2DLine() implementations
  MattyBoy	XBOX support suggestions
  Oliver Klems	createImageFromData() method suggestion/implementation
  Jox	really, really a lot of bug fixes, and the LMTS file loader
  Zola	Quaternion method additions
  Tomasz Nowakowski	various bug fixes
  Nicholas Bray	stencil shadow bug fixes with OpenGL
  REAPER	mouswheel events for scrollbar
  Calimero	various bug fixes like vector2d operators
  Haddock	bugfix in the linked list
  G.o.D	XML parser fix
  Erik Zilli	Translated some of the tutorials from my stuttering english into real english. :)
  Martin Piskernig	Linux bugfixing and testing
  Soconne	Wrote the original terrain renderer were Irrlichts terrain renderer of Irrlicht is based on it.
  Spintz	GeoMipMap scene node, terrain renderer of Irrlicht is based on it.
  Murphy McCauley	OCT file loader, MIM tools
  Saurav Mohapatra	IrrCSM, and lots of addons, suggestions and bug reports
  Zhuck Dimitry	My3D Tools
  Terry Welsh	Allowed me to use the textures of his 'Parallax Mapping with Offset Limiting' paper for the parallax demo of Irrlicht
  rt	Wrote the original .png loader for Irrlicht
  Salvatore Russo	Wrote the original .dmf loader for Irrlicht
  Vox	Various bug reports and fixes
  atomice	Contributed code for a ms3d loader enhancement
  William Finlayson	OpenGL RTT, GLSL support and the reflection 2 layer material for OpenGL.
  Delight	Various code contributions for Irrlicht.NET (particle system, basic shader support and more)
  Michael Zoech	Improved GLSL support
  Jean-loup Gailly, Mark Adler	Created the zlib and libpng
  Guy Eric Schalnat, Andreas Dilger, Glenn Randers-Pehrson and others	Created libpng
  The Independent JPEG Group	Created JPEG lib
  Dr Brian Gladman AES Created aesGladman