カテゴリー別アーカイブ: HLSL

DirectXのフォーラムに Windows Machine Learning (WinML) APIのスタートページが設置

DirectXのフォーラムに Windows Machine Learning (WinML) APIのGetting Started with Windows Machine Learningができています.

Getting Started with Windows Machine Learning
http://forums.directxtech.com/index.php?topic=5866.0

WinMLはWindows向けの機械学習ライブラリで,GPUを使った機械学習,機械学習モデルの実行などがカバーされていますが,SDKやGDCセッションスライドなどが紹介されています.

WinMLはWindows 10 RS4とWindows SDK 10.0.17110.0が必要になるようですね.

GDC 2018 “SHINY PIXELS AND BEYOND: REAL-TIME RAYTRACING AT SEED”のスライドが公開に

EA SEEDの”SHINY PIXELS AND BEYOND: REAL-TIME RAYTRACING AT SEED”が公開になっています.

SHINY PIXELS AND BEYOND: REAL-TIME RAYTRACING AT SEED
https://www.ea.com/seed/news/seed-gdc-2018-presentation-slides-shiny-pixels

DirectX Raytracing API発表

MicrosoftがDirectX Raytracing(DXR)というAPIを発表しました.

Announcing Microsoft DirectX Raytracing!

https://blogs.msdn.microsoft.com/directx/2018/03/19/announcing-microsoft-directx-raytracing/

Direct3D12と連動するGPUレイトレーシングのAPIになっているようです.

すでにいくつかの企業が対応のアナウンスあるようですが,UE4やUnityのようなエンジンもあるようです.

Pixも対応するようでデバッグや負荷分析もできそうです.

SDKの入手などに関しては下記のリンクの記事を読むと良いようです.

http://forums.directxtech.com/index.php?topic=5860.0

Intelの新しいアンチエイリアシング手法:Temporally Stable Conservative Morphological Anti-Aliasing (TSCMAA)

Intelのサイトで,新しいアンチエイリアシングの手法”Temporally Stable Conservative Morphological Anti-Aliasing (TSCMAA)”サンプルが公開されています.

https://software.intel.com/en-us/articles/temporally-stable-conservative-morphological-anti-aliasing-tscmaa

この手法は,Conservative Morphological Anti-AliasingとTemporal Anti-Aliasingの2つを合わせた手法ということのようですね.

Direct3D11向けアプリケーションにはすぐに組み込めるようなライブラリになっているようです.

Microsoftが外部接続GPUのためのサンプルxGPUを準備中

MicrosoftがDirect3D12のサンプルに外部接続GPUのためのサンプルxGPUを用意しているようですね.

https://github.com/Microsoft/DirectX-Graphics-Samples/tree/xGPUupdateReadme

最近はThunderbolt 3やSurface Bookのような取り外しができるディスクリートGPU環境が少し増えてきたので,それらに対応したサンプルということのようですね.

以前よりSLIやOptimusのようなLinkedGpusサンプルみたいなものはありましたが,xGPUサンプルでは外部接続GPUの検出やアプリケーションの動作中の接続や接続解除が考慮されているようですね.

新規記事:HLSLからSPIR-Vバイナリを生成する

2018年最初の記事として,新規記事”HLSLからSPIR-Vバイナリを生成する”をArticlesに書きました.

HLSLからSPIR-Vバイナリを生成する
http://www.shader.jp/?page_id=2176

実行環境としてVulkanを使う際,マルチプラットフォームで開発する際にシェーダの言語は1つの言語にしたいというときにHLSLのコード資産を生かしたいということはあると思います.

そうした場合に,Khronos groupが標準的なSIPR-Vの生成環境として用意しているglslangValidatorがどうなのかついて紹介してみました.

今後このサイトでもVulkanでコードサンプルを提供する場合などでは使うかもしれませんね.

DirectXShaderCompilerのシェーダバージョンやシェーダモデル6.xの機能

HLSL 6.0からシェーダコンパイラがDirectXShaderCompilerに代わりますが,言語のバージョンの違いやSM 6.xの機能の違いなどがWikiにまとめられるようになりました.

Language VersionsではDirectXShaderCompilerのコマンドライン引数で渡すバージョンについて書かれています.Creators Updateの時のHLSL 2015とFall Creators UpdateのHLSL 2016と今後のロードマップがあります.

Language Versions
https://github.com/Microsoft/DirectXShaderCompiler/wiki/Language-Versions

SM 6.xは,6.0~6.2がありますが,6.2は現在使用策定中ですが16bit floatのサポートが入るようですね.

Shader Models
https://github.com/Microsoft/DirectXShaderCompiler/wiki/Shader-Models

今後もこのページは更新されそうなので,ここをチェックするとよさそうですね。

Creators Update以降のDirect3D12の更新やXbox One Xのフィーチャーに関する記事

先日,Windows 10 Fall Creatorsがリリースされビルド1709向けの新しいDirect3D12 APIが加わりました.

Direct3D12の新機能のリリースノート
https://msdn.microsoft.com/en-us/library/windows/desktop/mt748631(v=vs.85).aspx

今回加わった新機能のほかに,1つ前の大型アップデートであるCreators Updateなどで加わった新機能の一部についてDirectX Developer Blogで紹介されています.Xbox One Xの話題が少し序文で触れられているので,これらの機能はその開発でも役に立つのかもしれません.

Announcing new DirectX 12 features
https://blogs.msdn.microsoft.com/directx/2017/11/07/announcing-new-directx-12-features/

Fall Creators Updateでの更新では,Direct3D12がCPUにとって低遅延なAPIになったことで,CPUはGPUにコマンドを送ったらハードウェア(GPU)上で何が起きているか把握するのが難しくなりました.特にGPUクラッシュなどは原因の追及が難しくなっています.

改善された機能については,データとコマンドの観点で新しいAPIが紹介されています.

  • ID3D12Device3::OpenExistingHeapFromAddress
  • ID3D12GraphicsCommandList2::WriteBufferImmediat

Id3d12device3::OpenExistingHeapFromAddress
https://msdn.microsoft.com/en-us/library/windows/desktop/mt813612(v=vs.85).aspx

ID3D12GraphicsCommandList2::WriteBufferImmediate method
https://msdn.microsoft.com/en-us/library/windows/desktop/mt844818(v=vs.85).aspx

データに関しては,リソースメモリに対してアクセスできるID3D12Device3::OpenExistingHeapFromAddressという関数が追加されたようですね.これを使うと診断用のDescriptor Heapが取れるようで,システムメモリ上に作られるようなのでGPUのクラッシュやデバイスロスト時でも見ることができるようですね.

コマンドという観点でいうとID3D12GraphicsCommandList2::WriteBufferImmediate をCPUから送られたコマンドが実行されたかどうかや実行中かというところがわかるマーカーを打てるようになったようですね.これはクラッシュ時でも取れるようなので,実際にクラッシュしたコマンドを把握するのに便利なようです.

Creators Updateで追加されたものに関しては,以下の2つについて紹介されています.

  • Depth Bounds Testing
  • Programmable MSAA

Depth Bounds Testingはピクセルがカメラからどれだけ離れているかテストする機能であまりに遠すぎるものは破棄するなどができるようになります(設定できる値はmin,maxなので一定の範囲より手前のものも設定はできます).この機能自体は,昔からGPUで備わっていましたが,Direct3D12の初期段階ではAPIがなかったため使えませんでした(過去の世代では使えていました).

Depth Bounds Testingに関しては,GitHubでサンプルが公開されています.

サンプル
https://github.com/Microsoft/DirectX-Graphics-Samples

Programmable MSAAではアンチエイリアス処理の制御をより柔軟にするためにサブピクセルの動作を指定するような命令が加わったようで,フレームごとにずらすことでTemporal AAなどの悪い影響を防ぐようなことにつかえるようですね.

APIとしてはID3D12GraphicsCommandList1::SetSamplePositionsに対応するようです.

ID3D12GraphicsCommandList1::SetSamplePositions method
https://msdn.microsoft.com/en-us/library/windows/desktop/mt492660(v=vs.85).aspx