Pyramid Shader started out as my term project for Bernie's Geovisualization Algorithms class, but we continued development afterwards, and as I shifted to working on my thesis, he took the reins of the project while I mostly tested the features he added or investigated new uses for them. We tweaked the interface to be more user-friendly, and then he bundled in the products of the other students' research as well, plus a few other innovations from other cartography researchers. It is now a very useful terrain shading tool.

So, it's time to write a user manual.

Installation

You can download Pyramid Shader as a .jar, .exe, or .app here. Either install the OS-specific versions, or simply run the jar file (you'll need Java 8 installed for any of these options). Run your executable of choice to start the software.

Using Pyramid Shader

Pyramid Shader will start out by asking you for an ASCII grid file. This is basically just a text file that has a bit of header information and then a long table of elevation values. Since you'll most likely be starting with a GeoTiff, you'll need to convert it. There are several options here: ArcGIS, Global Mapper, and Geographic Imager are the major proprietary programs that can do this, but you can also do it with Landserf, QGIS, GDAL, or SAGA, all four of which are free.

If you want to get right to using Pyramid Shader, you can use this grid, which I'll be using for the examples. It's the same region as the image above, a combination of elevation and bathymetry data (courtesy of GEBCO). Unzip the archive into a directory of your choice.

Once you select the grid (the file with the .asc extension), Pyramid Shader will load it and then generate the pyramid stack. When using larger grids, you may encounter an out-of-memory error at this point, depending on how much RAM you have and how big the grid is. I find that if you have 12 GB of RAM or less, it is best to keep the longest dimension of your grid below 5000 pixels (or cells, rows, columns, or whatever your preferred terminology). If you encounter the memory error, you'll need to downsample your grid and try again. A smaller grid is generally desirable anyway, as certain useful algorithms, most notably the local hypsometric color, take much, much longer on larger grids.