フォンシェーディング

フォンシェーディングとは



フォンシェーディング(Phong shading)は、3次元コンピュータグラフィックスにおける陰影計算の補間技法の一つです。この技術は、ラスタライズされたポリゴン群をまたいで法線ベクトルを補間することで、ピクセルごとの色を計算する「ピクセル単位照明」(per-pixel lighting) を実現します。グーローシェーディングやフラットシェーディングといった他の補間技法と比較して、より滑らかで高品質な陰影表現を可能にすることから、区別して「フォンシェーディング」と呼ばれています。

この技術は、1973年にユタ大学のブイ・トゥオン・フォンによって考案され、彼の博士論文で発表されました。フォンシェーディングと同時に、フォンはフォン反射モデル(フォン照明モデル)も提唱しています。フォン反射モデルは、フォンシェーディングだけでなく、グーローシェーディングなどの他の補間技法とも組み合わせて使用されます。同様に、フォンシェーディングもフォン反射モデル以外の反射モデルと組み合わせることが可能です。

フォンシェーディングの仕組み



フォンシェーディングは、グーローシェーディングの改良版として位置づけられ、滑らかな表面のシェーディングにおいて、より優れた近似を提供します。グーローシェーディングでは、ポリゴンの頂点の色を計算し、その間を補間しますが、フォンシェーディングでは、法線ベクトルが連続的に変化するとみなします。具体的には、ポリゴンの各頂点の法線ベクトルを補間してポリゴン内部の法線ベクトルを求め、各ピクセルごとに反射モデルを適用して色を決定します。

特に、フォン反射モデルのように小さな鏡面ハイライトを持つ反射モデルを使用する際に、グーローシェーディングよりも優れた結果が得られます。グーローシェーディングでは、鏡面ハイライトポリゴンの中心付近にある場合、頂点の色を補間する際にハイライトが失われてしまいます。フォンシェーディングはこの問題を解決できます。

ただし、フォンシェーディングピクセルごとに反射モデルを計算するため、グーローシェーディングよりも計算コストが高くなるという欠点があります。

リアルタイム処理におけるフォンシェーディング



リアルタイム処理系の3DCG APIであるDirect3Dには、かつてD3DSHADE_PHONGという固定機能シェーダーによる陰影モードが用意されていましたが、実際には実装・サポートされることはありませんでした。

現在では、プログラマブルシェーダーをサポートするハードウェアにおいて、ピクセルシェーダーやフラグメントシェーダーを用いてフォンシェーディングを実装することが可能です。また、最近のハードウェアでは、法線ベクトルを各ポリゴンの二次色として符号化し、ラスタライザにグーローシェーディングで補間させ、ピクセルシェーダーがそれを法線ベクトルとして解釈し、各ピクセルの照明計算を行うという手法も採用されています。

フォン反射モデル



フォン反射モデルは、局所照明(local illumination)の経験的なモデルです。これは、粗い表面のランバート反射と滑らかな表面の鏡面反射を組み合わせることで、物体の表面の反射を表現します。フォンは、滑らかな表面では小さく強い鏡面ハイライトが見られ、鈍い表面ではハイライトが大きく徐々に弱まるという観察に基づいてこのモデルを構築しました。

フォン反射モデルには、アンビエント項(ambient term)と呼ばれる環境光も考慮されており、シーン全体の弱い散乱光を表現するのに役立ちます。

まとめ



フォンシェーディングは、3Dグラフィックスにおいて、よりリアルで滑らかな陰影表現を可能にする重要な技術です。ピクセル単位で法線ベクトルを補間することで、グーローシェーディングよりも高品質な描画を実現しますが、計算コストが高くなる点には注意が必要です。現在のグラフィックハードウェアでは、プログラマブルシェーダーの利用により、フォンシェーディングを効率的に実装することが可能になっています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。