Thought this might be of interest. Still reading it
http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=139&page=1
http://www.acmqueue.com/modules.php?name=Content&pa=showpage&pid=139&page=1
The current leader in shading languages is Pixar's RenderMan. James Kajiya formulated rendering as a light transport problem.5 RenderMan defines three categories of shader, based on Kajiya's formula:
1. Light source shaders. Calculate the lighting term, which is the color and intensity of light emitted from a source in a particular direction.
2. Surface shaders. Calculate the integral of the bidirectional reflectance function with the incoming light distribution.
3. Volume shaders. Calculate scattering effects through participating media such as dusty air, salty water, fog, and smoke. Other participating media include translucent materials such as marble, skin, and plants.6
The current generation of hardware shaders differs from RenderMan fundamentally; RenderMan is concerned with the description of shaders and lighting, whereas hardware shaders expose the pixel and vertex processors explicitly. Nonetheless, Mark Peercy and colleagues have demonstrated hardware acceleration of Pixar's RenderMan shading system.7 The approach they describe is innovative; the OpenGL architecture is treated as a general-purpose SIMD (single instruction stream, multiple data stream) computer, and a compiler translates RenderMan into commands to OpenGL—in essence, treating OpenGL as assembly language. Computation of the shader is performed in the framebuffer directly, using framebuffer-blended copy operations as superscalar computations. Eric Chan and colleagues have another approach, using a method to translate directly from shading languages such as RenderMan to multipass hardware shaders.8