Patent ID: 7427986

Claim:
A method of providing images of an illuminated scene wherein one or more of a set of computer-generated objects are illuminated by one or more of a set of computer-generated light sources, and the objects are characterized by a set of object parameters including at least one geometric parameter and at least one surface parameter that represents the surface's response to incident illumination, and the light sources are characterized by source parameters, the method comprising: in a first phase, executing a set of surface shaders on the objects to generate a set of surface response caches, each surface response cache storing values for a respective object parameter for each of a plurality of pixel locations in an image plane, the values being determined independent of the light sources and providing inputs to an arbitrary desired illumination model; in a second phase, (a) for each of a plurality of the light sources having respective sets of source parameter values, executing a light shader for that light source in a graphics processing unit (GPU), with the surface response caches as inputs, to determine a light contribution for that light source's interaction with the objects according to the illumination model, and caching the light contributions; (b) in the GPU, combining the cached light contributions for the plurality of light sources to provide composite lighting information representing the interaction of the plurality of light sources with the objects; (c) displaying the composite lighting information in the form of an image depicting the illuminated objects; and (d) in response to receiving user input signifying one or more changed source parameter values for a given light source, in the GPU, re-executing the light shader for the given light source to modify the composite lighting information in substantially real time, and displaying the composite lighting information, so modified, in the form of a modified image depicting the illuminated objects with the changed source parameter values.