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

Coarse Pixel Shading with Temporal Supersampling組み込みメモ

はじめに

IntelがI3D 2018で発表した”Coarse Pixel Shading with Temporal Supersampling”(CPS-T)はCheckerboard Renderingに代わる手法になるか気になりまして読んでみました.

Coarse Pixel Shading with Temporal Supersampling
https://software.intel.com/en-us/articles/coarse-pixel-shading-with-temporal-supersampling

この手法は,Checkerboard Renderingと比較して以下のような利点があるとのこですのでその辺見ていきます.

  • Checkerboard Renderingより組み込みが楽
  • Checkerboard Renderingより品質が高い
  • Checkerboard Renderingより速度が速くなるケースがある

手法について

サイトで公開されているデモはMicrosoftのMiniEngineのTemporalBlendCS.hlslを置き換えるような形のものになっています.そのためTemporal Anti-Aliasing(TAA)を実装している環境であれば置き換えが楽にできるようですね.Convert_TAA_to_TS.pdfという移行ドキュメントがデモに入っています.

この手法は,Intelが2011年に発表した”Coarse Pixel Shading”(CPS)の考え方をベースにしていますが,CPSをハードウェアに実装したGPUは現在のところ無いのでいくつか現在のGPUのシェーダで代替できるような回避がされています.

Coarse Pixel Shading
https://software.intel.com/en-us/articles/coarse-pixel-shading

CPS-Tでは,GPU機能のCPSが使えない代わりに1/4の解像度にシェーディングして,前のフレームのレンダリング結果を利用して解像度を復元します.

この復元の手法はTAAに影響を受けてTemporal Supersamplingという手法が生み出されています.このTemporal SupersamplingはTAAのように前のフレームや動きがあるところはMotion Vectorなどを使用しますが,そのほかに低解像度から高解像度化する際の可視性をうる方法としてdecoupled samplingを使用しているということのようですね.

Decoupled sampling for graphics pipelines
http://people.csail.mit.edu/jrk/decoupledsampling/

パフォーマンスについて

論文の中のTable 1と2を見てみます.

Table 1では3つの背景データをライト数変えた結果でBistro(光源は太陽光の1ライトのみ), Sponza(128ライト), San Miguel(128ライト)となります.

Tableの1番左の項目は以下のようなものになります.

  • PS…すべてのピクセルをそのままシェーディングする
  • CBR…Checkerboard Rendering
  • CPS-T…今回の手法

レンダリングの中のZ-prepass, Lighting, Temp-Resolv(PSではTAAの速度)の速度やPS Invoc.(Pixel Shader Invocation.Pixel Shaderの実行回数)などが提示されています.Frame Totalがレンダリングの合計時間です.

Table 1を見て分かることはライトがSunlightのみの状況ではPSが一番速いという結果になっています.逆にライト数が128個のシーンではCPS-Tが勝っています.速度差が大きく出ているのはLightingの個所ですね.なぜ速度差が出るかというとPS Invoc.がCPS-Tが少ないという点にあります.

PS Invoc.が少ない理由としてレンダリングの解像度が1/4になっている点ですね.これによってライトが増えてPixel Shaderの中でライティング計算が増えますが,PSの呼び出し回数が少ないことが効いて速度差がでているわけですね.


Table 1

Table 2はシーンを1つのものに固定してライト数を32~512に変えて比較しています.ライトの数が増えるとごと速度差が出てきます.


Table 2

この結果をみたところPS Invocationの数が少ないことで,1つのシェーダの複雑度が高いケースで速度的なアドバンテージがあることがわかります.

CPS-TはCBRよりもライティングの計算にかかる部分を減らすことで速度を稼ぐというところがポイントになると思います.逆にPSがシンプルであれば速度的なアドバンテージはないとも言えます.

制限

Temporalな手法なので,新たなシーンでは品質の高い絵が出るまで数フレームかかることと動きのあるシーンでは,状況によってはゴーストがでるようなことはあるようですね.サンプルではあまり動的物が少ないので動きのあるものはそれぞれ検証された方がよさそうですね.

おわりに

制限の部分が気になりますが,組み込み自体はTAAを利用しているタイトルでは組み込みは楽かもしれません.CPSに影響を受けていますが,シェーディング自体は1/4でやるだけなのでCPSではなかったりしてTemporal Supersamplingが新しい発明といえるかもしれません.

パフォーマンスのところで書きましたが,速度差がでない環境というのがあるのでモバイルやGPUパワーが弱くシェーダが単純なものの速度を稼ぐには使えないと思います.

しかし,コンソールやPCのハイエンド機などでは面白い手法かもしれないのでTAAをすでに実装しているような環境やCBRの環境では一度載せ替えを試してみるのはいいかもしれませんね.

弱点もありますが,この手法の使いやすさから採用してくるタイトルが今後出てくるかや弱点の改善をした手法などが出てくるかが気になるところですね.

IntelのI3D 2018論文”Coarse Pixel Shading with Temporal Supersampling”の実装とシェーダ公開

IntelのI3D 2018論文”Coarse Pixel Shading with Temporal Supersampling”の実装デモとシェーダが公開になっています.

以前から論文は公開されていましたが,実装したデモプログラムとシェーダが公開になっています.

Coarse Pixel Shading with Temporal Supersampling
https://software.intel.com/en-us/articles/coarse-pixel-shading-with-temporal-supersampling

この手法は現在の4Kコンソールゲーム機で使われているCheckerboard renderingのようにピクセルを削減できるテクニックですが,処理時間が少し速く品質が良いということだそうです.

サンプルプログラムの起動はコマンドライン引数を与える必要があるので添付のreadmeのPDFは読んでおくことをお勧めします.

EA SEEDの”Stochastic all the things: Raytracing in hybrid real-time rendering”スライド

ポーランドで開催されたDigital Dragons 2018でEA SEEDからの発表”Stochastic all the things: Raytracing in hybrid real-time rendering”のスライドが公開されています.

Stochastic all the things: Raytracing in hybrid real-time rendering
https://www.ea.com/seed/news/seed-dd18-presentation-slides-raytracing

GDC 2018でDXRの発表の際にEAが公開したPICA PICAのデモの技術的な紹介なのですが,GDCの時の発表よりもより深く解説されていますね.

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の検出やアプリケーションの動作中の接続や接続解除が考慮されているようですね.