フォト

Google AdSense


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

« 2017年4月 | トップページ | 2017年6月 »

2017.05.22

GPU Zenのサンプル

GPU Zenのサンプルコードのリポジトリは下記みたいですね。

https://github.com/wolfgangfengel/GPUZen

2017.05.21

GPU ZenというGPUテクニック集めた新しい書籍

GPU Proなどの編集務めたWolfgang Engel氏のGPUテクニック集めた新しい書籍が出たようですね。

書籍のサイト
http://gpuzen.blogspot.jp/

Amazonを見ているとKindle版が、紙に比べて格段に値段が安いのでデジタルで読むのがいいのかもしれないですね。ただ、Kindleの電子ペーパーのやつでは対応しないようなのでiPadとかタブレットいると思います。

目次なんかを見ていると以前,Eidos Montreaのblogで公開されていた"Deferred+: Next-Gen Culling and Rendering for Dawn Engine"の詳細な記事が入っていますが、Webの記事消えちゃったので再度見たかったんですよね(ちなみに、購入してみました30ページ近くの解説.シェーダの提示もありでした。)。

Table of Content

Geometry Manipulation (Christopher Oat)
1.Attributed Vertex Clouds by Willy Scheibel, Stefan Buschmann, Matthias Trapp, and Jürgen Döllner
2.Rendering Convex Occluders with Inner Conservative Rasterization by Marcus Svensson and Emil Persson

Lighting (Carsten Dachsbacher)
1.Rendering stable indirect illumination computed from reflective shadow maps by Louis Bavoil and Holger Gruen
2.Real-Time Participating Media Effects Using Extruded Light Volumes by Nathan Hoobler, Andrei Tatarinov and Alex Dunn

Rendering (Mark Chatfield)
1.Deferred+: Next-Gen Culling and Rendering for Dawn Engine by Hawar Doghramachi and Jean-Normand Bucci
2.Programmable per-pixel sample placement with conservative rasterizer by Rahul P. Sathe
3.Mobile Toon Shading by Felipe Lira, Flávio Villalva, Jesus Sosa, Kléverson Paixão and Teófilo Dutra
4.High-Quality GPU-efficient Image Detail Manipulation by Kin-Ming Wong and Tien-Tsin Wong
5.Real-Time Linear-Light Shading with Linearly Transformed Consines by Eric Heitz and Stephen Hill
6.Profiling and Optimizing WebGL Application Using Google Chrome by Gareth Morgan

Screen-Space (Wessam Bahnassi)
1.Scalable Adaptive SSAO by Filip Strugar
2.Robust Screen Space Ambient Occlusion in 1 ms in 1080p on PS4 by Wojciech Sterna
3.Practical Gather-based Bokeh Depth of Field by Wojciech Sterna


Virtual Reality (Eric Haines)
1.Efficient Stereo and VR Rendering by Iñigo Quilez
2.Understanding, Measuring and Analyzing VR Graphics Performance by James Hughes, Reza Nourai, and Ed Hutchins

Compute (Wolfgang Engel)
1.Optimizing the Graphics Pipeline with Compute by Graham Wihlidal
2.Real Time Markov Decision Processes for Crowd Simulation by Sergio Ruiz and Benjam´ın Hernández

2017.05.19

PIX 1705.16が出てた

PIX 1705.16が出たみたいですね。

今回はAMD向けGPUのより深い分析に役立つプラグインの追加などがされてるようですね(NVIDIA向けはすでに公開済み。参考記事)。あと、DXIL向けの対応が始まってきたみたいですね。まだ、HLSL 5.x向けの機能からは制限が多いですが徐々に増えてくることになりそうですね。

PIX 1705.16 – AMD GPU counters, preliminary DXIL support, and more warnings
https://blogs.msdn.microsoft.com/pix/2017/05/17/pix-1705-16/

AMD側の記事は下記ですね。

DirectX12 Hardware Counter Profiling with Microsoft PIX and the AMD Plugin
http://gpuopen.com/directx12-hardware-counter-profiling-with-microsoft-pix-and-the-amd-plugin/

2017.05.16

glslangに定期的にHLSLを食わせてみてるけど

あんまり話題にしてないのですが、glslangに定期的にHLSLを食わせてみてるけどGDC以降かなり対応してきてる印象ですね。ひとまず、頂点、ピクセルシェーダはGDC前ぐらいからかなり取ってたけど、今はテセレーションやComputeも通りますね。

https://github.com/KhronosGroup/glslang

ただ、こいつは#includeが対応していないので普段はShadercで食わせるのですがSPIR-Vバイナリを作るの事態でエラーは出なくなってきましたね(警告はでる)。

https://github.com/google/shaderc

ただ、実際に出力されたものをあんまり実際の動作として検証していないので本当に使えるかはもうちょい調べないといけないですが。

2017.05.15

HLSL 6.0移行への道

ここ数日の調査で、予想はできてましたがHLSL 6.0については動くけどデバッグ、分析に関してはなかなか難しいことがわかってきました。

とりあえず、現状はそのうち速くなると信じてまずはWave / Quad Operationに移せる所を移したいところですね。

あと、SM 5.1から追加の言語仕様ですが、Constant Bufferの書き方で新しい記法があるので、これは今後使っていきたいですね。

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

2017.05.12

PIX 1704.27でHLSL 6.0の分析はできるか?

PIX 1704.27でHLSL 6.0を動かしているMiniEngineのキャプチャをやってみました。

なお、HLSL 6.0じゃないやつはキャプチャと分析はできています。

とりあえず、以下のような感じでした、

・キャプチャはできた
・APIのイベントは拾えた
・分析かけるとエラー...E_PIX_API_PLAYBACK_FAIL

ということで、デバッグや付加分析では使えない感じですね。

PIX 1704.27が出ていた

GW前のリリースで見落としていたのですが、PIX 1704.27が出ていました。

https://blogs.msdn.microsoft.com/pix/2017/04/27/pix-1704-27/

今回のリリースからグラフィックスのパフォーマンス分析を支援するDr. PIXが復活しました。Dr. PIXはDirect3D12向けの新生PIXではなく旧PIXの世代にゲーム機向けにあった機能ですね。

"Dr. PIX is a long-standing feature of PIX on Xbox. "

とあるとおり。

Dr. PIXの今回のリリースでは、

・ビューポートサイズを1x1にして負荷がどうなるか?
・MSAAを無効化した場合にどうなるか?

といったところでボトルネックを見つけ出す感じですね。

あと、HLSL 6.0でキャプチャできるかはこの後の記事で試してみます。

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

ビルド済みDirectXShaderCompiler

そろそろDirectXShaderCompilerをビルドしてHLSL 6.0やろうかと思ったけどめんどいなぁ...。

https://github.com/Microsoft/DirectXShaderCompiler

・・・って思ってたけど、下記のパス見てたら

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

dxc.exe
dxcompiler.dll
dxil.dll

が入ってたから自前でビルドしなくてもいいか。ちなみに、10.0.15063.0のSDKはCreators Update じゃないと入らないです。

2017.05.09

GDC 2017のAmazon Lumberyardのデモシーン

GDC 2017のAmazon Lumberyardのデモシーンだそうです。

https://www.artstation.com/artwork/bnJrE

Environment created in Lumberyard, as a Demo scene for GDC 2017.
I worked as a material artist doing procedural materials and variations for buildings (bricks, roofs, wood, cobblestones, concrete bands) also the trashcan, streetpivot 3D models, few cracks and some edge trim decals.
Both Lumberyard, aswell as NVIDIA used this scene, to show of specific technical features like SAA (Specular Anti-Aliasing), OIT(Order In Transparency, and TAA (Temporal Anti-aliasing) in real-time during the GDC conference 2017.

NVIDIA VRWorks関連の360度スティッチ、オーディオSDK追加

NVIDIA VRWorksのVRWorks 360 Video とVRWorks Audio SDKが来ていますね。

https://developer.nvidia.com/gameworksdownload

VRWorks 360 Video はGPUを使った多カメラの360度動画ステッチSDKという感じですね。2~32台までいけるようですね。CUDAベースのようですね。出力動画が4Kというのはちょっと今だとハイエンドじゃないかもしれませんね。

VRWorks 360 Video
https://developer.nvidia.com/vrworks/vrworks-360video

VRWorks AudioはOptiXをベースにしたVR用の立体音響SDKという感じですね。OptiXということでレイトレーシングを応用したもので音の伝播をレイベースでリスナーに届けるという感じのようですね。空間的な構造を生かした音の利かせ方というのは気になるところですね。

VRWorks - Audio
https://developer.nvidia.com/vrworks/vrworks-audio

2017.05.08

マルチGPUでアプリケーションを複数起動するケースの話

AMDのGPUOpenでContent Creation Tools and Multi-GPUって記事が出ていますね。

Content Creation Tools and Multi-GPU
http://gpuopen.com/content-creation-tools-multi-gpu/

マルチGPU環境でGPUを使うアプリケーションを複数起動するケース、ゲーム開発者だとゲームエンジンとDCCツールを同時起動するけど、それぞれ使用するGPUを分散することで同時起動で快適に使いたいということなんかですかね。あとは、ゲームエンジン側ともう1つでGPUベースのコンバート(テクスチャ圧縮とか)走らすとかですかね。

この時に、Direct3D(DXGIがある世代の11 or 12)とVulkanでそれぞれ使用するアプリケーションが被らないようにDirect3DならDXGIの層、VulkanならVK_KHR_get_physical_device_properties2とVK_KHX_external_memory_capabilitiesの2つの拡張を使用してデバイスのLUIDを取得することでどちらのAPIから見てもシステムから見えるGPUのデバイスを一貫したIDで確認できるわけね。

これを使用することで、お互いの使用するGPU分ける実装するわけね。この拡張はほかのベンダーも対応していれば(拡張の提出者見た感じではNVIDIAは対応してそうだけど)同じテクニックが使えそうですし、IntelとNVIDIAのOptimusみたいな環境でも良さそうではありますね。

サンプル
https://github.com/GPUOpen-LibrariesAndSDKs/VkD3DDeviceMapping

2017.05.07

明日から

そういえば、UNITE Tokyo 2017でしたね。

今年はGW開けですが、GW休みのリハビリしないと。

« 2017年4月 | トップページ | 2017年6月 »