Categories: 工作・開発

ラズパイ Pico 2で動くソフトウェア3Dエンジン「Euzebia3D」公開

デモシーン(demoscene)作品のリアルタイム効果のため、3DグラフィックスエンジンをRaspberry Pi Pico 2向けに作り込む——。yami-five氏(本名Konrad)がGitHubに公開した「Euzebia3D」は、FPUを持たないRP2350でライティングとテクスチャマッピングまで含めたソフトウェア3Dレンダリングをリアルタイムに動かすCライブラリだ。ディスプレイはST7789(320×240、RGB565)で、フレームバッファはDMA経由でLCDに転送される。ゲーム向けではなく、複数プロジェクトのコードを整理して公開した初の同種プロジェクトだという。

パイプラインは固定小数点演算(SHIFT_FACTOR=12)で構成され、CPUだけで三角形ラスタライズを行う。かつてはZバッファを使っていたが、描画正確性の問題で現行版はペインターズアルゴリズム(三角形ソート)に切り替えたとREADMEに記載されている。1シーンの三角形上限は1500。スクリーン空間のバックフェイスカリング、近平面クリッピングと三角形ファン再構築、パースペクティブ考慮のUV補間、2×2平均化によるテクスチャサンプリング、頂点毎ディフューズのスキャンライン補間といった構成要素が揃う。

Redditでの「実行時のsin/cosとLUTの比較はしたか」という質問に対し、yami-five氏は固定小数点ライブラリ実装後にLUT(ルックアップテーブル)へ移行したと答えている。LUTはconst配列としてコードに埋め込まれ、Pico 2ではRAMではなくFlashに配置される点が、RAMの限られるマイコンには重要な最適化だという。

コードは機能ごとに分割され、算術・変換・レンダラ・ペインタ・ディスプレイ制御・カメラ/ライト/メッシュ/パペット(2D骨格アニメーション)ファクトリ、SD/FAT対応ファイルリーダーとWAV再生、組込みアセット用ストレージを含む。アセット変換はPillowを使ったPythonスクリプトで画像のRGB565化、OBJのC配列書き出し、LUT生成を処理。ビルドはPico SDK 2.2.0、CMake、Ninjaの組み合わせで、最新のv0.5.2は2026年4月19日リリース。

関連情報

Raspberry Pi
¥1,565 (2026/04/23 16:01時点 | Amazon調べ)
FabScene編集部

FabScene編集部