インスタンシング

インスタンシングだ!

 ここからは応用編です。応用編なのでアトリビュートの基礎的な内容は前提として話が進んでいきます。復習もあんましないので不安な人は適宜振り返ってください。不安要素があると、内容が頭に入ってこないので。それだと記事を書いた自分も悲しいです。

 インスタンシングです。内容的にはかなり簡単な部類に入ります。それゆえ一番最初に持ってきました。現時点でQiita版よりかなりボリュームが増し増しになっていて、実はここまでの8節はQiitaだとたった2回分なので、それだけでも相当濃かったことが分かるかと思います。まあ無駄話はこれくらいにしましょうか...。

 アトリビュートには2種類あります。divisorが0のものと、1以上のものです。1以上の場合、0である全てのアトリビュートに対して、フェッチに使う整数に依らず同じ値になります。一見すると使えなさそうですが、実はそれを複数回実行するわけです。そして実行するたびにその同一の値は異なります。つまり同じ描画内容のジオメトリを細部だけ変えて大量にコピーできるわけです。そういう仕組みです。
 divisorは以前関数紹介にちょこっとだけ登場したんですが、今回はこれが主役です。頑張ってもらいましょう...!

コード全文

作品29のリンク

エレメント描画の例

 一応、エレメント描画でインスタンシングをやる例も挙げておきます。内容としては、前回描画した「F」の字を位置や回転スピードをずらして複製するものです。256個です。「F」の描画にはそれなりに多い枚数の三角形のデータが必要で。大量にまとめて描画しようとするとドローコールをたくさん実行するか、大きなサイズのジオメトリが必要になってきます。でもインスタンシングなら1個分かつたった1回で済むので楽ちんです。それを見ます。

コード全文

作品30のリンク

今回登場した関数

関数名