Blinn Phong Reflection Extension for Multiple Ambient Lights

This article describes the Blinn-Phong Reflection model, one of the simplest illumination model in computer graphics. The BPRM uses combination of diffuse reflection (like rough dim materials), specular reflection (like smooth shiny materials) and approximation of ambient light (lighting in places which aren't lightened by direct light rays).

The BPRM was used until recent times in fixed graphic piplelines of graphics APIs like OpenGL and DirectX. There is no doubt that there are other illumination models and techniques and in particular, programmable graphics pipelines enable developers to implement other illumination models that may have advantages of the BPRM. However, there are good reason for understanding and implementing the BPRM

However, there are good reason for understanding and implementing the BPRM:

Cost Effective w.r.t. Memory, Bandwidth, and Processor Utilization
Despite other - more advanced - illumination models can certainly yield more impressive results than BPRM, the BPRM is very cost effective w.r.t. to memory, bandwidth, and processor utilization, and can be effectively implemented on low-cost programmable graphics pipelines. In particular, BPRM is a local illumination model in which the illumination of a fragment does not affect the illumination of other fragments. Lighting models providing better approximations of illumination may have higher cost w.r.t. memory, bandwidth, or processor utilization.
Dynamic
A static lighting model is a lighting model in which either the objects or the lighting does not change. These static lighting models in particular allow for precomputation (e.g. precomputed lightmaps) which offload processor utilization on memory utilization. Whilst the results of these static lighting models might be impressive, these models may fall short fall short when scenes are dynamic i.e. when the objects or the lighting changes: If either changes, then unviably expensive recomputations might be required. Dynamic lighting models on the converse fully support changes to objects and lighting. BPRM is such a dynamic lighting model and fully supports changes to objects and lighting.

BPRM was included in fixed-function graphics APIs like OpenGL and DirectX. Nowadays, it is possible to re-implemented the fixed-function BPRM in programmable graphics pipelines. The power of programmable graphics pipelines and hardware made other illumination models possible, however, BPRM is still attractive: It is still a cost effective (see above) dynamic (see above) illumination model that is - as we shall see - easy to understand, easy to implement, and easy to use and delivers satisfying results in many cases.

The Blinn-Phong Shading Model

Phong reflection model uses combination of diffuse reflection (like rough dim materials), specular reflection (like smooth shiny materials) and approximation of ambient lighting (lighting in places which aren't lightened by direct light rays). This is model of local lighting of points on a surface, where result of lighting doesn't depend on other objects in the scene or on repeatedly reflected light rays.

Ambient Lighting

Ambient lighting represents lighting that isn't created by direct light rays. This is indirect lighting. In real world ambient lighting occurs due to multiple reflections of light rays from different objects. The most simple way to implement ambient lighting is to use constant value of ambient light intensity for whole scene. And Phong refelection model uses such approximation of ambient lighting. Constant value for ambient lighting gives very good performance to the shader, but it's very unrealistic.