Difference between revisions of "Terrain Extension"
From Horde3D Wiki
(Needs further editing. The <pre> should be avoided because it turns off the fixed-width layout. If it is cude use the CppSource template. in this case it was logs so i did not remove the tags.) |
m |
||
Line 2: | Line 2: | ||
{| border="0" | {| border="0" | ||
| {{ContentBlock|width=800|color=white |content= | | {{ContentBlock|width=800|color=white |content= | ||
− | The Terrain Extension extends Horde3D with the capability to render large landscapes. A special | + | 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 resoultion solely where this is really required. This makes the rendering fast and provides a high quality with a minimum of popping artifacts. |
− | 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 resoultion solely where this is really required. This makes the | ||
− | rendering fast and provides a high quality with a minimum of popping artifacts. | ||
− | A height map is used to define the altitude of the terrain. The height map is a usual texture | + | 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. |
− | 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. | ||
= Installation Windows = | = Installation Windows = | ||
− | To install the extension, simply copy the contents of the extension root directory to the Horde3D | + | 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, "Extension_Terrain.lib" )' to link against the terrain extension (under Windows). Finally, add the following line to ExtensionManager::installExtensions to register the extension: |
− | 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, "Extension_Terrain.lib" )' to link | ||
− | against the terrain extension (under Windows). Finally, add the following line to ExtensionManager::installExtensions | ||
− | to register the extension: | ||
<pre> | <pre> | ||
Line 114: | Line 99: | ||
= Using the extension = | = Using the extension = | ||
− | The extension defines the uniform *terBlockParams* and the attribute *terHeight* that can be used | + | 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. |
− | in a shader to render the terrain. To see how this is working in detail, have a look at the included | ||
− | sample shader. | ||
In the Terrain Sample distributed with the extension, there's also a normal map encoded in the heightmap texture. The data for the | In the Terrain Sample distributed with the extension, there's also a normal map encoded in the heightmap texture. The data for the | ||
− | normal map is encoded in the blue and alpha channel. A simple tool to create such a | + | 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. |
− | 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. | ||
}} <!-- Right panel --> | }} <!-- Right panel --> | ||
| valign="top" |{{Extension_Summary| | | valign="top" |{{Extension_Summary| |