Phongの反射モデル
一方で、反射ベクトル R {\displaystyle R} が視点ベクトル V {\displaystyle V} の向きに非常に近い場合のみ、鏡面反射光の項が大きくなる。これは、 R {\displaystyle R} と V {\displaystyle V} の間の角度のコサイン、つまり R {\displaystyle R} と V {\displaystyle V} のそれぞれの正規化ベクトルの内積 (ドット積) に、 α {\displaystyle \alpha } のべき乗で効いてくるからである。 α {\displaystyle \alpha } が大きければ、ほとんど鏡のように反射するような表現となり、鏡面反射光のハイライト面積は非常に小さくなる。これは、反射時に視点方向が反射ベクトルからずれていれば、コサイン値は1より小さくなり、大きい値でべき乗するとほとんど0に近くなるからである。
色をRGB値で表現する場合、この式はR、G、B成分のそれぞれについて別々に計算するのが一般的である。
Phongの反射は経験に基づくモデルであって、光の相互作用の物理的な説明に基づくものではなく、非公式な観察によるものである。Phongは、光沢の強い表面は鏡面ハイライトが小さく、その輝度がすぐに落ち込んでいること、一方で光沢の鈍い表面は鏡面ハイライトが大きく、その輝度の落ち込みがよりゆるやかであることに気がついた。
この方程式をグラフィカルに表現すると以下のようになる。
環境反射光と拡散反射光の色は同じである。環境反射の項は均一であるのに対し、拡散反射の項の輝度は表面の方向によって値が変わることに注意すること。鏡面反射光の色は白色で、表面に当たった光のすべてをほとんど反射するが、それが照らすハイライトは非常に狭い。
Phongの反射モデルでは、一般的なレンダリング方程式(英語版)をより単純化して扱うことができる。このモデルでは、面上の点における陰影を決定する際に、次のような単純化ができる利点がある。
このモデルは、「局所的な」反射モデルである。すなわち、ラジオシティのようなレイトレーシングで行うような二次反射を計算する必要はない。反射した光の減衰を補正するために、外部の「環境光」(ambient) の項をレンダリングする際に加えている。
表面からの反射を3つの項目、すなわち「鏡面反射」(specular reflection)、「拡散反射」(diffuse reflection) と「環境反射」(ambient reflection) に分けている。
最初に、シーンにおける光源ごとに、鏡面反射成分 i s {\displaystyle i_{s}} と拡散反射成分 i d {\displaystyle i_{d}} を定義する。通常、それぞれRGB値である。また、アンビエント照明の制御は i a {\displaystyle i_{a}} でなされ、全ての光源の影響の総和として計算されることもある。
次に、それぞれの材質 (material; 普通、あるシーンにおいて物体面に対して1対1で設定される) について、以下のものを定義する。
k s {\displaystyle k_{s}} : 鏡面反射係数。入射光に対する鏡面反射率
k d {\displaystyle k_{d}} : 拡散反射係数。入射光に対する拡散反射率 (Lambert反射)
k a {\displaystyle k_{a}} : 環境反射係数。シーン全体を照らす環境光の反射率