Terrain Tutorial 1: Grid and Camera Movement
This tutorial will cover the basics of rendering a terrain grid using DirectX 11. Before getting into more advanced terrain concepts you should be able to render a basic grid and have good camera functionality and that will be the purpose of this tutorial.
With a good camera that can move around the terrain easily it can help debugging issues that occur during development.
Tutorial 2: Height Maps
Height maps are just that, a mapping of height points stored in a file. The most common method of storing a height map is using a bitmap, raw, text, or binary file and storing the height of the terrain using a value from 0-255 with 0 being the lowest height
of the terrain and 255 being the maximum height. Grey scale bitmaps and .raw files lend themselves well to this since you can use the intensity of the grey color to represent the height. This also makes them very easy to edit and manipulate with drawing programs
or mathematical algorithms.
Tutorial 3: Terrain Lighting
The first type of lighting we are going to implement for the terrain will be a combination of directional diffuse lighting and ambient lighting. The directional diffuse lighting equation is modeled after how sunlight illuminates the earth. So for the terrain
engine this is the ideal form of light to start working with. Secondly we will combine ambient light into the light equation so that we slightly illuminate surfaces that are not illuminated by directional light. In this way we also simulate how bouncing light
particles light up surfaces on the earth even though the surfaces are not directly illuminated by the sun.
Tutorial 4: Terrain Texturing
You can create the illusion of a much larger terrain by using a texture that has a lot of fine detail in it. As well the reverse applies too so you can use a texture with less fine details and it will change the terrain look to appear smaller. The real key
is using a texture that has the right amount of detail and repeating it just the right amount of times to create the terrain look you are going for.
Tutorial 5: Quad Trees
This terrain tutorial will cover how to implement quad trees using DirectX 11 and C#.
Tutorial 6: Height Based Movement
The quad tree technique that we covered in the previous tutorial also offers another advantage that I wanted to cover in a separate tutorial. With the ability to quickly eliminate polygons through culling non-visible nodes we can also determine what node we
are currently inside and cull everything else. What that then allows us to do is a line-triangle intersection check with just a small number of triangles in the current node instead of the entire terrain. That information can then be used to determine the
height of the triangle that is currently beneath the camera. Knowing the height allows us to place the camera just above the terrain by a fixed amount that is modified then as you move around the terrain.