投稿者「masafumi」のアーカイブ

Ray Tracing GemsのKindle版が無料に

Ray Tracing GemsのKindle版が無料になっています.

RTG free on Kindle; consider Google Play for books
http://www.realtimerendering.com/blog/rtg-free-on-kindle-consider-google-play-for-books/

もともと出版社のサイトで電子版が無料で公開されていましたが,AmazonのKindle版も無料にということのようです. Kindleの次に無料で公開という候補としてGoogle Play Booksも検討されているようですね.

出版社のページ
https://link.springer.com/book/10.1007/978-1-4842-4427-2

GDC 2019のNVIDIA関連発表のスライド公開

GDC 2019のNVIDIA関連発表のスライドが公開されています(要登録).

スライドの公開サイト
https://developer.nvidia.com/gdc19-show-guide-nvidia

Variable Rate ShadingサンプルがDirect3D12サンプルのdevelopブランチで公開に

先日記事にした Variable Rate Shading のサンプルがdevelopのブランチで公開になっています.

D3D12VariableRateShading
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/develop/Samples/Desktop/D3D12VariableRateShading

詳細仕様
https://github.com/Microsoft/DirectX-Graphics-Samples/blob/develop/Samples/Desktop/D3D12VariableRateShading/spec/VariableRateShading.md

詳細な仕様ドキュメントが公開されたので実際にAPIとしてどうやって使うかがわかりますね.Tier 1とTier 2の違いなども書かれています.HLSLにはピクセルシェーダの入力用にSV_ShadingRateというシステム値セマンティクスが追加されるようです.

このサンプルは以下の環境用で対応ドライバがでないと動作はしないようです.

  • Windows 10 18312以上
  • Windows 10 18312 SDKを使用したVS 2017

参考記事: DirectX Developer BlogのVariable Rate Shadingの記事と解説
http://www.shader.jp/?p=2455

DirectXの機械学習ライブラリDirectMLのドキュメントとサンプルの公開

DirectX Developer Blogで DirectML at GDC 2019 という記事が公開されています.

DirectML at GDC 2019
https://devblogs.microsoft.com/directx/directml-at-gdc-2019/

DirectMLはDirect3D12対応GPU上で動作するMachine Learning(機械学習)のライブラリでGPUのレンダリングエンジンと統合された形になるため,応用分野として超解像、ノイズ除去、スタイル転送、ゲームテスト、そしてアニメーションとアートなどの処理に使えることが期待されています.

記事ではGDC 2019での話題とドキュメントとサンプルのリンク公開されています.ゲームエンジンではUnityのUnity ML Agentsの対応の話なども書かれています.GDC 2019のセッションスライドなどは後々公開されているようです.動作させるにはWindows 10 Insider Preview, version 1903の環境が必要なようです.

Direct Machine Learning (DirectML)
https://docs.microsoft.com/en-us/windows/desktop/direct3d12/dml

サンプル
https://github.com/microsoft/DirectML-Samples

UnityのUSD SDKのアップデート USDZエクスポート対応など

UnityのUSD SDKが更新され,機能が追加されたようです.

フォーラムの記事
https://forum.unity.com/threads/usd-for-unity-updates.646645/

追加された機能は USDZでのエクスポートができるようになったようです.その他にマテリアルの対応,頂点スキニングの対応,Prefab,Timelineでの録画とプレイバック,HDRP,C# job systemがサポートされたようです.

USDZはUSDをパックした形式ですが,macOSやiOSがサポートしており,SafariでARでモデルを見たりすることができるのですが,データを作成できるツールが少なかったので使用率が高まりそうですね.iOSで3Dデータを追加のソフトウェアを見せたいというケースで役に立ちそうですね.

DirectX Developer BlogのVariable Rate Shadingの記事と解説

DirectX Developer BlogでVariable Rate Shading(VRS)の概要を説明した記事が公開になりました.GDC 2019ではセッションも開催されます.

Variable Rate Shading: a scalpel in a world of sledgehammers
https://devblogs.microsoft.com/directx/variable-rate-shading-a-scalpel-in-a-world-of-sledgehammers/

Variable Rate Shading はシェーダがピクセルを塗る際に,1ピクセル単位ではなく複数ピクセルをまとめて塗ることでシェーダの呼び出しを抑制します.これによりVRなどでユーザーがあまり見ないスクリーンの端の方の処理を間引いたり,ジオメトリの起伏がなく法線が均一な部分はシェーディングがまとめられるので処理の軽量化ができます.

Direct3D12では以下の3つの単位でシェーディングレートを変更することができます.

  • Per draw…Draw単位での制御
  • Within a draw by using a screenspace image…スクリーンスペース画像での制御
  • Or within a draw, per primitive …プリミティブ単位での制御

ハードウェアごとにTier 1とTier 2の2段階のサポートの違いがあるようです.Tier 1では上の3つのシェーディングレートのうちPer drawだけをサポートするようです.

記事ではCivilization VIでTier 1とTier 2の比較と解説をしています.
Civilization VIのTier 1 では海や平地などの起伏が少ない部分(法線が均一と思われる)は2×2のVRSを使い,建物やユニットやUIなどが1×1としているようです.この実装でのパフォーマンス向上は20%のようです.Tier 2ではエッジ検出のフィルタを事前にかけて高周波な部分を高精細に描く必要があると判断するようです,山岳は1×1で通常のシェーディングをするということをしているようで,記事ではシェーディングレートを赤(1×1)と青(2×2)で可視化してしています.これによりTier 1より山岳は詳細になり,14% パフォーマンス向上がしたようです.

最初に,サポートするGPUはNVIDIAとIntelからということになるようです.記事ではIntelのGen 11でTier 2まで実装した例になっています.APIのリリースは今年中ということのようです.PIX for Windowsも最初からサポートされるようです.

高解像度でのシェーディングや低スペックGPUでのパフォーマンス向上は各社悩みがありますので,各種ゲームエンジンもサポートしていくようです.

Ray Tracing Gems記事”Hybrid Rendering for Real-Time Ray Tracing”が単体で公開

Ray Tracing Gemsに掲載される記事”Hybrid Rendering for Real-Time Ray Tracing”が単体でEA SEEDのサイトで公開されています.

Hybrid Rendering for Real-Time Ray Tracing
https://www.ea.com/seed/news/hybrid-rendering-for-real-time-ray-tracing

VK_NV_cooperative_matrix : GeForce RTXシリーズのTensor CoreをVulkanで使用できるようにする拡張

NVIDIAのTuring CoreのGPUより搭載されたTensor CoreをCompute Shaderで使用して演算するための拡張の仕様が公開になっています.

VK_NV_cooperative_matrix仕様書
https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VK_NV_cooperative_matrix

この拡張は,Cooperative matrix型というあらたな行列型をCompute Shader使えるようで,行列の各要素はfloat16,float32,float64,sint8,sint16,sint32,sint64,uint8,uint16,uint32,uint64と8bitから64bitの精度が指定できます.この行列の演算に関しては,TuringアーキテクチャのGeForce RTXシリーズに搭載された Turing Core を使用することができるようです.

Compute Shaderで使用できるということでMLやDLのような用途でなくても良さそうなので,グラフィックス処理に使うということもできそうです.

なお,拡張の仕様は上記のドキュメントで公開され,下記のタスクリストを見るとドライバも対応になったようですが,SPIR-Vやシェーダコンパイラの対応などがまだのようです.

Task list for VK_NV_cooperative_matrix release
https://github.com/KhronosGroup/Vulkan-Docs/issues/923

使用方法に関するサンプルや下記のリポジトリに公開されています.ベンチマークになっているので,パフォーマンスについても見ることができます.シェーダを変更するための
glslangValidator.exe についても情報があります.

シェーダをSPIR-Vバイナリにしたものはリポジトリにありますので動かすことはできるんではないかと思います.

vk_cooperative_matrix_perf
https://github.com/jeffbolznv/vk_cooperative_matrix_perf