計算量
計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜
https://gyazo.com/c6f033138b59c8a8d06a4392ea6ce4d2
Opacity Micromapの有無による計算量をヒートマップ化した図。従来の手法(左)では計算量の多い部分(黄色〜赤部分)が広範囲に拡がっているが、Opacity Micromapを採り入れた場合(右)は計算量を劇的に下げることができる。これでフレームレートは10%向上するという
レイトレーシング処理の命といえるRTコアは、第3世代に進化。前世代に比較してレイ-トライアングルの衝突判定速度が2倍になったほか、「Opacity Micromap Engine」と「Displaced Micro-Mesh Engine」が新たに追加された。
Opacity Micromapは部分的に透明度を持つオブジェクト(植物の葉や炎、煙など)の処理を効率化する機能だ。下図のように葉のテクスチャーを持つオブジェクトにレイが衝突した場合を考えてみよう。葉のテクスチャーの外周は透明になっており、こうした表現は実ゲームでもよく使われる。このオブジェクトにレイが衝突した際、衝突地点が透明(外側)ならレイはヒットしていないと判定されるが、葉の内側や境界ならヒットしたと見なして別の処理に続く。
従来のRTコアでは、オブジェクトにヒットした判定はできるが、そこが透明な部分か、そうでないかの判定に複数の処理(下図ではShader Work)が使われる。画面上に葉が1枚や2枚で済む訳はないので、この判定処理がボトルネックを生む。
そこで予め透明度のマップ、即ちOpacity Micromapを保持しておき、それを参照して葉の外か中か、あるいは境界かを判断できる。透明度を持ったオブジェクトを多数配置して表現するシーンでは、Opacity Micromapでシェーダーの負荷を劇的に下げられるわけだ。