概要
ようこそtruckの世界へ!truckは純Rust製のCAD Kernelを目指して開発が進められています。本書はtruckの基本的な使い方から解説したチュートリアルです。
truck の三要素
truckは以下の3つの方針に従って設計されています。
-
Trendy Tools
- RustやWebGPUといった開発中の技術を用いることで、次世代のシェア獲得を狙います。
- RustとWebGPUの高度な最適化技術により、各クレートの性能を最大化させます。
-
Traditional Arts
- 上記の新しいツールで境界表現やNURBSを再実装し、レガシーからの脱却を図ります。
- Rustの安全な実装によりCPU由来の core dumped を徹底的に排除します。
- Cargoの豊富なメンテナンス機能により continuous integration を促進します。
-
Theseus' ship
- テセウスの船を彷彿とさせる代替可能な小さな部品の集合体として全体を設計します。
- 想定外の要求による制御不能な拡張を、小さなクレートの追加という形で制御します。
- 過去の多くの教訓から、1つのアプリケーションとしての全体最適は初めから諦め、最適化されたクレートの集合体を目指します。
本書の構成
truckユーザは便宜的に以下の3段階に分類できます。
- ユーザ
truckやサードパーティを用いて具体的なアプリケーションを作成する一般ユーザ - 開発者
独自の描画要素を定義し、ユーザが利用な可能な形で公開するサードパーティ - コントリビュータ
truckにプルリクエストを送る同志
本書の基本編はユーザに向けたものです。開発者・コントリビュータのそれぞれに向けた発展編・基礎編を今後作成していく予定です。
サンプルコード
各節で作成するサンプルコードの完成版が、以下のリポジトリに上がっています。
https://github.com/ricosjp/truck-tutorial-code
例えばSection 2.1に対応したソースコードがsrc/sectio2_1.rs
に保存されています。binで登録しているので、以下のように実行できます。
cargo run --bin section2_1
動作環境
truckを使う上で前提となる条件は以下の2つです。
- Rust の開発環境が整っていること
wgpu
のバックエンドにあたるVulkan, Metal, DirectX12のいずれかが動くこと
truckのテストを行うには現状cmakeが必要ですが、純粋なパッケージとして使っている限りは不要です。OSごとの詳細について、以下で説明します。
Windows
Windows向けの手順
- Windows 10が最新の状態であることを確認します。
- Visual StudioのC++開発環境をインストールします。既に入っている場合は最新の状態にします。
- Rust環境はインストーラで入れます。バックエンドはMSVCを選択してください。既にインストールされている場合は
rustup update
で最新の状態に更新してください。
Windows向けの注意
- Rust環境はMSVCをバックエンドにすることを前提とします。他のバックエンドではテストしていません。
- Windowsが最新であればVulkanとDirectX12が動作するため、こちらについては心配いりません。
- WSLはVulkanが動作しないため動かないことを確認済みです。Windows 8はDirectX12のビルドで止まる気がしますが未確認です。
MacOS
MacOS向けの手順
- MacOSを最新の状態にします。
- Rustの環境は
curl https://sh.rustup.rs -sSf | sh
でインストールできます。既にインストールされている場合はrustup update
で最新の状態に更新してください。
MacOS向けの注意
- MacOSにはMetalが標準的に動作するので、最新の状態にすればこちらについては心配いりません。
Linux
Linuxに関してはネイティブ環境でテストしていないためサポート対象外です。Vulkanのダウンロードにはこちらが参考になるかもしれませんが、この手順をRust公式のDockerコンテナで実行してもうまく行きませんでした。truckのCIは、既成のDockerコンテナnvidia/vulkanにRust環境を構築して行っています。