<!-- Wanted to avoid copying .css to each folder, so copied default .css from doxyen in here, kicked out most stuff we don't need for examples and modified some a little bit.
Target was having a single html in each example folder which is created from the main.cpp files and needs no files besides some images below media folder.
<p>This tutorial shows how to use one of the built in more complex materials in irrlicht: Per pixel lighted surfaces using normal maps and parallax mapping. It will also show how to use fog and moving particle systems. And don't panic: You do not need any experience with shaders to use these materials in Irrlicht.</p>
<p>At first, we need to include all headers and do the stuff we always do, like in nearly all other tutorials. </p><divclass="fragment"><divclass="line"><spanclass="preprocessor">#include <irrlicht.h></span></div><divclass="line"><spanclass="preprocessor">#include "driverChoice.h"</span></div><divclass="line"><spanclass="preprocessor">#include "exampleHelper.h"</span></div><divclass="line"></div><divclass="line"><spanclass="keyword">using namespace </span>irr;</div><divclass="line"></div><divclass="line"><spanclass="preprocessor">#ifdef _MSC_VER</span></div><divclass="line"><spanclass="preprocessor">#pragma comment(lib, "Irrlicht.lib")</span></div><divclass="line"><spanclass="preprocessor">#endif</span></div></div><!-- fragment --><p> For this example, we need an event receiver, to make it possible for the user to switch between the three available material types. In addition, the event receiver will create some small GUI window which displays what material is currently being used. There is nothing special done in this class, so maybe you want to skip reading it. </p><divclass="fragment"><divclass="line"><spanclass="keyword">class </span>MyEventReceiver : <spanclass="keyword">public</span> IEventReceiver</div><divclass="line">{</div><divclass="line"><spanclass="keyword">public</span>:</div><divclass="line"></div><divclass="line"> MyEventReceiver(scene::ISceneNode* room,scene::ISceneNode* earth,</div><divclass="line"> gui::IGUIEnvironment* env, video::IVideoDriver* driver)</div><divclass="line"> {</div><divclass="line"><spanclass="comment">// store pointer to room so we can change its drawing mode</span></div><divclass="line"> Room = room;</div><divclass="line"> Earth = earth;</div><divclass="line"> Driver = driver;</div><divclass="line"></div><divclass="line"><spanclass="comment">// set a nicer font</span></div><divclass="line"> gui::IGUISkin* skin = env->getSkin();</div><divclass="line"> gui::IGUIFont* font = env->getFont(getExampleMediaPath() + <spanclass="stringliteral">"fonthaettenschweiler.bmp"</span>);</div><divclass="line"><spanclass="keywordflow">if</span> (font)</div><divclass="line"> skin->setFont(font);</div><divclass="line"></div><divclass="line"><spanclass="comment">// add window and listbox</span></div><divclass="line"> gui::IGUIWindow* window = env->addWindow(</div><divclass="line"> core::rect<s32>(460,375,630,470), <spanclass="keyword">false</span>, L<spanclass="stringliteral">"Use 'E' + 'R' to change"</span>);</div><divclass="line"></div><divclass="line"> ListBox = env->addListBox(</div><divclass="line"> core::rect<s32>(2,22,165,88), window);</div><divclass="line"></div><divclass="line"> ListBox->addItem(L<spanclass="stringliteral">"Diffuse"</span>);</div><divclass="line"> ListBox->addItem(L<spanclass="stringliteral">"Bump mapping"</span>);</div><divclass="line"> ListBox->addItem(L<spanclass="stringliteral">"Parallax mapping"</span>);</div><divclass="line"> ListBox->setSelected(1);</div><divclass="line"></div><divclass="line"><spanclass="comment">// create problem text</span></div><divclass="line"> ProblemText = env->addStaticText(</div><divclass="line"> L<spanclass="stringliteral">"Your hardware or this renderer is not able to use the "</span>\</div><divclass="line"> L<spanclass="stringliteral">"needed shaders for this material. Using fall back materials."</span>,</div><divclass="line"> core::rect<s32>(150,20,470,80));</div><divclass="line"></div><divclass="line"> ProblemText->setOverrideColor(video::SColor(100,255,255,255));</div><divclass="line"></div><divclass="line"><spanclass="comment">// set start material (prefer parallax mapping if availa