This picture shows four frames of an animation made with a ray tracer I am developing for my personal education.
The shadows on the ground slide as an animated light source follows a circular path above the terrain.
The height field is not converted into a polygonal mesh, but is ray traced directly, with a technique similar to the Grid Tracing(GT) algorithm ["Grid Tracing: Fast Ray Tracing for Height Fields", F. Kenton Musgrave, 1989].
The main differences are in the 2d grid traversal and in the raysurface interections calculations.
Infact, like GT, to reduce the number of the raytriangle intersection tests, the algorithm finds the height field cells intersecated by the orthogonal projection of the ray on the ground plane, but while GT uses a modified version of the Bresenham line drawing algorithm to scan these cells, I perform a 2d traversal of the grid like in ["A Fast Voxel Traversal Algorithm for Ray Tracing", J. Amanatides, A. Woo, 1987].
About the second difference: GT first finds the intersection point of the ray with the plane of a triangle and then, if this intersection occours, checks, with a fast test derived from the "regular structure" of a height field, if this point is in the triangle. A big disavantage of this approach is the need of the plane equation for each triangle of the height field. So I simply used the raytriangle intersection routine described in ["Fast, Minimum Storage RayTriangle Intersection", T. Möller, B. Trumbore, 1997].
The vertex normals are computed with finite differences.
For the curious: the alien landscape of the video is rendered from a "unusual " height map...see the bottom link for more details.
The video can be downloaded from http://risapi.sourceforge.net/index.html#d100903.
Please forgive (and forget) my poor English;)
