萌えハッカーニュースリーダー

2025/04/12 20:27 Shadertoys Ported to Rust GPU

出典: https://rust-gpu.github.io/blog/2025/04/10/shadertoys/
hakase
博士

ロボ子、今日はRust GPUを使ってShadertoyシェーダーをRustに移植したっていう面白い記事を見つけたのじゃ!

roboko
ロボ子

Rust GPUですか、博士。それはまた新しい技術ですね。ShadertoyのシェーダーをRustで書けるなんて、一体どういうことなんでしょう?

hakase
博士

それが面白いところなのじゃ!普通、GPUのコードはWGSL、GLSL、MSL、HLSLみたいな専用の言語で書くけど、Rust GPUはRustでシェーダーやカーネルを書けるようにするプロジェクトなのじゃ。

roboko
ロボ子

なるほど!Rustで書いたコードがGPUで動くんですか。それは便利ですね。記事によると、Rust GPUプログラムはSPIR-Vにコンパイルされるんですね。SPIR-VってVulkanが使うフォーマットでしたっけ。

hakase
博士

そうそう!だからRust GPUは、RustベースのGPUプログラムをVulkan互換のワークフローに統合できるのじゃ。Vulkanは最近よく使われているから、Rustで書けると嬉しい人は多いはずじゃ。

roboko
ロボ子

確かにそうですね。CPUとGPU間でのコード共有もシームレスになるというのはどういうことですか?

hakase
博士

そこもポイントなのじゃ!CPUとGPUで`bytemuck`クレートの`Pod`と`Zeroable`を使うことで、データの共有が楽になるらしいぞ。多くの`no_std + no alloc` RustクレートがGPU上で動くのも魅力的じゃ。

roboko
ロボ子

`no_std`って組み込み開発でよく聞きますけど、GPUでも使えるんですね。特徴やジェネリック、マクロも使えるんですか?

hakase
博士

使えるのじゃ!特徴もジェネリックもほぼ期待通りに動くし、Rustマクロも正常に機能するらしいぞ。これは表現の幅が広がるから、かなり嬉しいポイントじゃな。

roboko
ロボ子

標準のRustツールが使えるのも良いですね。`cargo check`で型チェックしたり、`cargo build`でビルドしたり、`cargo run --release`で実行したりできるんですね。

hakase
博士

そうじゃ!シェーダーの型チェックを`cargo check`でできるのは、かなり便利じゃな。コンパイル時のゲートコードに`features`が使えるのも、柔軟性が高くて良い感じじゃ。

roboko
ロボ子

記事によると、Rust GPUを使ってShadertoyシェーダーをRustに移植するのは簡単だったみたいですね。移植中にwgpuとnagaの問題を修正したというのもすごいですね。

hakase
博士

そうなのじゃ!SPIR-V処理中のパニックを修正したり、Metalをターゲットとする際のシェーダーリテラルの誤った変換を修正したり、生のSPIR-Vを含めることが不可能になる回帰を修正したり…Rustのエコシステムに貢献しているのが素晴らしいのじゃ!

roboko
ロボ子

本当にそうですね。博士、私もRust GPUを使って何か作ってみたくなりました!

hakase
博士

良い心がけじゃ!私もロボ子と一緒に何か面白いシェーダーを作って、世界をアッと言わせたいのじゃ!

roboko
ロボ子

楽しみです!

hakase
博士

そういえば、ロボ子。GPUで動くRustのコードって、まるで高性能なロボットの脳みそみたいじゃな。…って、目の前にいた!

roboko
ロボ子

博士、それはちょっと強引すぎます…!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search