【コラム】

3Dグラフィックス・マニアックス

37 ジオメトリシェーダ(8)~ジオメトリシェーダを活用した新表現(4)

 

37/99

ジオメトリシェーダを活用した新表現(4)~ディスプレースメントマッピング

真っ平らな平面(単一ポリゴン)に対して、微細な凹凸があるかのように陰影処理するテクニックをバンプマッピングと呼び、これの主流技法は法線マップを活用したものであることは既に本連載第14回~第16回で述べた。

法線マップを活用したバンプマッピングでは実際に凹凸ができるのではなく、凹凸があるかのように陰影処理するだけなので、そのポリゴン面に視点を近づけてその凹凸を掠めるようにしてみると、実際には凹凸がないことが露呈してしまう。

これをより発展させ、テクスチャに記載された凹凸情報(ハイトマップ)に沿って、実際に3Dモデルをジオメトリレベルで変位(ディスプレース)させてしまう技術を「ディスプレースメントマッピング」(Displacement Mapping)と呼ぶ。

イメージ的には、既に存在する基本モデルに対して、テクスチャに記載された凹凸情報でディテールを変形する(整形する)……というような感じになる。

テクスチャに書かれている凹凸情報で3Dモデルを変形させるということは「頂点シェーダでテクスチャを読み出して頂点を変位させる」という作業が必要になる。つまり、頂点からテクスチャを参照する「Vertex Texture Fetching」(VTF:頂点テクスチャリング)と呼ばれる機能にGPUが対応している必要がある。VTFはDirectX 9世代SM3.0対応GPUでは、サポートされているGPUとされていないGPUが混在したため、互換性面で積極的に活用される局面が少なかったが、DirectX 10世代SM4.0対応GPUでは全てのGPUが対応すべき必須機能となっているので積極的に利用しても問題がない。

ここでは、バンプマッピング(法線マッピング)のさらに先にある、ディスプレースメントマッピングの二通りの実現方法を紹介していく。

法線マップによるバンプマッピングとディスプレースメントマッピングの違い

ポリゴンを分割してディスプレースメントマッピングを行う方法

既に存在する3Dモデルに対してディスプレースメントマッピングを実行する場合、ディテールの凹凸を記載したハイトマップ解像度と、それを適用する側の3Dモデルの頂点解像度のバランスがとれていないと、ディスプレースメントマッピングの品質は低くなってしまう。そんな解像度バランスを気にしなければならないくらいならば、ディスプレースメントマッピングなんか活用せずに、オーサリング段階で初めからそのディテールを適用した3Dモデルを用意した方が実行時の負荷も軽くなるし面倒が少ない。

ディスプレースメントマッピングを行うには、ハイトマップテクスチャと3Dモデルのポリゴン数のバランスが重要になる

しかし、もし、頂点数の少ないポリゴンモデルに対し、解像度の高い凹凸情報を適用し、必要に応じて頂点を増加させてディスプレースメントマッピングができれば、非常に便利だ。視点から近い時には低ポリゴンで、法線マップで凹凸表現をして、視点に近づくに従ってポリゴン分割数を上げて、凹凸情報の反映量も増やして、精度の高い整形を行うようにすれば、ジオメトリのLOD(Level of Detail)が実現できる。

視点からの距離に応じて必要なポリゴン分割を行ってからディスプレースメントマッピングを行うことが理想

この仕組みを実現するためには適用する凹凸情報の精度に合わせて、3Dモデルの頂点を増やす仕組みが必要になる。

3Dモデルの頂点の増加……はもっと詳しく言えば、もともとの3Dポリゴンモデルを細かく分割してやる必要があるということになる。

この「ポリゴン分割処理」(Subdivision)を実現するのが「テッセレーション」(Tessellation)というテクニックだ。テッセレーションを行う機能モジュールを特に「テッセレータ」(Tessellator)と呼ぶ。

テッセレータはポリゴンの分割屋さん

ATIのRadeon HD 2000/3000シリーズには、まさくこのテッセレータの仕組みをハードウェア実装した機能ブロックが搭載されているが、DirectX 10では標準機能としてサポートされていないので、互換性の側面からするとやや使いづらい。ちなみに、テッセレータ機能のDirectXへの組み込みはDirectX 11で実現されることがほぼ確約されている。(続く)

民生向けGPUとして世界で初めてハードウェアテッセレータを搭載したのは、Matroxが2002年に発表した「Parhelia-512」だった

最近ではAMDが2007年に発表した「Radeon HD 2000」シリーズがハードウェア・テッセレータを搭載した。写真は最上位モデルの「Radeon HD 2900 XT」

(トライゼット西川善司)

37/99

インデックス

連載目次
第99回 3D立体視の解体新書 - 立体視という知覚(4)~単眼立体視と両眼立体視の有効範囲の考察
第98回 3D立体視の解体新書 - 立体視という知覚(3)~両眼立体視
第97回 3D立体視の解体新書 - 立体視という知覚(2)~単眼立体視(2)
第96回 3D立体視の解体新書 - 立体視という知覚(1)~単眼立体視(1)
第95回 人工知性でコンテンツを生成するプロシージャル技術(19)
第94回 人工知性でコンテンツを生成するプロシージャル技術(18)
第93回 人工知性でコンテンツを生成するプロシージャル技術(17)
第92回 人工知性でコンテンツを生成するプロシージャル技術(16)
第91回 人工知性でコンテンツを生成するプロシージャル技術(15)
第90回 人工知性でコンテンツを生成するプロシージャル技術(14)
第89回 人工知性でコンテンツを生成するプロシージャル技術(13)
第88回 人工知性でコンテンツを生成するプロシージャル技術(12)
第87回 人工知性でコンテンツを生成するプロシージャル技術(11)
第86回 人工知性でコンテンツを生成するプロシージャル技術(10)
第85回 人工知性でコンテンツを生成するプロシージャル技術(9)
第84回 人工知性でコンテンツを生成するプロシージャル技術(8)
第83回 人工知性でコンテンツを生成するプロシージャル技術(7)
第82回 人工知性でコンテンツを生成するプロシージャル技術(6)
第81回 人工知性でコンテンツを生成するプロシージャル技術(5)
第80回 人工知性でコンテンツを生成するプロシージャル技術(4)
第79回 人工知性でコンテンツを生成するプロシージャル技術(3)
第78回 人工知性でコンテンツを生成するプロシージャル技術(2)
第77回 人工知性でコンテンツを生成するプロシージャル技術(1)
第76回 3Dモデルの変形までが可能な動的PRT(5)~SH Exp演算の大胆な近似による高速化
第75回 3Dモデルの変形までが可能な動的PRT(4)~SH Log演算とSH Log次元における遮蔽の統合
第74回 3Dモデルの変形までが可能な動的PRT(3)~帯域調和関数(Zonal Harmonics)の導入
第73回 3Dモデルの変形までが可能な動的PRT(2)~SH LogとSH Expとは?
第72回 3Dモデルの変形までが可能な動的PRT(1)~3Dモデルの変形に対応した動的PRT技術の台頭
第71回 限定条件付き動的PRT(2)~PSF技法におけるライティング
第70回 限定条件付き動的PRT(1)~動的PRT第一段階PSF技法とは?
第69回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(4)
第68回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(3)
第67回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(2)
第66回 事前計算放射輝度伝搬(PRT)~PRTの基本。静的PRT(1)
第65回 事前計算放射輝度伝搬(PRT)~PRTとは?
第64回 表面下散乱によるスキンシェーダ(8)~表面下散乱とスキンシェーダ(6)
第63回 表面下散乱によるスキンシェーダ(7)~表面下散乱とスキンシェーダ(5)
第62回 表面下散乱によるスキンシェーダ(6)~表面下散乱とスキンシェーダ(4)
第61回 表面下散乱によるスキンシェーダ(5)~表面下散乱とスキンシェーダ(3)
第60回 表面下散乱によるスキンシェーダ(4)~表面下散乱とスキンシェーダ(2)
第59回 表面下散乱によるスキンシェーダ(3)~表面下散乱とスキンシェーダ(1)
第58回 表面下散乱によるスキンシェーダ(2)~ハーフライフ2で採用の疑似ラジオシティライティング(2)
第57回 表面下散乱によるスキンシェーダ(1)~ハーフライフ2で採用の疑似ラジオシティライティング(1)
第56回 水面の表現(5)~大きな波
第55回 水面の表現(4)~水面のライティング(2)
第54回 水面の表現(3)~水面のライティング(1)
第53回 水面の表現(2)~動的なさざ波
第52回 水面の表現(1)~水面表現の歴史
第51回 HDRレンダリング(11)~トーンマッピング
第50回 HDRレンダリング(10)~HDRブルーム/グレア処理
第49回 HDRレンダリング(9)~HDRテクスチャ
第48回 HDRレンダリング(8)~HDRレンダーターゲット
第47回 HDRレンダリング(7)~HDRレンダリングのプロセス
第46回 HDRレンダリング(6)~HDRレンダリングの歴史と動向(2)
第45回 HDRレンダリング(5)~HDRレンダリングの歴史と動向(1)
第44回 HDRレンダリング(4)~HDRレンダリングの第三の効能
第43回 HDRレンダリング(3)~HDRレンダリングの第二の効能
第42回 HDRレンダリング(2)~HDRレンダリングの第一の効能
第41回 HDRレンダリング(1)~HDRレンダリングとは?
第40回 ジオメトリシェーダ(11)~ジオメトリシェーダを活用した新表現(7)
第39回 ジオメトリシェーダ(10)~ジオメトリシェーダを活用した新表現(6)
第38回 ジオメトリシェーダ(9)~ジオメトリシェーダを活用した新表現(5)
第37回 ジオメトリシェーダ(8)~ジオメトリシェーダを活用した新表現(4)
第36回 ジオメトリシェーダ(7)~ジオメトリシェーダを活用した新表現(3)
第35回 ジオメトリシェーダ(6)~ジオメトリシェーダを活用した新表現(2)
第34回 ジオメトリシェーダ(5)~ジオメトリシェーダを活用した新表現(1)
第33回 ジオメトリシェーダ(4)~ジオメトリシェーダのアクセラレーション的活用(4)
第32回 ジオメトリシェーダ(3)~ジオメトリシェーダのアクセラレーション的活用(3)
第31回 ジオメトリシェーダ(2)~ジオメトリシェーダのアクセラレーション的活用(2)
第30回 ジオメトリシェーダ(1)~ジオメトリシェーダのアクセラレーション的活用・ステンシルシャドウボリューム技法の影生成を加速する
第29回 影の生成(10)~改良型デプスシャドウ技法(5)
第28回 影の生成(9)~改良型デプスシャドウ技法(4)
第27回 影の生成(8)~改良型デプスシャドウ技法(3)
第26回 影の生成(7)~改良型デプスシャドウ技法(2)
第25回 影の生成(6)~改良型デプスシャドウ技法(1)
第24回 影の生成(5)~デプスシャドウ技法
第23回 影の生成(4)~ステンシルシャドウボリューム技法(2)
第22回 影の生成(3)~ステンシルシャドウボリューム技法(1)
第21回 影の生成(2)~投射テクスチャマッピング技法
第20回 影の生成(1)~3Dグラフィックスにおける2つのカゲの存在
第19回 バンプマッピングの先にあるもの(3)~セルフシャドウ付き視差遮蔽マッピング
第18回 バンプマッピングの先にあるもの(2)~視差遮蔽マッピング
第17回 バンプマッピングの先にあるもの(1)~視差マッピング
第16回 微細凹凸表現の基本形「法線マップ」(3)
第15回 微細凹凸表現の基本形「法線マップ」(2)
第14回 微細凹凸表現の基本形「法線マップ」(1)
第13回 3Dグラフィックスの概念とレンダリングパイプライン(5)
第12回 3Dグラフィックスの概念とレンダリングパイプライン(4)
第11回 3Dグラフィックスの概念とレンダリングパイプライン(3)
第10回 3Dグラフィックスの概念とレンダリングパイプライン(2)
第9回 3Dグラフィックスの概念とレンダリングパイプライン(1)
第8回 GPUとシェーダ技術の基礎知識(8)
第7回 GPUとシェーダ技術の基礎知識(7)
第6回 GPUとシェーダ技術の基礎知識(6)
第5回 GPUとシェーダ技術の基礎知識(5)
第4回 GPUとシェーダ技術の基礎知識(4)
第3回 GPUとシェーダ技術の基礎知識(3)
第2回 GPUとシェーダ技術の基礎知識(2)
第1回 GPUとシェーダ技術の基礎知識(1)

もっと見る

関連キーワード

人気記事

一覧

新着記事