Vulkan

Vulkan

HWレイトレで妙な挙動に出遭った (自分のミスですが)

Vulkan Raytracing でアプリを実装していて、 NVIDIA RTX シリーズと AMD RADEON RX シリーズとで挙動の差があることに出遭いました。そのときの様子が以下の画像です。左側が NVIDIA Geforce RTX、右側が AMD RADEON RXシリーズです。 NVIDIA (Geforce RTX) vs AMD (RA...
Vulkan

Vulkan Raytracing (VkRay) を始めてみて

Vulkan Raytracing を少し勉強してみて感じたことを記録しています。これから始める人や悩んでいる人の助けになれば幸いです。 自分は DirectX Raytracing (DXR) をそこそこ触った後で VkRay を始めましたが、細かいところが色々と違っていますね。考え方そのものは同じようにできるので、情報の多い方でまず学習しておくのはよさそ...
Vulkan

NVIDIA Nsight Graphics のエラー

NVIDIA の Nsight Graphics (2020.2.1 を使用中) を使いながら、 Vulkan Raytracing の使い方を調べていた時に以下のエラーに出遭いました。これ以上の情報がなかなか出力されず、調査には苦労しました。 アプリケーションはうまく動作しているように見えており、しかし Nsight Graphics がクラッシュするとい...
Vulkan

Vulkanカスタムアロケータを使うとメモリリーク (NVIDIA環境)

Vulkan ではメモリ管理のためのアロケータを、ユーザー定義のものを用意して使うことができるようになっています。これを使ったときに、NVIDIA の環境でだけ挙動がおかしくなる場面があったので本記事を作成しました。本使い方による性能の善し悪しはあるにせよ、仕様通りの使い方ではあるはずなので、修正に期待したいところです。 もしかすると単に自分の使い方が悪いの...
Vulkan

Raspberry Pi 4 で Vulkan を試す

Raspberry Pi 4 で Vulkan API を用いた描画が出来るようになったと聞いたので早速試してみました。試すまでの手順を説明します。 Raspberry Pi の準備 Raspberry Pi OS (32bit)をダウンロードして書き込みます。これについては手順は各所で語られているので割愛します。 まずはパッケージリスト更新します。更新でき...
DirectX

Vulkan でも IDXGISwapChain を使う

今回の記事は実験的なネタです。 DirectX では描画結果を画面に反映するのに IDXGISwapChain を使用します。一方 Vulkan では VkSwapchainKHR を生成して描画結果を画面に反映します。それぞれのAPIがそれぞれの SwapChain を使うように出来ているのですが、ここで敢えて Vulkan の描画結果を DirectXの...
Vulkan

VK_LAYER_LUNARG_standard_validation は使用不可に

PC環境を一新したタイミングで、 Vulkan SDK を 1.2.135 に更新しました。これが今回出遭った事件の始まりでした。タイトルにもあるように VK_LAYER_LUNARG_standard_validation が使えなくなったのです。 リリースノートより引用 状況 こまめにSDKの更新をチェックして、リリースノートにも目を通している人ならば既...
Vulkan

Vulkan 1.2 の発表

2020/01/15 に Vulkan API も 1.2 のバージョンが発表されました。そして既に対応するドライバも公開が始まっています。このバージョン1.2では、何が変わったのかを記録しておきます(自分なりの解釈も入っているので、間違っていたらすみません)。 タイムラインセマフォ 大きな機能追加だと思います。今まで VkFence と VkSemapho...
Vulkan

SwiftShader を試してみた

今年 SwiftShader が Vulkan 1.1 の conformance test を通過したと聞いたので、気になって手元でも試してみることにしました。 SwiftShader とは Google 製の CPU による Vulkan 実装というところです。次の場所で公開されています。 CPUでラスタライズ処理をするため、 GPU の機能を使用しませ...
Vulkan

Vulkan での排他フルスクリーン

Vulkan でフルスクリーンアプリケーションを作ろうと思ったら、全画面のウィンドウを枠なしで作るという方法でした。 いわゆる仮想フルスクリーンの手法です。OpenGL でもフルスクリーンのアプリケーションは同様の手順で作るので、特に違和感はありませんでした。 ただ、DirectX9 時には専用のフルスクリーン設定がありましたし、9.0c 以降では DXGI...