2012年3月20日火曜日

GLSLのレジスタ最大数

どこで見るんだろう・・・追々調べることにしよう。
間接的な話題となるスキニングについて。
とりあえず色々必要とはなるが、細かいことは忘れて行列パレットのみ着目。

(1) 古典的な行列パレットによるスキニングその1
  真面目に4x4の行列を渡す
  → mat4の最大数=ボーン最大数

(2) 古典的な行列パレットによるスキニングその2
  回転(含むスケール)と平行移動以外は不要なので
  → vec4の最大数/3=ボーン最大数

(3) クォータニオンによるスキニング
  均等スケールなら平行移動のw辺りに配置して
  → vec4の最大数/2=ボーン最大数

(3)はクォータニオンを圧縮すれば回転は半分で済みそう。
平行移動も稼動範囲を意識すれば半分で済みそう。

予め1つの頂点に対するボーンの最大影響数が判明しているなら許容範囲でならなんでもいい。
といいたいところだけど、行列変換による加重平均は潰れる箇所とか出てくるんだよね。
頂点の場合は形状に法線の場合は光源計算に影響が出るから、いづれも見た目がおかしくなる。
ボーン数増やして対処はできるが本末転倒な気がする。
容量的にも品質的にも(3)がデフォルトか。

最近の事情は良く分からないけど100本級のメッシュとか普通なんだろうかね?

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。