DirectX

DirectX

32ビットアプリでは DXR は使えない?

DirectX Raytracing (DXR) のコードをゼロから書き始めて、気付いた点になります。 32bit アプリ (x86 ビルド設定) で以下のコードを実行したら、DXR をサポートしていないと返ってきました。 hr = D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS...
DirectX

DXR でスキニング対応をする (2)

前回は DXR におけるスキニングの実装の流れ(コンピュートシェーダー版) を軽く紹介しました。今回はその実装について踏み込んでいきます。 バッファの準備 コンピュートシェーダーによるスキニングによる頂点変形では、変形処理前の頂点列と変形後の頂点列の2つのバッファが必要になります。従来のレンダリングパイプラインの場合では変形前のバッファのみで済みましたが、今...
DirectX

DXR でスキニングを対応する (1)

DirectX Raytracing でモデル(3D形状)を描画できるようになると、次にキャラクターを出したくなります。このキャラクターというのが多くの場合スキニングモデル(エンベロープモデル)で作られているので、これに対応する必要が出てきます。 スキニングについて 各関節に見立てたボーンが動くことで、それによる頂点変形を施して描画する、という処理は、従来の...
DirectX

定数バッファはバッファリングしよう in DirectX12

当たり前の話ではあるのですが、たまに「バッファリング気にせずにコードが書かれているのでは?」と感じることがあったので本記事を書くことにしました。 バッファリングしないとどうなるか バックバッファ分の定数バッファを用意して、描画用と更新用のデータがかぶらないようにする必要があります。と、よく説明されているのですが、実際にどうなるかの撮影に成功したので貼っておき...
DirectX

DirectXShaderCompiler 使用時のシェーダーリフレクション

シェーダーコードのリフレクションを皆さんは使用していますか?DirectXで長らく使われてきた D3DCompiler (fxc) を用いて作られたシェーダーバイナリについては、 D3DReflect 関数を用いてシェーダーリフレクションにアクセス出来ます。 近年は徐々に fxc から dxc へ、DirectX Shader Compiler を使用する場...
DirectX

Vulkan でも IDXGISwapChain を使う

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

DXRを始めてみました

先日 NVIDIA の DXR Tutorial を試してみて、DXR界隈に第1歩を踏み出しました。あれからもうちょっと理解が進んだので、そのメモというか記録です。ようやくテクスチャを使ってみるところに到達です。 あれからどうしたか チュートリアルをやった結果、便利なヘルパー関数を使わずにもう1度最初から始めてみました。また1つずつ積み上げて影が落ちている状...
DirectX

NVIDIAが紹介する DXRのチュートリアルをやってみた

NVIDIA が DirectX Raytracing のチュートリアルを公開しています。遅ればせながら、このチュートリアルをやってみたのでその紹介です。以下のアニメGIF画像はラスタライズとレイトレーシングとの描画モードを切り替えている図です。三角形3枚のほうが DXR による描画となっています。 NVIDIA DXRチュートリアル NVIDIA の DX...
DirectX

Presentだけを実行するとメモリが増えていく

DirectX12 のアプリケーション開発において、ほとんど何もしていないのに使用メモリがモリモリ増えていく事案に出遭いました。何もせずに、 Present メソッドを呼び出しているだけですが、使用メモリが増えていきます。 自分の環境は以下に示す状態となります。 Windows10 x64 1909 バージョンVisual Studio 2019Window...
DirectX

DirectX12 Ultimate

次期バージョンのDirectXは DirectX13とはならずに DirectX12 Ultimate となるようです。以前に紹介した Windows10 20H1 でのDirectX12機能強化の機能セットを有しているものが、DirectX12 Ultimate となります。 機能について 先に紹介しているように以下の点が機能強化されます。 メッシュシェー...