はかせのラボ

私の頭の中を書いていく雑記ブログです

プログラミング ジオメトリインスタンシング⑩

あいさつ

どうも、はかせです。
今回は入力レジスタを用いたインスタンシングをしたかった話です。

入力レジスタを用いたインスタンシング

前回までやっていたインスタンシングは、
シェーダーの定数レジスタインスタンス毎のデータを格納することで
インスタンシングを実現していました。

今回からやろうとしている入力レジスタを用いたインスタンシングは、
シェーダーのセマンティクスによって識別される情報を用いて
インスタンシングの実現を目指します。

理屈としてはマルチストリーム描画なるものが根底にあり、
共通データとインスタンス毎のデータを別の頂点情報として定義し、
描画時にシェーダーに渡す
ということらしいです。

こうすることで前回悩んでいた
シェーダー側とCPU側でマジックナンバーを用いて固定長配列で
値をセットするという問題を解決し、
数を特別意識することなく描画ができるっぽいです。

実装

最初に言うとまだできてません。

やることとしては
・シェーダーにインスタンス用の入力領域を用意
・それに合わせた入力レイアウトを作成
・うまく頂点情報を作り渡す

今は三つ目がうまくいっておりませんorz

一つ目と二つ目はそのままなためそんな難しいことはないと思います。
(もしかしたらここでミスってる可能性もありますが)

あとがき

今回は入力レジスタを用いたインスタンシングの勉強を始めたという話でした。

正直GPUがらみになると途端にデバッグが難しくなるので、
原因がイマイチわかっていません・・・・

これはまた深い沼にハマりそうな予感がします。
それでは今回はこの辺でノシ

今回作ったものはgithubに上げました
github.com