フォト

Google AdSense


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

2017.11.08

最近のDirect3D12の更新の話を書いた記事

Microsoftが記事を公開していたのでShader.jpに書いておきました。

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

Creators Update以降のDirect3D12の更新やXbox One Xのフィーチャーに関する記事
http://www.shader.jp/?p=2157

2017.11.03

Microsoftの新しいHDRサンプルの話

※今回の記事は、sRGBまでのモニタで撮っていることとtJPEGにしているのでHDRディスプレイ上の輝度の違いはわかりません(100nitsより低い値を設定すればsRGBでもこのプロググラムの動作自体は見れますが)。

MicrosoftのXbox Oneも含めたサンプルに新しいHDRディスプレイ向けサンプルが追加されていました。

https://github.com/Microsoft/Xbox-ATG-Samples/tree/master/UWPSamples/Graphics

SimpleHDR_UWPとSimpleHDR_UWP12がありますが、これはDirect3D11かDirect3D12の違いです。

このサンプルはリニア空間でのレンダーターゲットの出力値がsRGBやST.2084上でどういう値かやディスプレイ上では何nitsになるかがわかるようになっています。

このサンプルでは、モードが二つあって、キーで切り替えができます。まずはデフォルトの画面が下記です。

Hdr001

この画面では、4つの白矩形がありますが、左から50nits、100nits(Paper White)、600nits、1,000nitsになっています。各矩形の上には、リニア空間での輝度、sRGBカーブ上の値(100nits越えると1.0にクランプ)、ST.2084上の値、nitsの数値も出ています。

下記の画像で赤丸で囲った一番右に関しては、ゲームパッドやキーボードでHDR Scene Valuesを変えることができます。

Hdr003

次にモードを切り替えるとST.2084のカーブが出てきます出てきます。モード切替は、この画面だとXbox OneコントローラーのAボタンですが、キーボードだと別なキーが割り当てられてます。

Hdr002

このモードではカーブ上の輝度で描画した矩形とPaper Whiteが並んで比較されます。下記の画像でいうと右上の赤で囲った部分ですね。この画面では、黄色で囲ったカーブ上の点も動かすことができます。

このカーブは、HDR10の規格の10,000nitsまで行けますが、テレビやディスプレイの輝度が出せないところはもちろん出ません。

Hdr004

今回のサンプルは、DirectX-Graphics-SamplesのHDRサンプルと比較して、ディスプレイによってどこまでの輝度が出るか確認しやすいものになっています。
DirectX-Graphics-SamplesのHDRサンプル
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12HDR

今回のサンプルでは、手持ちのHDRディスプレイでどこまで出せるかというあたりがわかりやすいのがいいですね。ただし、高い輝度で描画するピクセルがたくさんあると全体の輝度が下がる(熱対策などで)ようなものがあるので、通常、HDRテレビやディスプレイはすべてピクセルで性能の最大輝度は出せないことが大半です。輝度を測定できるような装置での計測などもできるとよいですね。

なお、EIZOのColorEdge PROMINENCEなどはそういう輝度落ちがないのですが、新車買える価格ですね。

http://www.eizo.co.jp/products/ce/cg3145/index.html

2017.10.30

GoProの動画コーデックのオープンソース化

GoProの動画コーデックがオープンソース化したんですね。

https://gopro.github.io/cineform-sdk/

8bitより大きなチャンネルも扱えるようですし、ツールの対応など進むのかな?

2017.10.26

Unityのテクスチャのライト除去するアセットDe-Lighting toolとチュートリアル動画

Unity Labsが実験的なツールとしてDe-Lighting ToolをGitHubで公開してましたが、アセットストアで公開になっています。

以前の記事:Experimental Feature: De-Lighting Tool
https://labs.unity.com/article/experimental-feature-de-lighting-tool

アセットストア
https://www.assetstore.unity3d.com/jp/#!/content/99583

チュートリアル動画も公開されてるみたいですね。

フォトグラメトリー的なことをしている人にはよさそうですね。

2017.10.21

Substance Designerがスキャンベースのマテリアルに対応

Substance Designerのアップデート見ていたらX-RiteのAXFに対応したんですね。

SIGGRAPH 2017のセッション動画
http://on-demand.gputechconf.com/siggraph/2017/video/sig1706-sebastien-deguy-nicolas-paulhac-marc-ellens-scan-to-materials.html

スキャンベースでマテリアル用意するのによさそうですねぇ。対応するスキャナで計測が可能な物体であれば、よそうですね。

AxF

http://www.xrite.com/ja-jp/categories/formulation-and-quality-assurance-software/appearance-exchange-format-axf

Tac7
http://www.xrite.com/ja-jp/categories/appearance/tac7

2017.10.17

Fall Creators UpdateのタスクマネージャーのGPUパフォーマンスモニタ

そういえば、Fall Creators UpdateのタスクマネージャーでGPUパフォーマンスモニタを見ることができるようになったので、動かしてみました。

Gpuss002

Direct3D12のマルチエンジン対応なので、Graphics Queue、Copy Queue、Compute Queueごとに表示ができますし、VRAMもGPUローカルと共有ビデオメモリでわかりますね。

負荷を見る項目ですが、下記のように表示の切り替えができるので、ビデオエンコーダ/デコーダの負荷などもわかるので動画編集ソフトのレンダリングとかでも負荷見れそうですね。

あと、VRというのもあります。


Gpuss003

参考までに上のパフォーマンスモニタは下記のMiniEngineのモデルビューワーでSSAOをAsync Compute(コードを少し変えると動作します)で動かしている例ですね。少し、Compute_1が動いてるのがそれですね。

Gpuss001

2017.10.16

CppCon 2017: Nicolas Guillemot “Design Patterns for Low-Level Real-Time Rendering”動画

CppCon 2017: Nicolas Guillemot “Design Patterns for Low-Level Real-Time Rendering”のセッション動画が公開されていますね。

2017.10.10

Fall Creators Updateで増えたもの

まとめるとFall Creators Updateは、あたりですかね。

・Shader Model 6.1対応
・View Instancing対応
・Barycentrics (AMD GPUはサポートしてた)
・他

Fall Creators Updateで追加されてそうなD3D12 API

とりあえず、ざっとヘッダーファイル見た際のメモ

・ID3D12Device3
・ID3D12GraphicsCommandList2

が追加されてて、

enum D3D_SHADER_MODELにD3D_SHADER_MODEL_6_1が追加されていますね。

Shader Model 6.1関連のフィーチャーサポートを確認するにはD3D12_FEATURE_DATA_D3D12_OPTIONS3構造体が下記のようになってますね。

typedef struct D3D12_FEATURE_DATA_D3D12_OPTIONS3
{
_Out_ BOOL CopyQueueTimestampQueriesSupported;
_Out_ BOOL CastingFullyTypedFormatSupported;
_Out_ D3D12_COMMAND_LIST_SUPPORT_FLAGS WriteBufferImmediateSupportFlags;
_Out_ D3D12_VIEW_INSTANCING_TIER ViewInstancingTier;
_Out_ BOOL BarycentricsSupported;
} D3D12_FEATURE_DATA_D3D12_OPTIONS3;


これをとるにはID3D12Device::CheckFeatureSupportですね。

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

第1引数のD3D12_FEATUREも値が増えてますね。


enum D3D12_FEATURE
{
D3D12_FEATURE_D3D12_OPTIONS = 0,
D3D12_FEATURE_ARCHITECTURE = 1,
D3D12_FEATURE_FEATURE_LEVELS = 2,
D3D12_FEATURE_FORMAT_SUPPORT = 3,
D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = 4,
D3D12_FEATURE_FORMAT_INFO = 5,
D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = 6,
D3D12_FEATURE_SHADER_MODEL = 7,
D3D12_FEATURE_D3D12_OPTIONS1 = 8,
D3D12_FEATURE_ROOT_SIGNATURE = 12,
D3D12_FEATURE_ARCHITECTURE1 = 16,
D3D12_FEATURE_D3D12_OPTIONS2 = 18,
D3D12_FEATURE_SHADER_CACHE = 19,
D3D12_FEATURE_COMMAND_QUEUE_PRIORITY = 20,
D3D12_FEATURE_D3D12_OPTIONS3 = 21,
D3D12_FEATURE_EXISTING_HEAPS = 22
}


やっと構築

やっと、自宅で、Insider PreviewでFall Creators UpdateとVS 2017 15.4でSDKが入れ終わりました。

より以前の記事一覧