はかせのラボ

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

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

あいさつ

どうも、はかせです。
前回インスタンシングがそれとなくできました。
今回は前回のおかしかった点を修正し、
インスタンシング有り無しでのパフォーマンスを見ていきたいと思います。

前回のおかしかった点

詳細は前回の記事をご覧ください。
hakase0274.hatenablog.com

簡単に言うと四角形が欠けていたということでした。
これは単純にパイプライン解釈がTRIANGLELISTになっていたからで
TRIANGLESTRIPにしたら治りました。

インスタンシングの力を見てみよう

さておかしかった点も修正したので
インスタンシングを使えばどのくらいパフォーマンスに差が出るか見てみましょう。

今回の比較は極めて脳筋思考で、
2万の四角形を描画したときのFPSをみてみます。

まずはインスタンシング無し
f:id:hakase0274:20190621232053p:plain
およそ30~40FPSですね。
まぁ今まで通りの実装なんでこんなもんでしょう。

では次にインスタンシング有り
f:id:hakase0274:20190621232154p:plain
ほぼ58FPS前後をキープしています。

インスタンシング強い・・・!

あとがき

今回はインスタンシングのパフォーマンステストでした。
単純にインスタンシングするだけで20ぐらいFPSが上がりましたね。
今回の実装では行列の計算などもCPUでやっているので
この辺りをGPUに移動すればさらに早くなるでしょうね。

さらにインダイレクト描画という今回やったインスタンシングの
強化版みたいなものもあるらしいですね。
そちらのほうも機を見てやってみようと思います。

それでは今回はこの辺でノシ
今回作ったものはgithubに上げました
github.com