This demo is just here for posterity - it formed part of my August 2002 coding portfolio when I was first applying for jobs in the games industry. Be warned, there’s some seriously dodgy coding going on here…
Cubic Shadow Mapping
This demo shows a variation on shadow mapping using cube maps and pixels shaders to all shadowing from omnidirectional light sources.
The screenshot shows a torus knot rendered using a cubic shadow map for each point light source in the scene, showing that shadowing can occur all around and even inside the object. The light used is a per-pixel attenuated point source and each object in the scene is fairly low-poly with a normal map for a bumped diffuse response.
Because there is currently no hardware support for cubic depth maps, the shadow mapping is done in pixel shaders using the alpha channel of a cubic environment map, and then each light is blended into the scene using the frame buffer alpha channel. This adds an overhead of 8 passes per light per frame, which I hope explains why there are only 2 lights in this scene. :)
This application requires Windows 2000/XP, DirectX 8.1 and GeForce3 card or above with the latest nVidia drivers.
The source code requires Visual Studio 7 and the DirectX 8.1 SDK to compile. The textures required for the demo aren”t included in the zip; download the binaries to get the textures.
In addition, you will need the nvidia shader assembler which is used to compile vertex and pixel shader assembler from within the IDE. You can download nvasm here.
- StormVision 3D Textures for the bumpmaps used in the demo.