グーローシェーディング

グーローシェーディングを施したポリゴン

グーローシェーディング: Gouraud shading)は、物体の表面での光と色の変化をシミュレートするコンピュータグラフィックスの手法の1つ。アンリ・グーロー(英語版)が考案し1971年に公表した。実際には、粗いポリゴン表面に滑らかな照明効果を施すのに使われ、各ピクセルの計算にそれほど時間がかからない。

原理

基本原理は次の通りである。3次元モデルの各頂点法線ベクトルの近似として、その頂点で交わる各多角形(ポリゴン)の法線ベクトルの平均を求める。この近似値を使い、フォン反射モデルに基づいた照明の計算を行い、各頂点の色の強さを求める。画面上の各ピクセルの色は頂点群の色から双1次補間で求める。簡単に言えば、頂点間でグラデーションを生成する。

利点と欠点

グーローシェーディングの利点と欠点はその補間にある。例えば、3つの頂点について照明を考慮した色の計算(これは時間がかかる)を行い、それらを使って各ピクセルの色を補間によって求める部分は処理が簡単であり、これはフォンシェーディングとも共通である。しかし、非常に局所的な照明効果(例えば、リンゴの表面に照明が映りこんで光る鏡面ハイライトなど)は正しく描画できず、ハイライト部分がポリゴンの真ん中あたりにあって頂点まで及んでいない場合、グーローシェーディングではそのハイライトは現れない。逆にハイライトが頂点にある場合、その頂点は(照明モデルを適用しているため)正しく描画されるが、そこから周囲への広がり方は補間ではうまく表現できず、不自然になる。オブジェクトを回転させたときハイライトが表面を滑らかに移動しなければならないのだが、そのときに問題が見た目にもはっきりする。グーローシェーディングでは、ハイライト部分が頂点に差し掛かったときに強くなり、頂点と頂点の間では弱くなるということを繰り返してしまう。これは、ポリゴンを細かくして頂点を増やせば改善できる。また、ハイライトの周辺だけ頂点の密度を高める適応的平面充填法を採用するという手段もある。

欠点はあるものの、グーローシェーディングはフラットシェーディングよりは優れている。ただしフラットシェーディングはグーローよりも遥かに計算量が少なくて済み、角張った表現をしたい場合には適している。

  • グーローシェーディングを施した球面 - 鏡面ハイライトが不自然であることに注意
    グーローシェーディングを施した球面 - 鏡面ハイライトが不自然であることに注意
  • 同じ球面を非常に高密度な頂点でレンダリングした場合の静止画像
    同じ球面を非常に高密度な頂点でレンダリングした場合の静止画像

関連項目

参考文献

  • H. Gouraud, "Continuous shading of curved surfaces," IEEE Transactions on Computers, C-20(6):623–629, 1971.
  • H. Gouraud, Computer Display of Curved Surfaces, Doctoral Thesis, University of Utah, USA, 1971.
  • H. Gouraud, Continuous shading of curved surfaces. In Rosalee Wolfe (editor), Seminal Graphics: Pioneering efforts that shaped the field, ACM Press, 1998. ISBN 1-58113-052-X.
3Dレンダリング
レンダリング手法
レイトレーシング
  • レイトレーシング
  • パストレーシング(英語版)
  • 不偏レンダリング
  • ボリュームレイキャスティング(英語版)
  • ボリューメトリックパストレーシング(英語版)
  • フォトンマッピング
  • スペクトルレンダリング(英語版)
  • ビームトレーシング(英語版)
  • コーントレーシング(英語版)
  • 分散レイトレーシング(英語版)
  • メトロポリス光輸送法(英語版)
  • Bezier clipping
ラスタライズ
その他
ライティング/
シャドウイング
シェーディング
サンプリング及び
アンチエイリアス
  • マルチサンプルアンチエイリアシング(英語版)(MSAA)
  • スーパーサンプリング
  • 超一様分布列(英語版)(LDS)
  • 時間的アンチエイリアシング(英語版)(TAA)
  • 高速近似アンチエイリアシング(英語版)(FXAA)
レンダリングAPI
ハイブリッド
  • Vulkan
  • Direct3D
    • DirectX Raytracing(英語版)
  • Metal
ラスタライズ
レイトレース
  • OpenRL(英語版)
  • OptiX(英語版)
レンダリング
ソフトウェア