プログラミング
C++ で WebGPU を学ぶ
Learn WebGPU for C++ (eliemichel.github.io)
要約
このドキュメントは、C++ を使用してネイティブな 3D アプリケーションをゼロから作成するための WebGPU グラフィックス API の使い方を解説します。Windows、Linux、macOS に対応しており、初心者向けから高度なトピックまで網羅しています。
全文翻訳
C++ でネイティブグラフィックスを。
このドキュメントは、WebGPUグラフィックスAPIを使用して、Windows、Linux、macOS向けのネイティブ3Dアプリケーションをゼロから作成するための使い方を解説します。
クイックスタート! (クリックしてください)
書くGPUコードのすべてのビットを理解したいですか?
はい、WebGPUコードをゼロから書きましょう!素晴らしいです!
導入から始めて、すべての章を順番に読むことができます。
いいえ、初期の定型コードはスキップしたいです。
これは完全に理にかなっています。後で基本的なステップに戻ることができます。
おそらく、各ページの最初と最後にある「結果のコード」リンクを確認したいでしょう。例:
簡単な読み込みのために、浅いラッパーを使用しても大丈夫ですか?
はい、C++スタイルのコードを好みます。
「webgpu.hpp」を使用するタブを選択してください。
いいえ、生のC WebGPU APIを見せてください!
「Vanilla webgpu.h」タブを選択してください。
バニラWebGPUの結果コードはそれほど最新ではありませんが、このタブはガイド内のすべてのコードブロックも切り替えます。これらは最新です。
このベースコードをビルドするには、プロジェクトセットアップチャプターの「Building」セクションを参照してください。
cmake -B build 行に -DWEBGPU_BACKEND=WGPU (デフォルト) または -DWEBGPU_BACKEND=DAWN を追加して、それぞれwgpu-nativeまたはDawnをバックエンドとして選択できます。
ベースコードをどこまで進めたいですか?
A simple triangle
「Hello Triangle」チャプターを確認してください。
基本的なインタラクションを備えた3Dメッシュビューア
「Lighting control」チャプターの終わりから始めることをお勧めします。
Webでも実行させたいです。
ガイド本体にはいくつかの追加行が欠けています。例をWebで実行できるように、Web用ビルドの付録を参照してください!
🚧 作業中
このガイドはまだ作成中です。WebGPU標準も進化しています。読者が最新の状態を把握できるように、チャプターのタイトルには以下の記号を使用しています:
🟢 最新!WebGPU-distributionの最新安定版、v0.2.0を使用しています。
🟡 読める状態ですが、古いバージョンのWebGPUを使用しています。
🟠 作業中: 十分読めますが、完了していません。
🔴 TODO: 表面をなぞっただけです。
このガイドの将来のバージョンのプレビューについては、非表示の「Next」セクションを参照できますが、安定版ではありません。
注: チャプターに付属するコードを使用する際は、不一致を避けるために、そのコードが提供するwebgpu/のバージョンを必ず使用してください。
目次¶
導入
はじめに
プロジェクトセットアップ
🟢 Hello WebGPU
🟢 アダプターとデバイス
アダプター
🟢 デバイス
🟢 コマンドキュー
🟢 ウィンドウを開く
🟢 初めての色
🟢 C++ラッパー
基本的な3Dレンダリング
Hello Triangle
🟢 入力ジオメトリ
バッファを操作する
🟢 初めての頂点属性
🟢 複数の属性
🟢 インデックスバッファ
🟢 ファイルからの読み込み
シェーダーユニフォーム
初めてのユニフォーム
🟢 より多くのユニフォーム
🟢 動的ユニフォーム
🟡 3Dメッシュ
簡単な例
🟡 深度バッファ
🟡 変換行列
🟡 透視投影行列
🟡 基本的なシェーディング
🟡 ファイルからの読み込み
テクスチャリング
初めてのテクスチャ
🟡 テクスチャマッピング
🟡 サンプラー
🟡 ファイルからの読み込み
いくつかのインタラクション
リファクタリング
🟡 ウィンドウのリサイズ
🟡 カメラコントロール
🟡 シンプルなGUI
🟡 ライティングコントロール
🟡🟢 ライティングとマテリアル
鏡面反射
🟡 ノーマルマッピング
🟡 画像ベースのライティング
🟠WIP
キューブマップ
🟠WIP
物理ベースマテリアル
🟠WIP
基本的なコンピュート
コンピュートパイプライン
🟡 画像処理
ミップマップ生成
🟡 畳み込みフィルター
🟡 キューブマップ変換
🟠WIP
キューブマッププリフィルタリング
🟠WIP
プロシージャルジオメトリ変形
🟠WIP
ニューラルネットワーク
🔴TODO
高度なテクニック
インスタンス描画
🔴TODO
RAII
🟡 スクリーンキャプチャ
🟠WIP
ヘッドレスコンテキスト
🟡 高ダイナミックレンジテクスチャ
🟠WIP
ベンチマーク
時間
🟡 メモリ
🔴TODO
処理ユニット
🔴TODO
環境への影響
🔴TODO
遅延シェーディング
🔴TODO
レンダリングバンドル
🔴TODO
マルチサンプリング
🔴TODO
シーンツリー
🔴TODO
シャドウマップ
🔴TODO
テセレーション
🔴TODO
レイトレーシング
🔴TODO
付録
2023年にネイティブグラフィックスを教える
🟢 低性能デバイスを考慮する
🟢 フィードバックが必要
🟢 Web用ビルド
🟡 SDLを使用したウィンドウ管理
🟡 カスタム拡張機能
拡張メカニズム
🟠WIP
wgpu-nativeで
🟠WIP
Dawnで
🟠WIP
デバッグ
🟠WIP
メモリモデル
🔴TODO
参考文献
🟠WIP
一時ページ