Ebitengine 2.9 リリースノート

v2.9.0

Issues for v2.9.0

このリリースでは、主に細かい機能追加、バグ修正、パフォーマンス改善を行いました。

Ebitengine 2.9 から Go 1.24 以上が必要になりました。

ベクターグラフィックスの描画クオリティ向上

Issues: #2409#3124#3153#3278

これまでの vector パッケージは AppendVerticesAndIndicesForFilling 関数や AppendVerticesAndIndicesForStroke 関数を用いて、ベクター図形を三角形の図形に分割してそれを三角形として描画していました。これには次のような問題がありました:

新しい手法では、特殊なシェーダーを用いて独自のステンシルバッファーを作成し、そのステンシルバッファーを使って色を塗りつぶすようにしました。これにより、同程度かそれ未満のテクスチャ使用量でも 1 ピクセルあたりのサンプル数が増え、描画結果の質が向上しました。また、複数の三角形を重ねて描画するのではなく、完成されたステンシルバッファーを一気に塗りつぶすため、半透明色を使った描画や Blend オプションの指定が正しく動作するようになりました。実装にあたっては Evan Wallace さんのブログ記事「Easy Scalable Text Rendering on the GPU」を参考にさせていただきました。

新描画手法のために追加された関数は主に vector.FillPath()vector.StrokePath() になります。新描画手法を使用するためには、これまでの AppendVerticesAndIndicesFor… 関数呼出しを、新しい関数呼び出しに置き換える必要があります。これまでの AppendVerticesAndIndicesFor… 関数に関しては描画の結果は変わりません。また、これらの関数は非推奨になります。非推奨関数は、 Ebitengine のメジャーバージョンが同じである限り、これまで通り動きます。ただし、新しいメジャーバージョンでは削除される可能性があります。

ベクターグラフィックス描画の新旧手法比較

新しい API

非推奨になった API

2.8 以前 2.9 以降 Issue
ebiten.FillRule #3153
ebiten.DrawTrianglesOptions.AntiAlias vector.FillPath() #3153
ebiten.DrawTrianglesOptions.FillRule vector.FillPath() #3153
ebiten.DrawTrianglesShaderOptions.AntiAlias vector.FillPath() #3153
ebiten.DrawTrianglesShaderOptions.FillRule vector.FillPath() #3153
audio.Resample() audio.ResampleReader() #3194
audio.ResampleF32() audio.ResampleReaderF32() #3194
colorm.DrawTrianglesOptions.AntiAlias #3153
colorm.DrawTrianglesOptions.FillRule #3153
text/v2.GoTextFace.Script text/v2.GoTextFace.Language #3175
vector.Path.AppendVerticesAndIndicesForFilling() vector.FillPath() #3153
vector.Path.AppendVerticesAndIndicesForStroke() vector.FillPath()vector.Path.AddStroke() #3153
vector.DrawFilledCircle() vector.FillCircle() #3150
vector.DrawFilledRect() vector.FillRect() #3150

バグ修正

このリリースは、以下の修正に加えて、バージョン 2.8 にあった全てのバグ修正を含みます。

パフォーマンス改善

v2.9.1

Issues for v2.9.1

バグ修正

v2.9.2

Issues for v2.9.2

バグ修正

v2.9.3

Issues for v2.9.3

バグ修正

v2.9.4

Issues for v2.9.4

バグ修正

v2.9.5

Issues for v2.9.5

バグ修正

v2.9.6

Issues for v2.9.6

バグ修正

v2.9.7

Issues for v2.9.7

バグ修正