[Unity]ハードウェアインスタンシングで1万の板ポリゴンを描画

結果
Pocket

物量は命です。物量があればなんでも出来ます。

ですが、単純にゲームオブジェクトを作って物量を出すのにも限界があります。

インスペクタも大変なことに

面倒くさいしインスペクタも大変なことに

Unityには1万を超える、大量のオブジェクトを出すための機能が用意されているので、それを使って大量の板ポリを出してみましょう。

 

方法

C#スクリプトとシェーダーを追加し、以下のソースコードをコピペします。
GameObjectを作り、適当にスクリプトとシェーダーを割り当ててやれば動きます。

スクリプトの方は本当にシンプルで、インスペクタから受け取ったシェーダーを元にマテリアルを生産し、Graphics.DrawProceduralを呼んでいるだけです。

 

以下はシェーダープログラム。

頂点シェーダーではIDをそのままX位置に代入。

ジオメトリシェーダで1頂点を4つに増やし、四角ポリゴンにしています。

ピクセルシェーダではスクリーン座標をそのまま色として出力しています。

結果

結果

結果

一万枚の板ポリが表示できました。
今はIDをそのままX座標に代入していますが、IDを用いてコンピュートシェーダーなどで計算したバッファを参照すれば、パーティクルなども表現することが出来ます。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com