ハードウェアインスタンシング

提供: MonoBook
2020年4月14日 (火) 08:57時点におけるAdministrator (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

ハードウェアインスタンシング英語:hardware instancing)とは、GPU内で3Dモデルを複製する機能のことである。「ジオメトリインスタンシング」や「GPUインスタンジング」などとも呼ばれる。

概要[編集 | ソースを編集]

1回のドローコールで、位置などが異なる複数の「同一モデル」を描画することができる。

一般的なドローコールでは「バーテックスバッファ」と「インデックスバッファ」を設定してGPUを呼び出す。

ハードウェアインスタンジングではこれらに加えて「位置」や「向き」などの情報を格納した「ダイナミックバーテックスバッファ」を設定してGPUを呼び出す。

するとGPUはダイナミックバーテックスバッファを参照して、その個数だけバーテックスシェーダーを実行してくれるというものである。

対応[編集 | ソースを編集]

ハードウェアGPU)が対応している必要があり、未対応の環境ではドローコールした時点でエラーになる。

Windows[編集 | ソースを編集]

WindowsではDirectX 9世代の製品から徐々に対応している。絶対ではない。未対応製品の方が多い。

DX10世代でかなり対応している。やはり絶対ではない。Radeon系はほぼ対応している。

DX11世代からは必須要件となったので100%対応している。

Android[編集 | ソースを編集]

AndroidではOpenGL ES 3.0以降で対応している。OS的には「Android 4.3以降がOpenGL ES 3.0対応」となるが、これ以降のバージョンを搭載している製品でもハードウェア的に未対応の製品が多い。

つまりスマホなどのOpenGL ES系のプラットフォームでは未対応だと思ったほうがいい。

スマホでも最新機種は対応しているが機種やAndroidのバージョンで処理を切り替えるくらいなら未対応前提で実装したほうが清い。

macOSとiOS[編集 | ソースを編集]

macOSiOSMetal世代であれば対応している。

WebGL[編集 | ソースを編集]

WebGL 2.0以降で対応している。つまりほとんどのブラウザWebGL 1.0なので「対応していない」と思って間違いない。

ほとんどのブラウザではWebGL 2.0を「実験的な機能」として搭載しており、チェックを入れれば使える状態にはなっているが、標準ではまだ無効化されている。利用者に「チェック入れろ」とは言いにくい。

関連項目[編集 | ソースを編集]