For the past year I've been learning to create real-time vertex and pixel shaders for use in video games. I'm writing them in a high level shading language called Cg that was developed by Nvidia. I've been blown away by how much control an artist can have over the exact appearance of the surface of an object just by writing a few lines of code. Especially when using DX9 class hardware, we can now make real-time surfaces that look just like they were rendered in software.

I've decided to write several tutorials on the process of writing shaders and controlling the appearance of real-time surfaces. I want to share the information I've learned because shader writing can be a great artists tool, and because it's a very technical skill that mosts artists aren't familiar with.

In the coming months I'm planning to write tutorials on basic vertex and pixel shaders, different lighting equations, relection and refraction, ambient occlusion, using high dynamic range images, and hopefully a lot more.

To begin, I've written two tutorials explaining the process of creating, editing, and applying normal maps. I hope you enjoy them - and don't forget to check back here every once in a while to find the new tutorials I've posted.

This tutorial explains the process of creating normal maps which are used to give the illusion that real-time models have more detailed surfaces. The tutorial shows several techniques for creating normal maps and gives step by step instructions.

After writing the first tutorial, I compiled a list of all of the extra information that I wanted to include on the "Tips and Tricks" page. The list ended up being so long that I decided to create a whole new tutorial. This one contains more detailed information about creating models for normal maps, generating normal maps, editing normal maps, and applying normal maps. (I've completed all but the last page of this one.)

The newest versions of 3DS Max allow you to apply real-time HLSL shaders to your model right in the real-time viewport. This allows you to use normal mapping shaders and other effects without needing any extra plug-ins. This tutorial explains how to apply and use real-time HLSL shaders in 3DS Max 6 and 7.