Rust 製の CPU 特化型 2D ベクターグラフィックスライブラリを公開しました
Raden という CPU に特化した 2D ベクターグラフィックスライブラリを公開したので、色々雑に書いて行きます。
モチベーション
そもそもなんで Rust で 2D グラフィクスベクターライブラリを作ってるのか?という話ですが、リアルタイムなダミー映像を生成するためです。
重要なポイントはこのダミー映像は GitHub Actions での利用を想定しています。つまり基本的に CPU しか利用できない状況である程度複雑かつ高解像度で高フレームレートな映像を超高速に生成する必要があります。
もともと Blend2D という高速な CPU 特化型の 2D ライブラリを利用しており、Python でも blend2d-py というライブラリを開発していたりするのですが、Rust であれば 1 から書いても面白いのではないか?と考え実装してみることにしました。ちなみに JIT や SIMD に関しては wasmtime の cranelift を採用しています。
Raden
ライブラリは機能名そのままの名前を付けることが多いのですが、今回はあえて名前を付けてみました。Raden です。螺鈿。
色々頑張った結果、実際 1080p 120fps (約 8 Gbps) の生データを無事生成できるようになりました。むしろ再生側が色々大変でした。

Blend2D API に寄せる
Blend2D は本当に素晴らしいライブラリなので、できるだけ Blend2D API に寄せてあります。Blend2D の経験者であれば気軽に利用できることを意識してます。
直接的な依存は Cranelift のみ
Raden は依存を少なく実装するというのも目的にしています。実際依存しているのは Cranelift 系のクレートのみです。今後増やす予定はありません。
GPU への対応
GPU への対応は興味はあるのですが Raden 自体は CPU 特化型でいきます。そもそも wgpu 使えばいいのでは ... という気持ちがあります。