ArmorPaintがC言語で全面書き直し|本体2.8MB・VRAM74%減

CG全般

※本記事にはアフィリエイトリンクが含まれており、リンク経由で商品が購入された場合、当サイトに紹介料が入ることがあります。

PBRテクスチャペイントツール「ArmorPaint」の開発者Lubos Lenco氏が、2026年9月2日、バージョン0.9から1.0にかけて行ったコードベースの作り直しについて技術解説を投稿しました。HaxeとV8をやめてC言語だけで書き直した結果、圧縮後の本体サイズは9.3MBから2.8MBに、4Kマテリアル5枚を開いたときのVRAM使用量は2.3GBから0.6GBに下がっています。

ArmorPaintとは

3Dモデルにそのまま塗って、PBRのテクスチャマップを書き出すスタンドアロンのソフトです。モデルをドラッグ&ドロップして塗り始めると、ビューポートに結果がそのまま返ってきます。塗りはノードベースで、フィルレイヤーをマテリアルノードで組んだり、ブラシノードでパターンや手続き的なブラシを作ったりできます。

ArmorPaintの画面。左にツール、右にレイヤーとマテリアルが並ぶ
ArmorPaintの画面。左にツール、右にレイヤーとマテリアルが並ぶ

処理は最初からすべてGPU側で動く設計で、公式サイトでは中程度の内蔵GPUで4K、ハイエンドのグラフィックスカードなら16Kまでのテクスチャペイントが滑らかに動くとしています。ベイクとビューポートのパストレーシングにもレイトレーシングが使われます。BlenderとUnreal Engine、Unity向けにはライブリンク用のプラグインが配布されています。

公式チャンネルは2026年9月8日に、1.0の画面をひととおり見せる紹介動画を公開しています。

HaxeとV8をやめ、C言語だけで書き直した

ArmorPaintはもともとHaxeで書かれ、V8の上で動いていました。Lenco氏はこの構成自体はうまく動いていたとしたうえで、ArmorPaintが想定より大きくなったため、この先も長く手を入れていけるように依存を減らして制御を握りたかった、と理由を書いています。

1.0では全体がC言語で書き直され、外部ライブラリを使わず、ガベージコレクタも使わなくなりました。3Dエンジン、2Dの描画、UIライブラリまでほぼ自前です。コードは1つのモノリシックなリポジトリに再編され、行数も大きく削られています。

Linux向けのリポジトリには、ArmorPaintを単体でコンパイルできる小さなCコンパイラ(tcc)が同梱されていて、コンパイラを別途入れなくてもビルドできるようになっています。配布用のビルドにはclangとC23のembed機能が使われ、単一ファイルのポータブルなバイナリが作られます。

KoreとKongruentを取り込んでリポジトリを1つにまとめた

ArmorPaintは、RobDangerous氏によるKore(ハードウェア抽象化)とKongruent(シェーダー言語とコンパイラ)から生まれたソフトです。Lenco氏は、この2つが無ければ今のArmorPaintは存在しなかったと書いています。1.0では両ライブラリもモノリシックなリポジトリに取り込まれ、ArmorPaintが必要とする機能だけを残す形に手を入れて、行数を最小限に抑えています。

D3D12・Vulkan・Metal・WebGPUで動き、レイトレは3系統

描画APIはDirect3D 12、Vulkan、Metal、WebGPUに対応します。レイトレーシングが実装されているのは、WindowsのDirect3D 12、LinuxとAndroidのVulkan、macOSとiOSのMetalです。

0.9と1.0を同じマシンで比べた数字

Lenco氏は自身のLinuxマシンで、7,000,000三角形・800MBの.objを使って0.9と1.0を比較した結果を公開しています。読み込み時間は6.5秒から3.2秒、メモリ使用量は2.7GBから1.0GBです。

0.9と1.0の比較。読み込み・メモリ・VRAM・パストレーシング・本体サイズの6項目
0.9と1.0の比較。読み込み・メモリ・VRAM・パストレーシング・本体サイズの6項目

4Kマテリアル5枚でのVRAM使用量は2.3GBから0.6GBで74%減、パストレーシングの1フレームあたりの時間は31ミリ秒から11ミリ秒です。テクスチャにbc7圧縮を使うようになったことがVRAM削減の理由として挙げられています。本体サイズは非圧縮で25.7MBから5.4MB、圧縮後は9.3MBから2.8MBになりました。Lenco氏は「1.44MBのフロッピーディスク2枚にArmorPaintが収まるようになった」と書いています。

メモリ使用量が減ったぶん、同じハードウェアでより大きなモデルを読み込み、レイヤーを増やし、高い解像度のテクスチャを塗れるようになる、というのが本人の説明です。開発側の話としては、ビルド時間も最初のデバッグビルドが2.9秒、コードを変えた次のビルドが1.4秒、変更が無ければ0.1秒まで短くなっています。

1.0で入る機能は公式チャンネルに動画が上がっている

1.0の変更点はリリース候補版のスレッドに一覧があり、テキストレイヤー、パスとカーブのレイヤー、タイムラインタブとスキニングアニメーションの再生、基本的なスカルプト機能、UVマップエディタ、メッシュのデシメート、.glb書き出しなどが並びます。テキストプロンプトからのテクスチャ生成やPBR化を行うニューラルノードも入っており、処理はすべて端末側で走ります(公式マニュアルでは6GB以上のVRAMを推奨)。

公式YouTubeチャンネルでは、これらの機能を実際に動かした短い動画が順次公開されています。1.0に向けて出たぶんを公開順に並べます。

パスとカーブのレイヤー(2026年7月21日)。

タイムラインタブでのスキニングアニメーション再生(7月28日)。

3Dアニメーションからタイルシートを作る流れ(8月4日)。tilesheetノードとmake_tilesheetプラグインを使います。

パーティクルツール(8月11日)。

テキストレイヤー(8月25日)。

1.0そのものはまだ「まもなく」の段階

注意したいのは、この9月2日の投稿が1.0のリリース告知ではないことです。本人は投稿の最後で「1.0の最終的なリリースノートは近くリリース候補版のスレッドに投稿する」と書いています。そのスレッドは9月7日にも更新されていますが、見出しは「Release: 1.0 rc3」のままで、本文には「In development」「ArmorPaint 1.0 release coming soon」と記載されています。

ダウンロードページのほうには1.0のバイナリ(ArmorPaint_10_win64.zipなど)が並んでおり、現時点で1.0そのものは入手できます。ページの見出しは引き続き「ArmorPaint Alpha」で、荒削りな部分があるのでまずマニュアルを読んでほしい、という但し書きが添えられています。

公式サイトに掲載されている作例
公式サイトに掲載されている作例

価格・入手先

価格$19(買い切り・以後のアップデートは無料)
対応OSWindows / Linux / macOS(Apple Silicon)/ iOS / Android
ライセンスzlib/libpng(商用利用可)
作者Lubos Lenco氏
入手先公式サイト / itch.io / Gumroad

デスクトップ版はインストール不要のポータブル構成で、ダウンロードサイズは10MB未満です。iOS版とAndroid版はアーリーアクセスの扱いになっています。ソースコードはGitHubでzlib/libpngライセンスのもとに公開されています。公式サイトには返金についての記載もあります。

管理人のひとこと

うちの仕事はセルルックが中心で、PBRのテクスチャを一枚ずつ描き込む場面はそれほど多くありません。ArmorPaint自体も、名前を見たことがある程度です。買い切りのスタンドアロンという意味では、以前に取り上げたTexture Studioと同じ棚に並ぶツールです。

それでも、4Kマテリアル5枚がVRAM 0.6GBに収まるという数字は目を引きます。テクスチャを開いた瞬間にVRAMが埋まってビューポートが重くなるのは、ソフトを問わず毎回引っかかるところなので。本体2.8MBでインストールも要らないので、置き場所を選ばずに済むのもいいところです。

コメント

タイトルとURLをコピーしました