Programmable graphics processing units (GPUs) provide the horsepower necessary to render realistic graphics in real time, but place a new burden on programmers. No longer enough to build polygon engines with simple lighting and textures. Programmers need an understanding of lights and surface properties at a theoretical level.