<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://horde3d.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kal</id>
		<title>Horde3D Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://horde3d.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kal"/>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Special:Contributions/Kal"/>
		<updated>2026-04-07T10:09:01Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.3</generator>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Community_Roadmap&amp;diff=366</id>
		<title>Community Roadmap</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Community_Roadmap&amp;diff=366"/>
				<updated>2008-09-13T12:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a way to keep the Horde3D community on the same page in regards to the development of future features, this Community Roadmap will keep an up to date log of the undergoing activities.&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699FF&amp;quot; style=&amp;quot;font-size: medium; font-weight: bold&amp;quot;&lt;br /&gt;
| Feature&lt;br /&gt;
| Description&lt;br /&gt;
| Assigned to&lt;br /&gt;
| Completion&lt;br /&gt;
| Released in&lt;br /&gt;
|-&lt;br /&gt;
| D3D Backend&lt;br /&gt;
| Write a D3D9/D3D10 backend, in addition to the current OpenGL backend&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|- bgcolor=&amp;quot;#ECECEC&amp;quot;&lt;br /&gt;
| [[Community_Roadmap_-_Compressed_Texture_Support|Compressed Texture Support]]&lt;br /&gt;
| Support for DDS, PowerVR, and other Texture formats.&lt;br /&gt;
| swiftcoder&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| OpenGL ES2.x Backend&lt;br /&gt;
| Write a OpenGL ES2.x backend, Horde3D port for mobile platforms&lt;br /&gt;
| DDd&lt;br /&gt;
| 10%&lt;br /&gt;
| (EST.) December 2008&lt;br /&gt;
|- bgcolor=&amp;quot;#ECECEC&amp;quot;&lt;br /&gt;
| Ambient Occlusion&lt;br /&gt;
| Add ambient occlusion support for Horde3D&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| Alpha &amp;amp; Depth Test&lt;br /&gt;
| Provide support for the different tests in the shader context configuration, [http://www.horde3d.org/forums/viewtopic.php?f=8&amp;amp;t=500 public draft available]&lt;br /&gt;
| AcidFaucet&lt;br /&gt;
| 40%&lt;br /&gt;
| (EST.) September 15th, 2008&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Wishlist:&amp;lt;/h3&amp;gt;&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#6699FF&amp;quot; style=&amp;quot;font-size: medium; font-weight: bold&amp;quot;&lt;br /&gt;
| Feature&lt;br /&gt;
| Description&lt;br /&gt;
|-&lt;br /&gt;
| Texture Improvements&lt;br /&gt;
| Support for simple downloading of texture data, mipmaps for RTT render targets (for e.g. impostors)&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Upcoming Horde3D Version: 1.0&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
| &amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot;&amp;gt;Upcoming Horde3D Editor version: 1.0&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;b&amp;gt;The current version is: v1.0.0 Beta1&amp;lt;/b&amp;gt;&lt;br /&gt;
| &amp;lt;b&amp;gt;The current version is: v0.7.0&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|For version 1.0.0 Beta1 of Horde3D the following features have been &lt;br /&gt;
		integrated:&amp;lt;/p&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Occlusion Culling&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Render-to-Texture&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Stereo Rendering&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Software Skinning&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
			&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Node Sorting&amp;lt;/b&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
The first will give polygonally dense worlds a boost in speed and the second can be used to do all sorts of effects. See also the&lt;br /&gt;
[http://www.horde3d.org/docs/_changeLog.html changelog] for more details. &lt;br /&gt;
In the following weeks no new features will be implemented. Instead the development will be focused on bug fixes and further documentation.&lt;br /&gt;
| The next version 0.7.0 will be based on Horde3D v.1.0.0 Beta1 and will focus on a better extensibility using plugins (e.g. the terrain node extension will be a plugin and not a fixed part of the editor anymore). Further on there will be support for front, top, and right view of the scene with orthographic projection.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Talk:Community_Roadmap&amp;diff=365</id>
		<title>Talk:Community Roadmap</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Talk:Community_Roadmap&amp;diff=365"/>
				<updated>2008-09-13T12:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: New page: =is occlusion culling object level?=&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=is occlusion culling object level?=&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:ContentBlock&amp;diff=361</id>
		<title>Template:ContentBlock</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:ContentBlock&amp;diff=361"/>
				<updated>2008-09-12T13:22:07Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: Undo revision 360 by Kal (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Head Optional - Experimental --&amp;gt;{{#vardefine:boxwith|{{{width| 300}}} }}{{#vardefine:iconwith|{{{iconsize|45}}} }}&lt;br /&gt;
{| width=&amp;quot;{{{width|800}}}&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: {{{color|#8BC3DF;}}}; border-width: {{{thickness|2}}}px;&amp;quot;&lt;br /&gt;
{{#if: {{{icon|}}} | {{#if: {{{sub-header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{{iconsize|45}}}&amp;quot; rowspan=&amp;quot;2&amp;quot; {{!}} [[Image:{{{icon}}}]] | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{{iconsize|45}}}&amp;quot; {{!}} [[Image:{{{icon}}}]]}} }}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{ #expr: {{#var:boxwith}} - {{#var:iconwith}} }}&amp;quot; valign=&amp;quot;{{{halign|bottom}}}&amp;quot; {{!}} '''{{{header}}}'''| }}&lt;br /&gt;
|- &lt;br /&gt;
{{ #if: {{{sub-header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{ #expr: {{#var:boxwith}} - {{#var:iconwith}} }}&amp;quot; valign=&amp;quot;top&amp;quot; {{!}} {{{sub-header}}} |}}&lt;br /&gt;
|-&lt;br /&gt;
{{ #if: {{{content|}}} | {{!}} style=&amp;quot;background-color: {{{content-color|#FFFFEF;}}}&amp;quot; colspan=&amp;quot;2&amp;quot; {{!}} {{#if: {{{center|}}}|&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;|}} {{{content}}} {{#if: {{{center|}}}|&amp;lt;/div&amp;gt;|}} |}}&lt;br /&gt;
|-&lt;br /&gt;
{{ #if: {{{description|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; colspan=&amp;quot;2&amp;quot; {{!}} {{{description}}} |}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
ContentBox is a very flexible layout configuration tool. You can use it to render all sorts of content and to layout multiple pages in your articles. It is very configurable: icon, header, sub-header, content, description, border, border thickess, color, content color and size. &lt;br /&gt;
You can see how such a configurable box can be very easy and flexible to use. &lt;br /&gt;
==Usage==&lt;br /&gt;
Here is how you use it and the parameter list:&lt;br /&gt;
like every other template you include it by using the &lt;br /&gt;
&amp;lt;pre&amp;gt;{{ContentBox&lt;br /&gt;
|content= Content Goes here. (issue, for lists and other items it may be necessary to add the following hack {{!!}}. This is necessary due to weaknesses in the parser, that remove all white space. This is only one of the multiple flaws of the mediawiki parser.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt; If no parameter apart from content are passed then the template uses a set default parameters.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:ContentBlock&amp;diff=360</id>
		<title>Template:ContentBlock</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:ContentBlock&amp;diff=360"/>
				<updated>2008-09-12T13:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Head Optional - Experimental --&amp;gt;{{#vardefine:boxwith|{{{width| 300}}} }}{{#vardefine:iconwith|{{{iconsize|45}}} }}&lt;br /&gt;
{| width=&amp;quot;{{{width|800}}}&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: {{{color|#8BC3DF;}}}; border-width: {{{thickness|2}}}px;&amp;quot;&lt;br /&gt;
{{#if: {{{icon|}}} | {{#if: {{{sub-header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{{iconsize|45}}}&amp;quot; rowspan=&amp;quot;2&amp;quot; {{!}} [[Image:{{{icon}}}]] | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{{iconsize|45}}}&amp;quot; {{!}} [[Image:{{{icon}}}]]}} }}&lt;br /&gt;
&lt;br /&gt;
{{ #if: {{{header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{ #expr: {{#var:boxwith}} - {{#var:iconwith}} }}&amp;quot; valign=&amp;quot;{{{halign|bottom}}}&amp;quot; {{!}} '''{{{header}}}'''| }}&lt;br /&gt;
|- &lt;br /&gt;
{{ #if: {{{sub-header|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; width=&amp;quot;{{ #expr: {{#var:boxwith}} - {{#var:iconwith}} }}&amp;quot; valign=&amp;quot;top&amp;quot; {{!}} {{{sub-header}}} |}}&lt;br /&gt;
|-&lt;br /&gt;
{{ #if: {{{content|}}} | {{!}} style=&amp;quot;background-color: {{{content-color|#FFFFE0;}}}&amp;quot; colspan=&amp;quot;2&amp;quot; {{!}} {{#if: {{{center|}}}|&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;|}} {{{content}}} {{#if: {{{center|}}}|&amp;lt;/div&amp;gt;|}} |}}&lt;br /&gt;
|-&lt;br /&gt;
{{ #if: {{{description|}}} | {{!}} style=&amp;quot;background-color: {{{color|#8BC3DF;}}}&amp;quot; colspan=&amp;quot;2&amp;quot; {{!}} {{{description}}} |}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
ContentBox is a very flexible layout configuration tool. You can use it to render all sorts of content and to layout multiple pages in your articles. It is very configurable: icon, header, sub-header, content, description, border, border thickess, color, content color and size. &lt;br /&gt;
You can see how such a configurable box can be very easy and flexible to use. &lt;br /&gt;
==Usage==&lt;br /&gt;
Here is how you use it and the parameter list:&lt;br /&gt;
like every other template you include it by using the &lt;br /&gt;
&amp;lt;pre&amp;gt;{{ContentBox&lt;br /&gt;
|content= Content Goes here. (issue, for lists and other items it may be necessary to add the following hack {{!!}}. This is necessary due to weaknesses in the parser, that remove all white space. This is only one of the multiple flaws of the mediawiki parser.&lt;br /&gt;
}}&amp;lt;/pre&amp;gt; If no parameter apart from content are passed then the template uses a set default parameters.&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=359</id>
		<title>Template:CppSourceCode</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=359"/>
				<updated>2008-09-12T13:16:29Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  width=&amp;quot;800&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: #FF9900; border-width: 2px;&amp;quot;&lt;br /&gt;
|  bgcolor=&amp;quot;#FFCC33&amp;quot; | '''{{{description}}}'''&lt;br /&gt;
|- &lt;br /&gt;
| bgcolor=&amp;quot;#FFFFE0&amp;quot; |{{{code}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=358</id>
		<title>Template:CppSourceCode</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=358"/>
				<updated>2008-09-12T13:15:04Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  width=&amp;quot;800&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: #FF9900; border-width: 2px;&amp;quot;&lt;br /&gt;
|  bgcolor=&amp;quot;#FFCC33&amp;quot; | '''{{{description}}}'''&lt;br /&gt;
|- &lt;br /&gt;
| bgcolor=&amp;quot;#FFFFC0&amp;quot; |{{{code}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=357</id>
		<title>Template:CppSourceCode</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=357"/>
				<updated>2008-09-12T13:12:14Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  width=&amp;quot;800&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: #CCCC00; border-width: 2px;&amp;quot;&lt;br /&gt;
|  bgcolor=&amp;quot;#CCCC00&amp;quot; | '''{{{description}}}'''&lt;br /&gt;
|- &lt;br /&gt;
| bgcolor=&amp;quot;#DDDDFF&amp;quot; |{{{code}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=356</id>
		<title>Template:CppSourceCode</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Template:CppSourceCode&amp;diff=356"/>
				<updated>2008-09-12T13:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  width=&amp;quot;800&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;border: 0px; padding: 0px; border-style: solid; border-color: #CCCC00; border-width: 2px;&amp;quot;&lt;br /&gt;
|  bgcolor=&amp;quot;#CCCC00&amp;quot; | '''{{{description}}}'''&lt;br /&gt;
|- &lt;br /&gt;
| bgcolor=&amp;quot;#FFDDFF&amp;quot; |{{{code}}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Terrain_Extension&amp;diff=230</id>
		<title>Terrain Extension</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Terrain_Extension&amp;diff=230"/>
				<updated>2008-05-20T22:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[category: Extensions]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white |content=&lt;br /&gt;
The Terrain Extension extends Horde3D with the capability to render large landscapes. A special level of detail algorithm adapts the resolution of the terrain mesh so that near regions get more details than remote ones. The algorithm also considers the geometric complexity of the terrain to increase the resolution solely where this is really required. This makes the rendering fast and provides a high quality with a minimum of popping artifacts.&lt;br /&gt;
	&lt;br /&gt;
A height map is used to define the altitude of the terrain. The height map is a usual texture map that encodes 16 bit height information in two channels. The red channel of the texture contains the coarse height, while the green channel encodes finer graduations. The encoding of the information is usually done with an appropriate tool. If you just want to use 8 bit height information, you can simply copy the greyscale image to the red channel of the height map and leave the green channel black.&lt;br /&gt;
&lt;br /&gt;
= Installation Windows =	&lt;br /&gt;
To install the extension, simply copy the contents of the extension root directory to the Horde3D SDK folder and merge the directories. In Visual Studio, add the extension and sample projects to the solution. Then add the extension project to the project dependencies of the Horde3D Engine and the Horde3D Engine to the dependencies of the Terrain Sample. After that, include 'Terrain/extension.h' in 'egExtensions.cpp' of the engine and add '#pragma comment( lib, &amp;quot;Extension_Terrain.lib&amp;quot; )' to link against the terrain extension (under Windows). Finally, add the following line to ExtensionManager::installExtensions to register the extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
installExtension( Horde3DTerrain::getExtensionName, &lt;br /&gt;
Horde3DTerrain::initExtension, Horde3DTerrain::releaseExtension );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The extension is then part of the Horde3D DLL and can be used with the Horde3DTerrain.h header file.&lt;br /&gt;
&lt;br /&gt;
= Installation Linux =&lt;br /&gt;
Go to your target directory where you want to install Horde3D. Then extract the files, replace versions as needed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unzip Horde3D_SDK_1.0.0_Beta1.zip&lt;br /&gt;
unzip Horde3D_ExtTerrain_0.1.1.zip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now change Horde3D/Source/Horde3D Engine/egExtensions.cpp. Basically just uncomment all lines with code regarding the terrain extension:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--- Horde3D/Source/Horde3D Engine/egExtensions.cpp.old        2008-04-14 23:19:44.000000000 +0200&lt;br /&gt;
+++ Horde3D/Source/Horde3D Engine/egExtensions.cpp    2008-04-14 22:56:19.000000000 +0200&lt;br /&gt;
@@ -25,16 +25,16 @@&lt;br /&gt;
 #include &amp;quot;egExtensions.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Include files for extensions&lt;br /&gt;
-//#include &amp;quot;Terrain/Source/extension.h&amp;quot;&lt;br /&gt;
+#include &amp;quot;Terrain/Source/extension.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 // Lib files for extensions&lt;br /&gt;
-//#pragma comment( lib, &amp;quot;Extension_Terrain.lib&amp;quot; )&lt;br /&gt;
+#pragma comment( lib, &amp;quot;Extension_Terrain.lib&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 bool ExtensionManager::installExtensions()&lt;br /&gt;
 {&lt;br /&gt;
        // Install desired extensions here&lt;br /&gt;
-       //installExtension( Horde3DTerrain::getExtensionName, &lt;br /&gt;
Horde3DTerrain::initExtension, Horde3DTerrain::releaseExtension );&lt;br /&gt;
+       installExtension( Horde3DTerrain::getExtensionName, &lt;br /&gt;
Horde3DTerrain::initExtension, Horde3DTerrain::releaseExtension );&lt;br /&gt;
&lt;br /&gt;
        return true;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now fix Horde3D/Source/Horde3D Engine/makefile:&lt;br /&gt;
&amp;lt;pre&amp;gt;--- Horde3D/Source/Horde3D Engine/makefile.old      2008-04-01 20:42:58.000000000 +0200&lt;br /&gt;
+++ Horde3D/Source/Horde3D Engine/makefile     2008-04-14 23:09:49.000000000 +0200&lt;br /&gt;
@@ -6,13 +6,15 @@&lt;br /&gt;
        egRenderer.o egResource.o egScene.o egSceneGraphRes.o egShader.o egTextures.o \&lt;br /&gt;
        utImage.o utOpenGL.o ../Shared/utXMLParser.o&lt;br /&gt;
&lt;br /&gt;
+TERRAIN_OBJECTS = ../../../Extensions/Terrain/Source/extension.o &lt;br /&gt;
../../../Extensions/Terrain/Source/terrain.o&lt;br /&gt;
+&lt;br /&gt;
&lt;br /&gt;
 libHorde3D: $(OBJECTS)&lt;br /&gt;
-       g++ $(OBJECTS) -olibHorde3D.so -lGL -shared&lt;br /&gt;
+       g++ $(OBJECTS) $(TERRAIN_OBJECTS) -olibHorde3D.so -lGL -shared&lt;br /&gt;
        mv libHorde3D.so ../../Binaries/Linux_x86&lt;br /&gt;
&lt;br /&gt;
 %.o: %.cpp&lt;br /&gt;
-       g++ -c $&amp;lt; -o$@ -I../Shared -I../../Extensions -fPIC ${CFLAGS}&lt;br /&gt;
+       g++ -c $&amp;lt; -o$@ -I../Shared -I../../../Extensions -fPIC ${CFLAGS}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 clean:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using the 1.0.0 Beta1 on a 64 bit system you have to fix Horde3D/Source/Horde3D Engine/utImage.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;--- Horde3D/Source/Horde3D Engine/utImage.cpp.old   2008-04-01 23:28:22.000000000 +0200&lt;br /&gt;
+++ Horde3D/Source/Horde3D Engine/utImage.cpp 2008-04-14 23:03:28.000000000 +0200&lt;br /&gt;
@@ -1257,7 +1257,7 @@&lt;br /&gt;
          }&lt;br /&gt;
          return e(&amp;quot;outofmem&amp;quot;, &amp;quot;Out of memory&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
-      img_comp[i].data = (uint8*) (((int) img_comp[i].raw_data + 15) &amp;amp; ~15);&lt;br /&gt;
+      img_comp[i].data = (uint8*) (((size_t) img_comp[i].raw_data + 15) &amp;amp; ~15);&lt;br /&gt;
       img_comp[i].linebuf = NULL;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now we can compile the project: Call make in the following directories in the specified order:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Extensions/Terrain/Source&lt;br /&gt;
Horde3D&lt;br /&gt;
Extensions/Terrain/Sample&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now everything should be working. Go to Horde3D/Binaries/Linux_x86 to try the samples.&lt;br /&gt;
&lt;br /&gt;
= Using the extension =&lt;br /&gt;
&lt;br /&gt;
The extension defines the uniform *terBlockParams* and the attribute *terHeight* that can be used in a shader to render the terrain. To see how this is working in detail, have a look at the included sample shader.&lt;br /&gt;
&lt;br /&gt;
In the Terrain Sample distributed with the extension, there's also a normal map encoded in the heightmap texture. The data for the &lt;br /&gt;
normal map is encoded in the blue and alpha channel. A simple tool to create such a combined normal height map is integrated in the Horde3D Scene Editor. It can use 8-bit or 16-bit images as heightmap input. In case of 8-bit images you can also specify a smoothing operator to convert the 8-bit heightmap into a more smooth 16-bit one.&lt;br /&gt;
}} &amp;lt;!-- Right panel --&amp;gt;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |{{Extension_Summary|&lt;br /&gt;
name = Terrain Extension|&lt;br /&gt;
screenshot = H3Dterrain.jpg|&lt;br /&gt;
description = The Terrain Extension extends Horde3D with the capability to render large landscapes.|&lt;br /&gt;
version = 0.1.0|&lt;br /&gt;
horde3dversion = 0.15|&lt;br /&gt;
released = 2008-03-30|&lt;br /&gt;
author = Nicolas Schulz and Volker Wiendl|&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Tutorial_-_Hello_World&amp;diff=229</id>
		<title>Tutorial - Hello World</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Tutorial_-_Hello_World&amp;diff=229"/>
				<updated>2008-05-20T22:43:41Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content='''In this section we will create a simple application that loads a character and animates it using a walk cycle. You will see how straightforward it is to use the Horde3D API.''' &lt;br /&gt;
&lt;br /&gt;
As a first step you have to create an application that opens a window which can be used for rendering. This is a pretty standard task and if you are a novice and have problems with that on your platform use Google to find one of the numerous good tutorials on the net or have a look at the samples that come with the Horde3D SDK. The next step is to initialize an OpenGL context for our rendering window. You can do this manually or use the Horde3D Utility Library to make your life easier. After that is done we can finally get to the engine related part.&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= Simple Setup of the Horde3D renderer.|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
NodeHandle model = 0, cam = 0;&lt;br /&gt;
&lt;br /&gt;
void initGame( int winWidth, int winHeight )&lt;br /&gt;
{&lt;br /&gt;
    // Initialize engine&lt;br /&gt;
    Horde3D::init();&lt;br /&gt;
    Horde3D::resize( 0, 0, winWidth, winHeight );&lt;br /&gt;
    &lt;br /&gt;
    // Add pipeline resource&lt;br /&gt;
    ResHandle pipeRes = Horde3D::addResource( ResourceTypes::Pipeline, &amp;quot;standard.pipeline.xml&amp;quot;, 0 );&lt;br /&gt;
    // Add model resource&lt;br /&gt;
    ResHandle modelRes = Horde3D::addResource( ResourceTypes::SceneGraph, &amp;quot;character.scene.xml&amp;quot;, 0 );&lt;br /&gt;
    // Add animation resource&lt;br /&gt;
    ResHandle animRes = Horde3D::addResource( ResourceTypes::Animation, &amp;quot;walk.anim.xml&amp;quot;, 0 );&lt;br /&gt;
    // Load added resources&lt;br /&gt;
    Horde3DUtils::loadResourcesFromDisk( &amp;quot;&amp;quot; );&lt;br /&gt;
    &lt;br /&gt;
    // Add model to scene&lt;br /&gt;
    model = Horde3D::addNodes( RootNode, modelRes );&lt;br /&gt;
    // Apply animation&lt;br /&gt;
    Horde3D::setupModelAnimStage( model, 0, animRes, &amp;quot;&amp;quot; );&lt;br /&gt;
    &lt;br /&gt;
    // Add light source&lt;br /&gt;
    NodeHandle light = Horde3D::addLightNode( RootNode, &amp;quot;Light1&amp;quot;, 0, &amp;quot;LIGHTING&amp;quot;, &amp;quot;SHADOWMAP&amp;quot; );&lt;br /&gt;
    // Set light position and radius&lt;br /&gt;
    Horde3D::setNodeTransform( light, 0, 20, 0, 0, 0, 0, 1, 1, 1 );&lt;br /&gt;
    Horde3D::setLightParam( light, LightNodeParams::Radius, 50.0f );&lt;br /&gt;
	&lt;br /&gt;
    // Add camera&lt;br /&gt;
    NodeHandle cam = Horde3D::addCameraNode( RootNode, &amp;quot;Camera&amp;quot;, pipeRes );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The first line of the code above declares two global handles to Horde scene graph nodes. All objects in Horde are accessible via handles, a concept similar to pointers. The first thing we need to do in our initGame function to use Horde3D is initializing the engine. This happens with the function init. After that we tell the engine the size of our rendering window so that it can adjust the viewport.&lt;br /&gt;
&lt;br /&gt;
The next step is to load the required resources. In Horde resources are data files that are loaded once and can be referenced by several objects for rendering. The function addResource takes the resource type we want to add and the name of the resource (usually the filename) as parameters and returns a handle to the created resource object. In our case we want a model which is represented as a scene graph file in Horde and additionally an animation. Now the resources are created but we still need to load them. Horde supports loading from any sources including encrypted archives or a network but in this case we just want to load our resources from the local hard disk which is done with the utility function loadResourcesFromDisk. Besides our model and animation we also load a pipeline resource. A pipeline defines how the the scene is rendered and can be used to realize post-processing effects or high dynamic range rendering. For the beginning you can just use the files that come with the SDK samples.&lt;br /&gt;
&lt;br /&gt;
After we have loaded the required resources we can finally build up the scene graph. The scene graph represents the objects in our virtual world in a hierarchical tree structure. First we add the model that we have loaded before. We use the function addNodes for doing this which takes a scene graph resource and a parent node. The parent is the scene object to which the new node is attached, in our case just the root node which is the base of the virtual world. Similar to addResource this function also returns a handle to the created scene graph subtree. After that we assign the loaded animation to our model node with the function setupModelAnimStage. Horde allows you to apply several different animations to a model and makes it possible to blend and mix them but for the beginning one should be enough. Now that adding the model is finished we still need a light source. It would be possible to load another scene graph file which contains the light source but we want to add it manually by using the addLightNode function. This function requires several parameters specifying the shaders used for rendering. More information on this can be found in other sections of the manual. The next step is to set the position and orientation which is done with setNodeTransform. After that we specify the light radius which defines the zone of influence using setLightParam. Finally we still need a camera which represents the viewer. It is added with the function addCameraNode and takes our loaded pipeline resource as parameter.&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= Game Loop and Destructor|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void gameLoop( float fps )&lt;br /&gt;
{&lt;br /&gt;
    static float t = 0;&lt;br /&gt;
    &lt;br /&gt;
    // Increase animation time&lt;br /&gt;
    t = t + 10.0f * (1 / fps);&lt;br /&gt;
    &lt;br /&gt;
    // Play animation&lt;br /&gt;
    Horde3D::setModelAnimParams( model, 0, t, 1.0f );&lt;br /&gt;
    &lt;br /&gt;
    // Set new model position&lt;br /&gt;
    Horde3D::setNodeTransform( model, t * 10, 0, 0,     // Translation&lt;br /&gt;
                                           0, 0, 0,     // Rotation&lt;br /&gt;
                                           1, 1, 1 );   // Scale&lt;br /&gt;
										   &lt;br /&gt;
    // Render scene &lt;br /&gt;
    Horde3D::render( cam );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void releaseGame()&lt;br /&gt;
{&lt;br /&gt;
    // Release engine&lt;br /&gt;
    Horde3D::release();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The next function in our sample is the game loop which is called once every frame. Here we will animate our character model. For doing this we define a time counter which is increased in every frame. To make the animation speed independent from the framerate, we scale the time step by the inverse of the current frames per second value. After that we tell the engine to update the model animation using the setModelAnimParams function. We could also specify a blend weight for combining animations here but since we have only one animation we don't need that. Now we can displace our character a bit so that it moves through the scene. This is achieved by updating the model node transformation. Finally we need to tell the engine to render the scene and recalculate the model animation. This happens with the function render that expects the camera from which the scene is viewed.&lt;br /&gt;
&lt;br /&gt;
The last function releaseGame is called when the application is closed. All we have to do here is freeing the engine with the release function.&lt;br /&gt;
&lt;br /&gt;
That's it so far with the basic tutorial. You can have a look at the Usage Guide now to learn more details.&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary|&lt;br /&gt;
name = Hello World Tutorial|&lt;br /&gt;
screenshot = H3DPlaceHolder.png|&lt;br /&gt;
description = This tutorial introduces the basic steps necessary to setup horde3d|&lt;br /&gt;
version = 1.0|&lt;br /&gt;
horde3dversion = 1.0 beta|&lt;br /&gt;
released = 2008-03-30|&lt;br /&gt;
author = Nicolas Schulz|&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Tutorials]]&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Dot_Product_Detail_Texturing&amp;diff=228</id>
		<title>Shading Technique - Dot Product Detail Texturing</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Dot_Product_Detail_Texturing&amp;diff=228"/>
				<updated>2008-05-20T22:41:33Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|  border=&amp;quot;0&amp;quot; &lt;br /&gt;
| {{ContentBlock|width=800|color=white&lt;br /&gt;
|content={{!!}}&lt;br /&gt;
== Overview ==&lt;br /&gt;
'''Defining a detail texture:''' a texture that contains commonly occuring high frequency surface variations.&lt;br /&gt;
&lt;br /&gt;
'''Why might you want to use this technique?'''&amp;lt;br/&amp;gt;&lt;br /&gt;
- As a fall-back for lower end hardware&amp;lt;br/&amp;gt;&lt;br /&gt;
- In circumstances where mid-ranged detail is more important than up close&lt;br /&gt;
&lt;br /&gt;
== The Technique ==&lt;br /&gt;
&lt;br /&gt;
'''Requirements:'''&amp;lt;BR/&amp;gt;&lt;br /&gt;
- RGB Color Map&amp;lt;BR/&amp;gt;&lt;br /&gt;
- RGBA Opacity/Blend Map&amp;lt;BR/&amp;gt;&lt;br /&gt;
- RGBA Composite Detail Textures&amp;lt;BR/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= GLSL Code|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
vec3 col = texture2D(__ColorMap__, texCoords).rgb;&lt;br /&gt;
vec4 blend = texture2D(__BlendMap__, texCoords).rgba;&lt;br /&gt;
vec4 detVal = texture2D(__DetailComposite__, texCoords * 200.0).rgba;&lt;br /&gt;
float dotValue = dot(detVal, blend);&lt;br /&gt;
float sVal = 1.0 - (dotValue * 2.0);&lt;br /&gt;
col += (-sVal);&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The objective of the technique is to use the channels of an RGBA image to hold four different grayscale detail texture maps which are extracted by the dot product of the vectors for the composite image and its corresponding RGBA blend, dominance, opacity, w/e map.&lt;br /&gt;
&lt;br /&gt;
Because multiplication against a range of 0 to 1 can only reduce the brightness of a texture the consequence of repeating this with multiple blends and/or overlapping layers is that the surface will continually get darker. By transforming the detail from a range of 0 to 1 to a range of -1 to +1 addition can be used to make it possible to darken the texture by adding a negative value to it and lighten it by adding a positive value.  The last five lines of the shader can be repeated for any number of blend and composite maps.&lt;br /&gt;
&lt;br /&gt;
The line:&lt;br /&gt;
&lt;br /&gt;
float sVal = 1.0 - (dotValue * 2.0);&lt;br /&gt;
&lt;br /&gt;
accomplishes this objective, however it inverts the light and dark values making it necessary to add the opposite of &amp;quot;sVal&amp;quot; to invert it again so the textures will behave as expected.&lt;br /&gt;
&lt;br /&gt;
The technique is very fast and ideal for use as a material fallback for machines with lower end hardware.  With the addition of 1D color lookups for some of the detail maps it could also add small highlights such as flowers and sea-shells, this would require the addition of 1D textures to Horde3D, so it is not currently an option at the moment, but is worth thinking about. 2D textures could be used however.&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= Full GLSL Fragment Shader for Terrain Lighting Context|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
uniform sampler2D tex0, tex1, tex2, tex3;&lt;br /&gt;
varying vec4 pos, vsPos;&lt;br /&gt;
varying vec2 texCoords;&lt;br /&gt;
				&lt;br /&gt;
void main( void )&lt;br /&gt;
{&lt;br /&gt;
	vec3 colMap = texture2D( tex1, texCoords).rgb;&lt;br /&gt;
	vec4 blendMap = texture2D(tex2, texCoords).rgba;&lt;br /&gt;
	vec4 blendTex = texture2D(tex3, texCoords * 300.0).rgba;&lt;br /&gt;
	float detResult = dot(blendTex, blendMap);&lt;br /&gt;
	detResult = 1.0 - (detResult * 2.0);&lt;br /&gt;
	colMap += (-detResult);&lt;br /&gt;
&lt;br /&gt;
	vec4 texel = texture2D( tex0, texCoords ) * 2.0 - 1.0;&lt;br /&gt;
	float ny = sqrt( max( 1.0 - texel.b*texel.b - texel.a*texel.a, 0.0 ) );&lt;br /&gt;
	vec3 normal = vec3( texel.b, ny, texel.a );&lt;br /&gt;
					&lt;br /&gt;
	gl_FragColor.rgb =&lt;br /&gt;
	calcPhongSpotLight( pos.xyz, normalize( normal ), colMap, 0.0, 16.0, -vsPos.z, 0.3 );&lt;br /&gt;
}&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Example Result == &lt;br /&gt;
[[Image:signeddetmappingmp3.jpg]]&lt;br /&gt;
&lt;br /&gt;
== To-Do List for this Article ==&lt;br /&gt;
- Add more pictures&amp;lt;BR/&amp;gt;&lt;br /&gt;
- Figure out proper Wiki formatting for code and lists&amp;lt;BR/&amp;gt;&lt;br /&gt;
- If in some spots something that isn't as clear as it could be, edit it or point it out please&lt;br /&gt;
- Posted by AcidFaucet, for fastest response in regards to this article: send a PM&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
|  valign=&amp;quot;top&amp;quot; | {{Extension_Summary&lt;br /&gt;
|name = Technique - Texturing&lt;br /&gt;
|screenshot = Signeddetmappingmp3Thumb.jpg&lt;br /&gt;
|description = Using the dot product of vectors and signed textures for high frequency detail.&lt;br /&gt;
|version = 1.0&lt;br /&gt;
|horde3dversion = 1.0 beta&lt;br /&gt;
|released = 2008-04-20&lt;br /&gt;
|author = [http://www.horde3d.org/forums/memberlist.php?mode=viewprofile&amp;amp;u=128 AcidFaucet]|&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
[[category: Technique]]&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palette_Coloring&amp;diff=227</id>
		<title>Shading Technique - Palette Coloring</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palette_Coloring&amp;diff=227"/>
				<updated>2008-05-20T22:40:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Explanation of the Technique ==&lt;br /&gt;
&lt;br /&gt;
By definition palette recoloration is the use of defined colors that replace or modify any other colors within their specified domain.  The best example in use is team colors in real-time strategy titles or the color variations of enemies in role-playing games.&lt;br /&gt;
&lt;br /&gt;
== Example Fragment Shader ==&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= GLSL Code|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 Rkey;&lt;br /&gt;
uniform vec4 Bkey;&lt;br /&gt;
uniform vec4 Gkey;&lt;br /&gt;
uniform vec4 Akey;&lt;br /&gt;
uniform sampler2D tex0;&lt;br /&gt;
uniform sampler2D tex1;&lt;br /&gt;
varying vec3 tsbNormal;&lt;br /&gt;
varying vec4 pos, vsPos;&lt;br /&gt;
varying vec2 texCoords;&lt;br /&gt;
&lt;br /&gt;
void main( void )&lt;br /&gt;
{&lt;br /&gt;
	vec3 albedo = texture2D( tex0, texCoords ).rgb;&lt;br /&gt;
	vec3 outAl;&lt;br /&gt;
	float luminous;&lt;br /&gt;
	vec4 blender = texture2D( tex1, texCoords ).rgba;&lt;br /&gt;
	outAl = (Rkey.rgb * blender.r) + &lt;br /&gt;
		(Bkey.rgb * blender.b) + &lt;br /&gt;
		(Gkey.rgb * blender.g) + &lt;br /&gt;
		(Akey.rgb * blender.a);&lt;br /&gt;
	luminous = (Rkey.a * blender.r) +&lt;br /&gt;
		(Bkey.a * blender.b) +&lt;br /&gt;
		(Gkey.a * blender.g) +&lt;br /&gt;
		(Akey.a * blender.a);&lt;br /&gt;
	vec3 final = albedo-luminous + outAl-luminous;&lt;br /&gt;
	gl_FragColor.rgb =&lt;br /&gt;
		calcPhongSpotLight( pos.xyz, normalize( tsbNormal ), final, 0.5, -vsPos.z );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Explanation of the Fragment Shader ==&lt;br /&gt;
&lt;br /&gt;
This technique uses an RGBA blend map to define the regions and intensities at which the uniforms are used for color replacement.  The uniforms can be thought as being RGBL (Red, Green, Blue, Luminance/Brightness).&lt;br /&gt;
&lt;br /&gt;
The principle concept is that the base texture is colored based solely by value (in reference to the &amp;quot;art&amp;quot; definition of value as being the variance of light and dark in a composition) or color that will be unaltered.  The uniform is adapted to the value and then adjusted by its luminosity in order to enable proper adjustment of the value of the RGB color.&lt;br /&gt;
&lt;br /&gt;
== To Do List for This Article ==&lt;br /&gt;
&lt;br /&gt;
- Cut down on esoteric terms or explain those that are esoteric&amp;lt;BR/&amp;gt;&lt;br /&gt;
- Explain the not so obvious reasons behind the choice of math operations&amp;lt;BR/&amp;gt;&lt;br /&gt;
- Add pictures!!&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Horde3D_Wiki:Community_portal&amp;diff=226</id>
		<title>Horde3D Wiki:Community portal</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Horde3D_Wiki:Community_portal&amp;diff=226"/>
				<updated>2008-05-20T22:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__{{ContentBlock|width=800|color=orange&lt;br /&gt;
|content= '''The community portal section of the Horde3D wiki contains community contributed articles that are not part of the official documentation. Feel free to add articles to our wiki or links to external tutorials.'''}}&lt;br /&gt;
{{SpacerBlock}}&lt;br /&gt;
{{ContentBlock|width=800&lt;br /&gt;
|header=Horde3D is a cross-platform graphics engine. The currently supported platform are Windows, Linux and Mac OS X.&lt;br /&gt;
|content={{!!}}&lt;br /&gt;
==How-To setup a Horde3D Development Environment==&lt;br /&gt;
*[[Horde3D Development Environment for Windows]]&lt;br /&gt;
*[[Horde3D Development Environment for Linux]]&lt;br /&gt;
*[[Horde3D Development Environment for Mac OS X]]&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
[[Category: Tutorials]]&lt;br /&gt;
&lt;br /&gt;
Fell free to write your tutorials here, for the benefit of the whole community. &lt;br /&gt;
===Beginner===&lt;br /&gt;
#[[Tutorial - Hello World]] - In this section we will create a simple application that loads a character and animates it using a walk cycle.&lt;br /&gt;
#[[Tutorial - Picking]] - In this section we will demonstrate picking the node under the mouse cursor&lt;br /&gt;
#[[Tutorial - Simple HUD]] - How to use showOverlay to create a simple HUD.&lt;br /&gt;
&lt;br /&gt;
===Intermediate===&lt;br /&gt;
&lt;br /&gt;
===Advanced===&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
[[Category: Techniques]]&lt;br /&gt;
&lt;br /&gt;
===Shading===&lt;br /&gt;
#[[Shading Technique - Dot Product Detail Texturing]] - Using the dot product of vectors and signed textures for high frequency detail&lt;br /&gt;
#[[Shading Technique - Palette Coloring]] - Quick and dirty palette recoloration of objects&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palette_Coloring&amp;diff=224</id>
		<title>Shading Technique - Palette Coloring</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palette_Coloring&amp;diff=224"/>
				<updated>2008-05-20T22:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: Shading Technique - Palatte Coloring moved to Shading Technique - Palette Coloring: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Explanation of the Technique ==&lt;br /&gt;
&lt;br /&gt;
By definition palatte recoloration is the use of defined colors that replace or modify any other colors within their specified domain.  The best example in use is team colors in real-time strategy titles or the color variations of enemies in role-playing games.&lt;br /&gt;
&lt;br /&gt;
== Example Fragment Shader ==&lt;br /&gt;
&lt;br /&gt;
{{CppSourceCode|&lt;br /&gt;
description= GLSL Code|&lt;br /&gt;
code=&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
uniform vec4 Rkey;&lt;br /&gt;
uniform vec4 Bkey;&lt;br /&gt;
uniform vec4 Gkey;&lt;br /&gt;
uniform vec4 Akey;&lt;br /&gt;
uniform sampler2D tex0;&lt;br /&gt;
uniform sampler2D tex1;&lt;br /&gt;
varying vec3 tsbNormal;&lt;br /&gt;
varying vec4 pos, vsPos;&lt;br /&gt;
varying vec2 texCoords;&lt;br /&gt;
&lt;br /&gt;
void main( void )&lt;br /&gt;
{&lt;br /&gt;
	vec3 albedo = texture2D( tex0, texCoords ).rgb;&lt;br /&gt;
	vec3 outAl;&lt;br /&gt;
	float luminous;&lt;br /&gt;
	vec4 blender = texture2D( tex1, texCoords ).rgba;&lt;br /&gt;
	outAl = (Rkey.rgb * blender.r) + &lt;br /&gt;
		(Bkey.rgb * blender.b) + &lt;br /&gt;
		(Gkey.rgb * blender.g) + &lt;br /&gt;
		(Akey.rgb * blender.a);&lt;br /&gt;
	luminous = (Rkey.a * blender.r) +&lt;br /&gt;
		(Bkey.a * blender.b) +&lt;br /&gt;
		(Gkey.a * blender.g) +&lt;br /&gt;
		(Akey.a * blender.a);&lt;br /&gt;
	vec3 final = albedo-luminous + outAl-luminous;&lt;br /&gt;
	gl_FragColor.rgb =&lt;br /&gt;
		calcPhongSpotLight( pos.xyz, normalize( tsbNormal ), final, 0.5, -vsPos.z );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== Explanation of the Fragment Shader ==&lt;br /&gt;
&lt;br /&gt;
This technique uses an RGBA blend map to define the regions and intensities at which the uniforms are used for color replacement.  The uniforms can be thought as being RGBL (Red, Gree, Blue, Luminance/Brightness).&lt;br /&gt;
&lt;br /&gt;
The principle concept is that the base texture is colored based solely by value (in reference to the &amp;quot;art&amp;quot; definition of value as being the variance of light and dark in a composition) or color that will be unaltered.  The uniform is adapted to the value and then adjusted by its luminosity in order to enable proper adjustment of the value of the RGB color.&lt;br /&gt;
&lt;br /&gt;
== To Do List for This Article ==&lt;br /&gt;
&lt;br /&gt;
- Cut down on esoteric terms or explain those that are esoteric&amp;lt;BR/&amp;gt;&lt;br /&gt;
- Explain the not so obvious reasons behind the choice of math operations&amp;lt;BR/&amp;gt;&lt;br /&gt;
- Add pictures!!&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	<entry>
		<id>http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palatte_Coloring&amp;diff=225</id>
		<title>Shading Technique - Palatte Coloring</title>
		<link rel="alternate" type="text/html" href="http://horde3d.org/wiki/index.php?title=Shading_Technique_-_Palatte_Coloring&amp;diff=225"/>
				<updated>2008-05-20T22:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Kal: Shading Technique - Palatte Coloring moved to Shading Technique - Palette Coloring: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Shading Technique - Palette Coloring]]&lt;/div&gt;</summary>
		<author><name>Kal</name></author>	</entry>

	</feed>