フォト

Google AdSense


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

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.10

VS 2017 15.4リリースでDirectX Shader Compilerの更新

VS 2017 15.4がリリースされました。

Visual Studio 2017 version 15.4 Release Notes
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

今回の更新で、Windows 10 Fall Creators Update SDK.である10.0.16299.0がVSのインストーラから入れられるようになっています。今回は、以前までと違ってFall Creators Updateを当ててない環境でもSDKの取得はできました(ただし、ターゲットSDKに指定してビルド後実行はできませんでした)。

見た感じ、DXGIはCreators Updateの時のDXGI 1.6のままのようですね。ほかのD3D12の更新はちょっとわかりませんが、LLVMベースになったシェーダコンパイラのdxc.exeに関してはどうも更新されているようですね。

Creators Update付属のものと Fall Creators Updateで-help見たら引数が結構変わってますね。特に赤線をひいたコマンドライン引数-HVに関しては2017というバージョンがあります。

Dxc001
Creators Update 10.0.15063.0

Dxc002
Fall Creators Update 10.0.16299.0

DXILにはCreators Updateの時にリリースされた、DXIL 1.0と現在の1.1(SM 6.1)がありますが、以下の2つが増えてる要素のようですね。

・Barycentrics
・ViewID

https://blogs.msdn.microsoft.com/marcelolr/2017/05/03/last-week-on-directx-shader-compiler-2017-05-02/


2017.09.14

GPD Pocketでゲームするためにゲームパッド購入

GPD PocketはGPD Winと違って本体にゲームパッドの機能がないので、ゲームパッドどうしようかと探してみたけど、BluetoothでXInput互換のゲームパッドがあったので購入しました。

このサイズなら一緒に持ち運んでも問題なさそうですね。

2017.09.13

HDR時代のテクスチャ

前の記事のスライドの22ページ目見てたらHDRでのイメージアセットで何を使うかいいかという話がありますね。

Texture

とりあえず、ランタイムではBC6Hを使えばよさそうですね。ただし、αチャンネルないのが注意ですね。

それから、PC上でのオーサリングのフォーマットはJPEG XRを勧められてますね。浮動小数点フォーマット、αチャンネル、ロスレス対応でSDRでもsRGBでうまく機能するみたいですね。

そのほかに、OpenEXRやJPEG w/ICC profileなどがあがってますね。この二つだとツールの対応でOpenEXRでしょうかね。

とりあえず、JPEG XRについてはちょっと調べないと。

2017.09.05

ディスプレイごとの色域表示への道

Di2thkaueaa9y0o

上記の画像は、HDR10対応のディスプレイUP2718Qで例ですね。カタログスペックでは1,000cd/m2ですが、たしかに最大輝度(Max Luminance)が1,000nits超える感じです。

ところで、世の中にはRec. 2020の色空間をすべてカバーするディスプレイはないようなので、カバー率はカタログを見る必要があります(上の機種ではRec. 2020 76.9%とのこと)。

昨日のプログラムについて、Twitterなどでいろいろとフィードバックをもらって、次はどうしようかと考えていたのですが、色域を表示したいと思います。実は昨日の実装中に必要なパラメータは取得できていました。

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

以下のメンバから色域は判別できるようですね。これらはそれぞれ2次元の座標になっています。

FLOAT RedPrimary[2];
FLOAT GreenPrimary[2];
FLOAT BluePrimary[2];
FLOAT WhitePoint[2];

何に対する座標かというとCIE 1931色空間の座標で、図中のX、Yに対応します。

CIE 1931 color space
https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_RGB_color_space

下記の記事なんかを読んでいるとCIE 1931色空間で原色の座標RedPrimary、GreenPrimary、BluePrimaryがRec.2020のフルの色域のようですね。

RedPrimary 0.708, 0.292
GreenPrimary 0.170, 0.797
WhitePoint 0.131, 0.046

Rec. 2020(ページ右上に色域の三角形がある)
https://en.wikipedia.org/wiki/Rec._2020#System_colorimetry

これに対して、DXGIのAPIから取得したRedPrimary、GreenPrimary、BluePrimaryで三角形を描けば、ディスプレイの色域がわかりますね。

さらに、Rec.2020のフルの色域の三角形とディスプレイの色域の三角形の面積からカバー率なども求まると思います。

とりあえず、次の段階としてはディスプレイごとの色域を色空間に対して可視化するところをやってみようかと思います。

2017.09.03

Windows 10 Creators Updateでディスプレイの輝度、色空間取得方法サンプル

CEDECの時にWindows 10 Creators Updateでディスプレイの輝度や色空間などの情報がとれるようになったという話題をしたのですが、起動するとその情報をコマンドラインに表示するだけのサンプルを公開します。

https://github.com/shaderjp/DisplaySpecCheck

※ビルド済み実行ファイルも添付しているので試すだけならexeあればOKです。

Screenshot

パネルディスカッションでは、HDR10対応(BT.2020)環境の話題がメインでしたが、このプログラム自体はSDRのモニタでも使用可能です。例として、あげているのはDellのSDRの4KモニタP2715Q です。

このあたりの情報は、DXGI_OUTPUT_DESC1構造体より取得できます。

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

HDR10かどうかを判断する場合、DXGI_OUTPUT_DESC1のメンバのColorSpaceをチェックします。

輝度値は、MaxLuminance、MinLuminance、MaxFullFrameLuminanceあたりですが、単位はnitsです。

このサンプルでは、DXGIやスワップチェーンの初期化をやっていますが、自分ですでに生成済み環境であればGetDisplayInformation関数にIDXGISwapChain4を入れればOKです。

2017.07.29

GPD Pocket購入

前々から気になっていて評価も増えてきた結果、良さそうだったのでGPD Pocketを購入しました。

長らくモバイルメモ端末にはiPad Pro 9.7を使っていたのですが、メモはいい感じなのですが出先でちょっとしたVisual Studioでコード書いたりとかはできなかったんですよね。

そうしたことから購入に踏み切ったんですが、心配だったキーボードは大丈夫そうです。英字配列自体はiPad Proの時も使ってましたので。キーピッチも大丈夫。

あとは、ThinkPadとかにあるポッチのポインタですが、ディスプレイがタッチパネルなのでほとんどそっち使ってる感じです。

決定的に不満というか残念なところはSIMがささらない点ですかね。これはテザリングなどで何とかするしかないですね。

とりあえず、Visual Studio 2017入れたので日々活用していきたいところ。





2017.05.12

MiniEngineでHLSL 6.0とWave Operationを有効にする

Windows 10 Creators UpdateではHLSL 6.0が使えるようになりました。

新しいシェーダコンパイラのdxc.exeはVS 2017で15063のWindows SDKを入れておけば入っていました。

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64


これをMiniEngineのプロジェクトのフォルダにコピーしておきます。

https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/MiniEngine

コピーしたらMiniEngineのCoreライブラリをビルドするのですが、その際に、下記のGraphicsCore.cppの中でコメントアウトされている#define DXILのコメントアウトを外します。

https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/MiniEngine/Core/GraphicsCore.cpp

Coreライブラリがビルド出来たらMiniEngineプロジェクトのフォルダにあるCompileSM6Test.batを起動します。

これによってdxc.exeでHLSL 6.0のコンパイラでいくつかのシェーダがコンパイルされます。これで、cppのヘッダファイルになります。

最後にModelViewerビルドしますが、ModelViewer.cppの#define _WAVE_OPのコメントアウトを外します。これで動くはずです。

https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/MiniEngine/ModelViewer/ModelViewer.cpp

これで動かない場合には、以下の理由が考えられます。

・GPUのドライバがHLSL 6.0のDXIL 1.0に対応していない
・GPUがWave Operationに対応していない

となります。GPUがWave Operation対応しているかどうかは、下記のフォルダに入っているdxcapsviewer.exeでチェックするといいです。Direct3D 12のWave Operationsを見ると良いです。

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64

下記の画像のような感じですね。なお、Wave lane countはWave Operationの単位ですが、この画像のGPUはNVIDIAなのでWarpの32という感じですし、AMDだとたぶんWavefrontの64だと思います。

Wave

あと、そのほかにわかったこととしてこのオプションを起動するとグラフィックス診断が使えません。まだ対応していないようなので、シェーダのデバッグなどもできないと思います。Pixに関しては試していませんが、そのうち試してみます。

2017.04.17

Direct3D12のHDR出力サンプル

そういえば、Windows 10 Creators UpdateでWindows自体がHDR10に対応したわけですが、サンプルがGitHubで公開になっています。

デスクトップ
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12HDR

UWP
https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/UWP/D3D12HDR

ちょっとHDR10対応ディスプレイやテレビがない環境での出力何でsRGBですが、HDR TVで出力したいなぁ。

20170417


2017.03.16

Visual Studio 2017のCMake対応機能の使い方

Visual Studio 2017ではC++でCMakeに対応したのですが、いまいち使い方がわかってませんでしたが、いろいろと試していたらようやくわかりました。

リリースノート
https://www.visualstudio.com/ja-jp/news/releasenotes/vs2017-relnotes

ファイルメニューので、「開く」の「フォルダー」でCMakeLists.txtのおいてあるフォルダを開けば、メニューにCMakeが追加されるのかー。

Cmake001

CMakeメニューの中身は下記のような感じですね。glslangで試しています。

ビルドがそのままできます。ビルド構成の変更も対応しています。

Cmake002


より以前の記事一覧