はじめに 今年はゴールデンウィークであまり呑んだり旅行へいったりの予定がなかったためこの期間でOpenAIのCodexでDirect3D12やVulkanを学習するサンプルを作れないかを試してみました。 モデル自体はGPT-5.5だったんですが、インテリジェンスは中や高が多めでたまに非常に高いを選択してました。新しいことをやる際のプランニングにはプランモードも使っています。 成果物のリポジトリは下記です。 Readme.md全般もCodexが書いたものですが、日本語も置いてます。 日本語Readme ちなみに今回のネタはGDC 2026のNVIDIAの"Supercharging Godot Development: Rapid Path Tracing Integration with Cursor"がきっかけです。このセッションはCursorを活用してGodotエンジンにVulkanベ
流通している Android デバイスの Vulkan 実装の性能を知るにはいくつかの情報源があり, また Google が規定する最低の要件や, 大多数の端末でサポートを期待できる機能が存在する. 📓 追記: Android 13 と Vulkan 1.3 Android はしばらく Vulkan 1.1 で止まっているが, 最近, Android 13 の CDD で Vulkan 1.1 だった表記が Vulkan 1.3 に変更されたため, 以下のCDDの Vulkan バージョン要求のまとめに加筆した. また, Android の Vulkan ローダの, Vulkan 1.3 の対応を行うコミットがマージされた模様. もちろんこれは, 各ベンダのドライバが 1.3 の実装を行うことを可能にするに過ぎない. Vulkan Hardware Database Vulkan Har
アップデートによりPixelのGPU性能が大幅に向上した主な要因は、Tensorチップセットに搭載されているARM Mali GPU向けのドライバー更新にあると見られています。Android 15の初期バージョンではr48p0またはr47p0というバージョンのGPUドライバーが使われていましたが、今回配信されたAndroid 15の最新アップデートQPR2では、すべてのTensorチップ向けに最新のr51p0ドライバーが導入されています。このドライバー更新によってGPU動作の最適化が進み、大きな性能向上が実現したと考えられています。 アップデート前 アップデート後 なお、今回の性能向上が特に顕著に現れたのはGeekbench 6のVulkan APIのテストのみであり、3DMarkのWild Life Extremeテストにおけるピーク性能についてはアップデート前後で変化がありませんでした
初めに Vulkanでは設定をすれば、Shaderでprintf(に相当する関数)で標準出力に値を出力する、いわゆるprintf Debugをすることができます。 int index = int(gl_GlobalInvocationID.x); debugPrintfEXT("Hello from shader!\n"); debugPrintfEXT("Thread ID: %d\n", gl_GlobalInvocationID.x); 以前、Nishikiさんがこれに関しての詳しい記事を書いてくださっていたのですが、(恐らく)Vulkan1.4からだと仕様変更があったみたいでちょっと必要な設定が増えていました。Vulkan1.3であれば多分問題ないはずです(前やった時そうだった覚えがあるので)。 この記事ではVulkan1.4での設定の仕方について解説します やり方 環境 Vulk
はじめに WebGPUについて 余談:Vulkanについて WebGPUのネイティブ実装について Silk.NETについて 検証環境 導入するNuGetパッケージ 1. ウィンドウの作成 ※WindowOptionsの値一覧 2. WebGPUの初期化 2-1. unsafeの有効化、パッケージの導入 2-2. 作成するクラス・構造体の説明 2-3. 初期化用ユーティリティクラスの作成 Descriptor(記述子) Struct-Chaining PfnRequestOOOCallback 2-4. 初期化 3. 三角形を表示 3-1. RenderPipelineの作成 3-2. シェーダーの作成 3-3. 描画の実行 参考資料 以下の記事に基づいた内容のプロジェクトをGitHubにアップしました。 動作確認等にご利用ください。 github.com はじめに WebGPUについて W
はじめに Projection Matrixは何となくややこしいイメージが強い。実際ややこしい。自分でも勘違いすることがある。 なのでいったんまとめることにする。 Row Major, Column Major, ベクトルとの乗算の順序 Projection Matrixは4x4の正方行列で、メモリに格納するときに行要素を優先して格納すればRow-Major、列要素を優先して格納すればColumn-Majorと呼ばれる。 Row-Majorは以下の添え字の順番で格納したものを指す。 $$ \begin{pmatrix} a_1 & a_2 & a_3 & a_4 \\ a_5 & a_6 & a_7 & a_8 \\ a_9 & a_{10} & a_{11} & a_{12} \\ a_{13} & a_{14} & a_{15} & a_{16} \end{pmatrix} $$ 対し
[GDC 2024]Armが推奨するレイトレーシング時代のスマートフォンゲームグラフィックスとは? ライター:西川善司 Armの「Immortalis-G715」やQualcommの「Adreno 740」,古くはImaginationの「PowerVR Wizard」など,スマートフォン向けのSoC(System-on-a-Chip)に組み込まれたGPUが,レイトレーシング対応となって久しい。それにも関わらず,実際のスマートフォン向けゲームのグラフィックスに,レイトレーシングが採用された事例はまだまだ少ない。 そもそも,2024年の現状では,レイトレーシング対応GPU搭載のSoCを採用したスマートフォンがまだまだ少ない。だが,2023年発売の「iPhone 15 Pro」シリーズによって,状況は変わってくるかもしれない。iPhone 15 Proの搭載SoCである「A17 Pro」は,レ
要約 Vulkan Configulatorを開いてDebug Printf Presetを選択 GLSLでGL_EXT_debug_printfを有効化 debugPrintfEXT()で出力 stdoutで値を確認 stdout に printf してみた様子 なぜShaderでprintfしたいのか Shaderのデバッグは大変です。デバッガーもありますが今回はプリミティブなデバッグに焦点をあてます。 Fragment shaderであればピクセルの色として中間値を出力して眺めることができるので比較的デバッグしやすいと思います。しかし、Compute shaderやTask/Mesh shader、Ray tracing shaderでは、ピクセル色を使ったデバッグが難しいことがあります。 よってShaderでもprintfで値を直接確認できると嬉しいです。Vulkan/GLSLでは
CMake Presets、vcpkg manifest mode、Vulkan SDKを使ってVulkanプロジェクトをビルドする方法を紹介します。環境はWindowsとします。 CMakeとvcpkgを使ったビルド CMakeLists.txtとvcpkg.jsonがプロジェクトに存在していることを前提として、基本的なビルドの流れを書きます。 CMakePresets.jsonでActions用のプリセットを用意します。ここではgithubという名前を付けました。vcpkgを使うように設定していますが、GitHub ActionsではVCPKG_ROOTという環境変数はないため、VCPKG_INSTALLATION_ROOTという変数を使う必要があります。 { "version": 3, "cmakeMinimumRequired": { "major": 3, "minor": 19
リモート側の要件 調査対象アプリケーションを動かす側のことを、リモート側とここでは呼ぶことにします。リモート側に必要とされるのは、 RenderDoc のリモートサーバーを動かすことと、調査対象アプリケーションを動かすこと、です。リモートサーバーへの接続を受け入れできるように、ファイアウォールなどの設定変更も、場合によっては必要になるかもしれません。 リモートサーバーを動かすにあたり、ツールのバージョンに気を遣う必要があります。結果を閲覧するGUIツール側のバージョンとピタリと合わせておきます。 操作側の要件 いつものRenderDoc のGUI ツールウィンドウを開いて操作する側を、ここでは操作側(もしくはクライアント)と呼ぶことにします。私の場合、普段の開発環境は Windows 環境です。こちらで RenderDoc による調査をするイメージです。 この記事中では、 RenderDo
この記事はグラフィックス全般 Advent Calendar 2023の17日目の記事です。 はじめに この記事は、 「実行してみたら真っ黒になっちゃった。 RenderDocでシェーダーに渡った値とか見てみよ 。。。 RenderDoc経由で起動したら描画されたんだけど」 という方向けの記事です。 お急ぎの方は下まで飛ばしてください。 注意 バージョンによって動作が異なる可能性があります。 筆者のRenderDocはVersion v1.27です 「描画されない」の原因はものすごく多いので、調査項目の一つとして考えてください。 RenderDocを使用して困っている方向けの記事です。RenderDocの説明はしません。 当時の状況を再現したスクショを貼っています。 何をしようとしていたのか Vulkanを使用して、マルチサンプリングを実装しようとして、 既に描画に成功している状態からの修
はじめに 本記事はVulkanの排他的フルスクリーンについて記載したものです。この機能はVK_EXT_full_screen_exclusive拡張機能として定義されており、2019年に提案されたものです。情報として新しくはないのですが、手元で試してみたのと、トライした情報がネット上であまり見かけることがなかったので、記事化することにしました。 排他的フルスクリーンとは Windows環境ではDesktop Window Manager (DWM)というコンポジッターが各ウィンドウの描画結果を合成してディスプレイに表示をします。このような仕組みになっているため、その処理時間分が表示までの遅れとなってしまいます。 タイミングにシビアなアプリケーションからは嫌われる傾向にあり、昔のWindows XPの頃までDirectXのフルスクリーンアプリがやっていたような排他的なフルスクリーンモードを使
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く