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

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の環境では一度載せ替えを試してみるのはいいかもしれませんね.

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

Digital Dragonsの発表 : HDR in Call of Duty

ポーランドのゲーム開発者カンファレンスでのDigital DragonsのActivisionの発表”HDR in Call of Duty”のスライドが公開されています.

HDR in Call of Duty
https://research.activision.com/t5/Publications/HDR-in-Call-of-Duty/ba-p/10744846

スライドは今まで見てきたHDRのワークフロー紹介するものの中では決定版のような内容でアニメーションが入っているのでフルスクリーンでアニメーション再生アリで見るのをお勧めします.

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は読んでおくことをお勧めします.

Digital Dragons 2018の発表から”GPU driven rendering experiments”

こちらもDigital Dragons 2018からですが,Unit 2 GamesのKostas Anagnostou氏の”GPU driven rendering experiments”のスライドが公開されています.

GPU driven rendering experiments
https://interplayoflight.wordpress.com/2018/05/25/gpu-driven-rendering-experiments-at-the-digital-dragons-conference/

Direct3D11世代以降のGPUハードウェア機能(Compute ShaderのほかにHi-Zカリングなど)を活用したカリング手法からのインスタンスを使用した描画命令の発効について解説したものになっています.ただし,Direct3D11世代ではAMDやNVIDIAのようなMulti Drawのベンダー拡張に対応したものが必要になるようです.ただ,IntelでもDirect3D12だとExecute Indirectが動くので問題はないかと思います.

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の時の発表よりもより深く解説されていますね.

AMD Compressonator 3.0リリース

AMD Compressonatorの3.0がリリースになっています.

Compressonator V3.0 Release Brings Powerful New 3D Model Features

https://gpuopen.com/compressonator-v3-0-release-brings-powerful-new-3d-model-features/

今回のバージョンからテクスチャの圧縮機能に加えてメッシュの最適化やメッシュの圧縮などが入ってきています.メッシュの圧縮にはGoogleのDracoに対応したようです.

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