差分

ナビゲーションに移動 検索に移動

MonoGameでハードウェアインスタンシングしてみる

157 バイト追加, 2019年10月27日 (日) 00:01
編集の要約なし
1つの[[ポリゴンメッシュ]]を[[GPU]]側で複製することでDrawコールを減らして描画を高速化する「側で複製することで[[Drawコール]]を減らして描画を高速化する「[[ハードウェアインスタンシング]]」という技術がある。
ただ[[MonoGame]]と[[OpenGL]]の環境では長らく「new の組み合わせの環境では長らく「new NotImplementedException()」であった。
これがついにMonoGame 3.7で[[OpenGL]]環境でも[[ハードウェアインスタンシング]]が使えるようになったそうだ。さっそく[[MacOS]]上で試してみた。[[ハードウェアインスタンシング]]が使えるとなると[[ボリュームレンダリング]]の実装が捗る可能性がある。
== HLSLを書く==
[[HLSL]]はこんな感じ。今回は移動だけで回転はしていない。 [[Mac]]上で[[HLSL]]を[[コンパイル]]する方法は「 [[MonoGameでプログラマブルシェーダーを使う]]」および「[[InfinitespaceStudios.Pipeline]]」の項目を参照。
}
</syntaxhighlight>
== C#で呼び出してみる==
この[[コード]]は「[[MonoGameのカメラを作る]]」で作ったカメラを使っている。Cameraクラスは[[MonoGame]]標準物ではないので注意。
</syntaxhighlight>
== Mac上で動かしてみる==
こんな感じ。[[Mac]]でも[[HLSL]]で書いた[[シェーダー]]が使えてる。なお、[[OpenGL]]系の環境では[[シェーダーモデル]]は3.0までだ。まあSM3.0もあれば元気があれば何でもできる。
<movie>https://youtu.be/qU-toUOhvRI</movie>
== 関連項目== 
*[[MonoGameでプログラマブルシェーダーを使う]]
*[[MonoGameでピクセルシェーダーを使ってテクスチャを貼る‎]]
*[[ハードウェアインスタンシング]]
*[[疑似インスタンシング]]
*[[メッシュベイカー]]
*[[ドローコール]]
[[category: MonoGame]]
[[category: HLSL]]
匿名利用者

案内メニュー