フォト

Google AdSense

  • AdSense
無料ブログはココログ

2017.08.09

MicrosoftのDX12サンプルなどのHDR10動作について~PBRサンプルをHDR10出力にする

HDR Lighting and Displays
https://blogs.msdn.microsoft.com/chuckw/2017/08/08/hdr-lighting-and-displays/

上記記事を読んでいたんですが、結構MicrosoftのサンプルがHDR10対応してたんですね。まぁ、Xbox One Sとかは結構早くからしてましたからねぇ。

とりあえず、いろいろと試し足りコードを見てみましたがDirectXTK12のToneMap.fxにはちゃんと変換のシェーダが入っていますね。

https://github.com/Microsoft/Xbox-ATG-Samples/blob/master/Kits/DirectXTK12/Src/Shaders/ToneMap.fx

では、SimplePBR12で動かしてみようと試みてみました。

変更箇所は、SimplePBRUWP12.cppの21行目のm_deviceResources の初期化箇所ですね。

https://github.com/Microsoft/Xbox-ATG-Samples/blob/master/UWPSamples/Graphics/SimplePBR12/UWP/SimplePBRUWP12.cpp

一番最初の記事に戻りますが、DeviceResourcesクラスが対応ということなので見てみましたが、

m_deviceResources = std::make_unique(GetBackBufferFormat(), GetDepthFormat());

とあるコードを以下のように初期化すれば良いようです。最後の引数がポイントですね(それ以外はデフォルトの引数のまま)。これで内部でHDR10で動かす初期化コードが走ります。内部でディスプレイやGPUのサポートをチェックしてるので、このコードにしてもsRGB環境でクラッシュなどはないです。

m_deviceResources = std::make_unique(GetBackBufferFormat(), GetDepthFormat(), 2, D3D_FEATURE_LEVEL_11_0, DX::DeviceResources::c_EnableHDR);

これで無事に動作しました。グラフィックス診断でもTonemapのシェーダが呼ばれておりました。これは下記のコードの223行目のPIXBeginEvent(commandList, PIX_COLOR_DEFAULT, L"Tonemap HDR to SDR backbuffer");あたりのところですね。

https://github.com/Microsoft/Xbox-ATG-Samples/blob/master/UWPSamples/Graphics/SimplePBR12/Shared/SharedSimplePBR.cpp

2017.08.08

Open Problems in Real-Time Renderingのコース資料

Open Problems in Real-Time Renderingのコース資料が徐々に公開されていますが、これも見ておかないとなぁ。

Open Problems in Real-Time Rendering
http://openproblems.realtimerendering.com/s2017/index.html

"Real-Time Rendering"ということで、ゲームやゲームエンジンの開発にかかわるような人が抱える問題や課題、将来予測などが集まってていいですね。

・Physically-Based Materials: Where Are We? by Sébastien Lagarde (Unity Technologies)
・A Certain Slant of Light: Past, Present and Future Challenges of Global Illumination in Games by Colin Barré-Brisebois (Electronic Arts SEED)
・Future Directions for Compute-for-Graphics by Andrew Lauritzen (Electronic Arts SEED)
・Deep Learning: The Future of Real-Time Rendering? by Marco Salvi (NVIDIA)

特に今回はPBR、 GI、 Compute、 Deep Learningの活用ということがトピックでしょうか。

2017.08.03

SIGGRAPH 2017よりImproved Culling for Tiled and Clustered Rendering in Call of Duty: Infinite Warfare

これもSIGGRAPH 2017のコースADVANCES IN REAL-TIME RENDERINGより。

Improved Culling for Tiled and Clustered Rendering in Call of Duty: Infinite Warfare
https://research.activision.com/t5/Research-Papers/Improved-Culling-for-Tiled-and-Clustered-Rendering-in-Call-of/ba-p/10338514

これも読まないと。

CoDシリーズのように60 FPSゲームは盛り込めない表現があったりするものの速度の欲しいタイトルでは参考にしやすいのがいいですね。

2017.08.02

The Unity Labs team がUDIM 向けのMulti-material Editorを公開

The Unity Labs team がMulti-material Editorというのを公開したみたいですね。

Multi-material: Using custom Inspectors and Scriptable Objects for UDIM materials
https://blogs.unity3d.com/2017/08/01/multi-material-using-custom-inspectors-and-scriptable-objects-for-udim-materials/

これは、MARIなどで使用されるマルチUV機能のUDIM をUnityで使用できるようにして、マテリアルの割り当てを柔軟にできるようにするみたいですね。

見た感じUVのタイルごとにマテリアルの割り当てをUnity上で変えられるようですね。

自分の周りではあまり使われていないんじゃないかと思うんですが、映像の人たちがUnityを使う場合には、良いんでしょうかねぇ。

2017.08.01

HPG 2017のスライド公開

今年はHPG 2017がSIGGRAPH直前でしたが、すでにスライドの公開が始まってるようです。

HPG 2017プログラム
http://www.highperformancegraphics.org/2017/program/

続・Dellの4K HDRモニタの話

Dellの4K HDRモニタUP2718Qの話ですが、Windows 10 Creators Update環境でGeForce GTX 1080とのHDMI接続でHDRモードを使うことができました。

Microsftのサンプル
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12HDR

このサンプルでは、Rec.709とRec.2020の色域の表示とグレースケールで0...1のレンジと0...9のグラデーションのカラーバーをsRGBとBT.2020と16bit floating point Linearが切り替えができます(対応していれば)。

このモニタではサンプルのHDR10モードが起動できました。色域の拡張も確認ができました。

Windows 10ではデスクトップ全体をHDRにするか、しないかのON、OFFができるのでHDR10自体はウィンドウアプリでも使用ができます。逆に、HDR OFFの状態ではDXGIのHDR起動の初期化が失敗するのでフルスクリーンアプリでもHDRでは起動できませんでした。

ちなみに、Windows 10自体はCreators UpdateでHDR対応したもののデスクトップ自体の素材自体はHDR10に合わせたものになっておらず、ちょっと使いづらい感じですので、レンダリング専用で使うか、当面は必要な時以外は、HDR切ってsRGBで運用かなと思っています。

なお、この辺の話題については今年のCEDECのパネルディスカッションで話題にするかもしれません。

ゲーム開発マニアックス「4K、HDR(+広色域)時代のゲームグラフィックスを考える」
http://cedec.cesa.or.jp/2017/session/ENG/s58e0100786594/


SIGGRAPH 2017のCall of Duty: Infinite Warfareのマルチレイヤーマテリアルのセッションスライド

SIGGRAPH 2017 Course: Physically Based Shading in Theory and Practice
http://blog.selfshadow.com/publications/s2017-shading-course/

SIGGRAPH 2017 Course: Physically Based Shading in Theory and PracticeのPractical Multilayered Materials in Call of Duty: Infinite Warfareが今年のゲーム出身のセッションとして興味深いですね。

Practical Multilayered Materials in Call of Duty: Infinite Warfare
https://research.activision.com/t5/Research-Papers/Practical-Multilayered-Materials-in-Call-of-Duty-Infinite/ba-p/10337316

近年のフォトリアルのレンダリングのゲームでは物理ベースレンダリングなどが取り入れられてきていますが、ゲームのマテリアルでは1つのピクセルのマテリアルは1つのBRDFパラメータだけを処理するということが多いです(例外的に自動車など用にClear Coatを専用処理することはある)。

現実の世界では、光を吸着する物体、オイルが塗られた物体やラッカーが塗られた物体、薄い膜などのスキャッタリングする物体など複雑な表現の物体があるわけですが、こうしたマルチレイヤーのマテリアルの実装についてのアプローチを紹介しています。

なお、Call of Duty: Infinite WarfareではForward+ が採用されているようですね。従来型のDeferred RenderingのG-bufferではなかなかパラメータを格納しきるのが難しいということなんでしょうね(1つのパラメータのマテリアルの格納が限界なため)。

上記とは違ったアプローチで同じように複雑なマテリアルへの対応を目指そうとしているのはEidos MontrealのDAWN ENGINEのDeferred+なのかもしれませんね(DEFERRED+はマテリアルの拡張以外に、カリングやDraw Callをまとめたりなど描画のパイプライン全体に大きな手が入ってるわけですが)。

DEFERRED+: NEXT-GEN CULLING AND RENDERING FOR DAWN ENGINE
https://eidosmontreal.com/en/news/deferred-next-gen-culling-and-rendering-for-dawn-engine

Deferred+については上記記事のほかに以前出たGPU Zenが参考になります。

今年から来年にかけてマルチレイヤーのPBRや複雑なマテリアルへの対応を果たす、タイトルやエンジンというのは増えてくるのかもしれないですね。そう考えるとPBRマテリアルが1つしか格納できないDeferred Renderingのタイトルなどは古い画みたいな話になるのかもしれないですね。

そうしたことから次のステップを考える時期が来ているのかもしれませんね。

2017.07.31

Dellの4K HDRモニタ

Dellの4KHDRモニタを今週から導入するのですが、Windows 10 Creators Updateなどとの組み合わせなどについてはCEDECなどの際に聞いてもらえれば。

http://pc.watch.impress.co.jp/docs/news/1056253.html

2017.07.26

VSCodeでglTFのプレビューができるプラグインglTF Extension for Visual Studio Code

最近、ちょっとした3DデータのフォーマットとしてglTF 2.0いいなということで見てるんですが、VSCodeでプレビューできるプラグインとかあるんですなぁ。

VSCodeでglTFのプレビューができるglTF Extension for Visual Studio Code
http://www.shader.jp/?p=2003

ちょっと自分たちの事情用に編集するとかにも便利そうだしねぇ。

2017.07.20

Quixel Megascans とUE4のフォトリアルな地形のチュートリアル動画

Quixel Megascans とUE4のチュートリアル動画が公開されていますね。

より以前の記事一覧