SH LogとSH Expとは?

SH LogのLogは対数を表している。そしてSH ExpのExpは指数を表す。

高校数学で習う公式に複数の掛け算(積)はその数のLogの総和(加算)をExpした値に等しいというものがある。

たとえば25×46=1150。Exp(Ln25+Ln46)あるいは10^(Log25+Log46)をWindows標準付属の電卓や関数電卓で計算してみよう。ちゃんと1150となるはずだ

この指数と対数の法則をSH Triple Productに対して応用したのがSH LogとSH Expの計算になる。

つまり、遮蔽係数ベクトル同士のSH Triple Product演算負荷を低減するために、まず対数(Log)の和を計算し、その値に対して指数(Exp)を取ることでSH Triple Productを計算したことにならないか……というわけだ。これが成り立てば負荷の高いSH Triple Productの反復を単純な加算に落とし込めることになる。この証明はとても複雑なのでここでは省略するが、これは成り立つということで、使って良いことになっている。

SHEXP技法における事前計算の工夫

SHEXP技法での動的PRTでは、登場する3Dモデルを全て球体にしてしまう関係で、自己遮蔽やShadow Fieldsの事前計算を単一の球、1個に限定できる。ここで以降の演算を行いやすくするための工夫を施す。

PSF技法では球面調和関数のスケーリング係数からなる遮蔽係数ベクトルを保持していたが、SHEXP技法では、SH LogとSH Expの仕組みを活用するために、この係数に対してあらかじめSH Log演算を行って、SH Log空間の値として持つようにする。

この工夫により、遮蔽構造の合成(統合)処理の中間計算を負荷の高いSH Triple Productではなく、加算のみで処理できるようになる。最後にSH Exp演算を行って元の空間に戻し、陰影処理(輝度計算)を行うようにする。

重い処理の一部をリアルタイムで行わず、事前に行っておくというイメージだ。これによりPSF技法ではとても高負荷だったSH RotationやSH Triple Productの演算の負荷が下がることにより、球が多数登場する球近似を用いるSH Exp技法においてもそこそこのパフォーマンスが見込めるようになる。(続く)

PSF技法と同じようにShadow Fieldsを算出するも、その結果を球面調和関数の係数ベクトルの状態のままではなく、SH Log演算を行っておく

SHEXP技法の概念図。高負荷な計算をSH Log空間にて加算に落とし込み、それを再びSH Exp演算で元の空間に戻すという発想がポイントになる

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