Vulkan一覧

Vulkan で Texture, Sampler の独立設定

Vulkan のコードにおいて、テクスチャを使用する際に、サンプラとテクスチャとをまとめている VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER を設定する箇所がありました。
よく見かけるサンプルでは、 OpenGL でテクスチャを使用するのと同じ感覚で、 サンプラとテクスチャを1体にして使っていたりします。
ここで、他の設定種別をみてみると VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE とあるので Image と Sampler は別に設定することもできるのではないか?と思いました。

続きを読む


NVIDIA Nsight Graphics を試す

NVIDIA Nsight といえば、 Visual Studio に統合されて、グラフィックス API 使用時のデバッグのお供として定番のものでした。これのスタンドアロン版、 Visual Studio に統合されないで単体で使用できるアプリケーションとして、「NVIDIA Nsight Graphics」が公開になりました。

今のところ、専用のドライバが必要になるみたいですが、ちょっと動作を確認してみたいと思います。

※ 少し前に Windows10 のドライバをダウンロードすると正常なものが取得できませんでしたが、現在は正常になっているようです

入手・セットアップ

現時点において NVIDIA の以下のページから入手が可能です。

このページからダウンロードページへのリンクがあります。ダウンロードには NVIDIA Developer のアカウントが必要になるようなので、持っていない場合には作成することが必要になります。そして、 Nshight Graphics 本体と、各自の環境に合わせたドライバをダウンロードします。

今のところ、 NVIDIA Geforce 600 番以降であれば対応しているようです。また 64 ビット Windows 7 or 10 の環境のみサポートしているようです。Windows 8系や 32 ビットあたりを打ち切っている辺り潔いです。デバッグ時にこれらの環境を使っていることは割と少ないと思いますが、ドライバのダウンロードの箇所には Win8 の文字があって対応していそうにも見えますが、注意が必要です。
続きを読む


Vulkan, D3D11 InterOp

Vulkan 1.1 で クロスプロセス API の相互運用機能 が標準に含まれたようだったので、再び Vulkan と DirectX11 (D3D11) の相互運用にチャレンジしてみました。
使用した拡張名としては以下のものになります。

  • VK_KHR_external_memory_capabilities
  • VK_KHR_external_memory
  • VK_KHR_external_memory_win32

動作結果としては以下のようになり、一応は動作させることができました。

続きを読む


Vulkan 1.1 が発表された

Vulkan といえば 1.0 のバージョンのまま、マイナーバージョンアップを黙々と続けているものでしたが、今回 1.1 の発表となりました。実情としては 1.0.70 ≒ 1.1.70 みたいな感じで、 1.1.0 からの再スタートというナンバリングではないようです。
この記事を書いている時点においては、少々出遅れしたためか、既に Windows の Vulkan SDK では 1.1.70.1 なるバージョンが出ていたりします。

続きを読む


EXT_external_objects の実験

OpenGL 4.6 の発表の中で、各Graphics API との Interop の話がありました。
ここで、EXT_external_objects 拡張 (スライドでは EXT_memory_object となっていましたが) が、面白そうだったので触ってみました。
ただしこの内容は OpenGL 4.6 に含まれるものではなく、追加という位置付けとなっているようです。

説明など

この EXT_external_objects 拡張は、 OpenGL に他の API で作成されたオブジェクトを利用するためのものとなっているようです。
提供される API 群は、こちらの仕様の方を確認してください。

OpenGL にとっての外部メモリを利用して、OpenGL のリソースを生成する(インポートする)といった感じで、機能が準備されています。

続きを読む


Vulkan から OpenGL へ描画

Vulkan で描画した結果を OpenGL の世界で使用することができます。
これには NVIDIA 拡張を使用するので、現時点においては NVIDIA のグラフィックスボードを使用していることが条件になります。
今回のこの拡張の名前は、 GL_NV_draw_vulkan_image というもので、将来的に他のメーカーも対応するようになればいいなと思います。

何が出来るのか

GL_NV_draw_vulkan_image という拡張は何を行ってくれるのかというと、
Vulkan を使用して描画した結果を OpenGL の描画で使用するといったことを可能にしてくれます。
詳細には Vulkan の Image を用いて、 OpenGL のカレントのフレームバッファに対して矩形を描画します。
これにより Vulkan でオフスクリーンに描画した結果を (FBOを用いて) OpenGL のテクスチャにするといったこともできます。

API の仕様は、以下の URL にて記載があるので興味のある人はご確認ください。
NV_draw_vulkan_image

続きを読む



Vulkan へ DirectX11 テクスチャをインポート

世の中の多くの Windows 環境で安定して使えるグラフィックス API は DirectX11 や OpenGL といったところだと思います。
Vulkan API は新しい API のため、既存のライブラリやフレームワークではまだサポートされていなかったりします。そのような状況のためか、 NIVIDA の Vulkan Extension では、 Vulkan とその他 API でやりとりするための機能が用意されました。

また現時点においては、 Khronos の KHX 拡張としても整備が進みそうな気配です。NVIDIA だけでなくサポート範囲が広がってくれることに期待です。

続きを読む


SharpVulkan のTutorial を追加しました

SharpVulkan のチュートリアルページを書き足しました。
http://blog.techlab-xe.net/sharp_vulkan

ひとまずチュートリアル部分を一区切りです。これで SharpVulkan WPF を用いてのキューブの描画が Vulkan コントロールの中で行われるようになります。

この先の予定ですが、 SharpVulkan WPF のパフォーマンスに対して修正していく感じでしょうか。
また、SharpVulkan WPF コントロールを使わずに、でも WPF アプリケーションとして Vulkan API をたたいて描画するといったサンプルを先のページで紹介してみたりということを考えています。

まだ色々と不備が残っていますが、徐々につぶしていければと思います。
今回のチュートリアルを書き上げるまでにも 0.0.3 と初回公開時よりもバージョンが上がりました。


SharpVulkan ページ作りました

C# から Vulkan API をたたくためのラッパーコンポーネント SharpVulkan と、
C# WPF アプリケーションの中に、描画コントロールとして配置する SharpVulkanWPF コントロールを初回公開しました。

まだまだ安定しないですし、バグ大量でしょうがこれから頑張っていきたいと思います。
続きを読む