スキンのパフォーマンスについて - exch-bms2/beatoraja GitHub Wiki
最終更新日 2018/1/17
スキンのパフォーマンスについて
ここでは、スキンデータの記述においてパフォーマンスに影響のあるポイントと、その改善方法について述べます。
ソースイメージの切り替えを少なくする
OpenGLでは、テクスチャの切り替え回数は描画パフォーマンスに大きく影響を及ぼします。 例えば、
{
"source": [
{"id":1, "path":"a.png"},
{"id":2, "path":"b.png"},
],
"image": [
{"id":"1a", "src":1, "x":0, "y":0, "w":640, "h":720},
{"id":"1b", "src":1, "x":640, "y":0, "w":640, "h":720},
{"id":"2a", "src":2, "x":0, "y":0, "w":640, "h":720},
{"id":"2b", "src":2, "x":640, "y":0, "w":640, "h":720},
]
}
というソースイメージ定義において、
"destination":[
{"id":"1a", "dst":[{"x":0, "y":0, "w":640, "h":720}]},
{"id":"2a", "dst":[{"x":0, "y":0, "w":640, "h":720}]},
{"id":"1b", "dst":[{"x":640, "y":0, "w":640, "h":720}]},
{"id":"2b", "dst":[{"x":640, "y":0, "w":640, "h":720}]}
]
よりも、
"destination":[
{"id":"1a", "dst":[{"x":0, "y":0, "w":640, "h":720}]},
{"id":"1b", "dst":[{"x":640, "y":0, "w":640, "h":720}]},
{"id":"2a", "dst":[{"x":0, "y":0, "w":640, "h":720}]},
{"id":"2b", "dst":[{"x":640, "y":0, "w":640, "h":720}]}
]
``
の方がテクスチャ切り替え回数は減少し、高速になります。
filter機能は極力使わない
filter処理自体が重いですが、filter ON/OFFによってシェーダーが切り替わるため、その回数もパフォーマンスに影響を及ぼします。 どうしてもfilterを使用する場合は、filterの切り替え回数が少なくなるように配慮して下さい。
以下加筆中
- ソースイメージのサイズは(2のべき乗)×(2のべき乗)を推奨
- ソースイメージの最大サイズはスペック依存。4096*4096までなら大体OK?(要検証)
- ソースイメージはなるべくまとめる方が良い
- 複数ファイル読み込みのオーバーヘッドがあるため
- フォントイメージも同様