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

GTC On-DemandでGTC 2017セッション動画が公開に

GTC On-DemandでGTC 2017セッション動画が公開になっています.

GTC On-Demand
http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php

GTC 2017セッション
http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php?searchByKeyword=&searchItems=&sessionTopic=&sessionEvent=2&sessionYear=2017&sessionFormat=&submit=&select=

NVIDIAのGDC 2017発表のスライドが公開

NVIDIAのGDC 2017発表のスライドが公開になっています.

GDC17 show guide from NVIDIA
https://developer.nvidia.com/gdc17

GDC Vaultでもすでにセッションは公開されていますが,動画ではなくスライドで公開されていますのでスライドだけ欲しいという方に便利かと思います.

それからこちでも動画が公開されるようですので,Vault会員でない方も良いかもしれません.

個別のセッションに関しては,今後の記事で取り上げるかもしれません.

GDC 2017セッション動画,スライドがGDC Vaultで公開

GDC 2017セッション動画,スライドの一部がGDC Vaultで公開で公開になっています.

http://gdcvault.com/browse/gdc-17/

GDC VaultはGDCのセッションの動画やスライドが公開されているデジタルライブラリで有料サービス(GDCのパスの種類によっては参加者は1年間閲覧可)ではありますが,無料で見れるものが多くあります.

GDCに行けなかった方も気になってたセッションが公開されている,ということがあるかもしれません.

個人的に気になるGDC 2017セッションメモ ver 0.1

2/27~3/3開催のGDC 2017のセッションが結構発表されてきているのですが,個人的に気になってるセッションを抜粋してメモしておきます.現地に行くことができなくてものちのちの資料公開などがあることが多いのでメモですね.

なお,まだ一か月以上ありますし,セッションの全部が公開されていないので定期的にアップデートしてversionを上げていきます.versionを上げる際には,この記事を更新するのではなく新規記事でたてます.

なお,今回はグラフィックスが中心でVRなどほかの分野は今後のバージョンで追加していきます.

グラフィックス

AAA

AAAタイトルのグラフィックス開発事例です.

‘Destiny’ Shader Pipeline

Natalya Tatarchuk氏はUnityに移ったのでどうなるのかわかりませんが,前世代機も含めたマルチプラットフォーム開発でどうやってるか気になるところですね.

http://schedule.gdconf.com/session/destiny-shader-pipeline

Efficient Texture Streaming in ‘Titanfall 2’

テクスチャストリーミングはなかなか自分では獲得できていない技術ですし,PBRになってテクスチャ枚数が増えてる状態でメモリは限られているのでチェックですね.

http://schedule.gdconf.com/session/efficient-texture-streaming-in-titanfall-2

‘Ghost Recon Wildlands’: Terrain Tools and Technology

ちょうどGDC会期中に近い時期に発売ですが,オープンワールドの技術ということでチェックですね.

http://schedule.gdconf.com/session/ghost-recon-wildlands-terrain-tools-and-technology

GPU-Based Run-Time Procedural Placement in ‘Horizon: Zero Dawn’

これも近いうちに出るタイトルですが,Horizon : Zero Dawnって植物とか画面の密度感あるなということでチェックです.

http://schedule.gdconf.com/session/gpu-based-run-time-procedural-placement-in-horizon-zero-dawn

Rendering Low LOD Cars at Lightning Speed in ‘Forza Motorsport 6’

http://schedule.gdconf.com/session/rendering-low-lod-cars-at-lightning-speed-in-forza-motorsport-6

Shoot for the Sky: The Ambitious HDR Time-Lapse Skies of ‘Forza Horizon 3’

http://schedule.gdconf.com/session/shoot-for-the-sky-the-ambitious-hdr-time-lapse-skies-of-forza-horizon-3

Film

ゲームではなく映画や映像系の事例.このタイプのセッションはVaultで公開されないし,撮影禁止が多いので現地で聴く意義が高いですね.

Realtime Rendering for Feature Film: Rogue One a Case Study

ローグワンのケーススタディですが,リアルタイムレンダリングというのが気になりますね.やっぱりイテレーションが大事ですので.たぶん,録画されず現地でしか聴けないセッションな気がします.

http://schedule.gdconf.com/session/realtime-rendering-for-feature-film-rogue-one-a-case-study

グラフィックステクニック

Geometry Caching Optimizations

ゲーム開発でもジオメトリキャッシュは活用されてきていますのでチェック.

http://schedule.gdconf.com/session/geometry-caching-optimizations

PBR Diffuse Lighting for GGX+Smith Microsurfaces

今までSpecularの話が多かったですが,Diffuseということで.

http://schedule.gdconf.com/session/pbr-diffuse-lighting-for-ggxsmith-microsurfaces

Subdiv for the PlayStation®4 (Presented by Sony Interactive Entertainment America)

限定的でもSubdivはそろそろゲームで使用できるのか?というのは気になっています.

http://schedule.gdconf.com/session/subdiv-for-the-playstation4-presented-by-sony-interactive-entertainment-america

Advanced Graphics Tech

Advanced Graphics Techのセッションシリーズは基本的にほとんど出るとは思います.

Direct3D12やVulkanネタの最新技術ですね.

Advanced Graphics Tech: “Async Compute: Deep Dive” & “Raster Ordered Views and Conservative Rasterization”

NVIDIAはPascalからAsync Compute対応しましたが,先行するAMDに比べて効果のほど,最適化のポイントがよくわかってないので気になりますね.あとRaster Ordered Viewsはできることはわかってますが,使えるのかいまいちわからん部分がありますね.活用事例が少なくて.

http://schedule.gdconf.com/session/advanced-graphics-tech-async-compute-deep-dive-raster-ordered-views-and-conservative-rasterization

Advanced Graphics Tech: “Cinematic Depth of Field” & “Advanced Particle Simulation in Compute”

http://schedule.gdconf.com/session/advanced-graphics-tech-cinematic-depth-of-field-advanced-particle-simulation-in-compute

Advanced Graphics Tech: “D3D12 and Vulkan Done Right” & “Wave Programming in D3D12 and Vulkan”

Waveプログラミングは今年のグラフィックスAPIのアップデートの大きなトピックなのでチェックですね.

http://schedule.gdconf.com/session/advanced-graphics-tech-d3d12-and-vulkan-done-right-wave-programming-in-d3d12-and-vulkan

Advanced Graphics Tech: Moving to DirectX 12: Lessons Learned

まだまだDirect3D11で,ってところは多いでしょうし移行中って多いでしょうからチェックですね.

http://schedule.gdconf.com/session/advanced-graphics-tech-moving-to-directx-12-lessons-learned

AMD

Advanced Shader Programming on GCN (Presented by AMD)

このセッションは,Vegaの世代のAMD GPUの話なので次のAMDのアーキテクチャ向けの業務やる人はチェックですね.あと,Wave level operationもHLSL 6.0の話題なのでチェック.

http://schedule.gdconf.com/session/advanced-shader-programming-on-gcn-presented-by-amd

Explicit DirectX 12 Multi GPU Rendering (Presented by AMD)

マルチGPUを相手にする機会はあまりないんですが,個人的にはGPUが分散した状態で1つのアプリケーションのレンダリングをやるということ自体は興味があります.

http://schedule.gdconf.com/session/explicit-directx-12-multi-gpu-rendering-presented-by-amd

Radeon ProRender and Radeon Rays in a Gaming rendering workflow (Presented by AMD)

こうしたトピックはゲーム向けじゃなさそうなのですが”Gaming rendering workflow”ということが気になりますね.

http://schedule.gdconf.com/session/radeon-prorender-and-radeon-rays-in-a-gaming-rendering-workflow-presented-by-amd

Real-Time Finite Element Method (FEM) and TressFX 4.0 (Presented by AMD)

AMDの髪向けライブラリのTressFXとリアルタイム有限要素法のセッション.

http://schedule.gdconf.com/session/real-time-finite-element-method-fem-and-tressfx-40-presented-by-amd

D3D12 & Vulkan: Lessons Learned

入門記事ですがチェックですね.

http://schedule.gdconf.com/session/d3d12-vulkan-lessons-learned

DirectX 12 Case Studies (Presented by NVIDIA)

http://schedule.gdconf.com/session/directx-12-case-studies-presented-by-nvidia

Frostbite

Frositteの関連セッションは数があるので,1つのジャンルでいいかと思います.UnityやUE4と違いFrostbiteはEA DICEが中心に開発して,EAの傘下スタジオで使われるインハウスエンジンなのでインハウスで大規模タイトルをやってるところの励みになりますね.

4K Checkerboard in ‘Battlefield 1’ and ‘Mass Effect Andromeda’

昨年末から家庭用も徐々に4K対応が必要になってきたわけですが,GPUのそのまま解像度を上げる…というのはなかなか大変なのでレンダリングの工夫がいるわけですが,その中でCheckerboardレンダリングは流行っています.

もとは,GDC 2016のRainbow SIx SiegeのこれはFrostbiteでの実装事例ですね.

http://schedule.gdconf.com/session/4k-checkerboard-in-battlefield-1-and-mass-effect-andromeda

FrameGraph: Extensible Rendering Architecture in Frostbite

個人的に注目度高いのですが,FrostGraphというレンダリングの拡張の仕組みの話ですね.グラフベースでレンダリングパイプライン構築できれば…と思う人は多いですよね.

http://schedule.gdconf.com/session/framegraph-extensible-rendering-architecture-in-frostbite

High Dynamic Range Color Grading and Display in Frostbite

昨年からHDR TV(BT.2020)対応始まりましたが,Frostbiteの実装事例ですね.

http://schedule.gdconf.com/session/high-dynamic-range-color-grading-and-display-in-frostbite

Microsoft

D3D12 Performance Tuning and Debugging with PIX and GPU Validation (Presented by Microsoft)

先日,Windows 10向けのPIX出ましたがそのセッションですね.

http://schedule.gdconf.com/session/d3d12-performance-tuning-and-debugging-with-pix-and-gpu-validation-presented-by-microsoft

Game Mode and the Evolution of Cross-Platform UWP Game Development (Presented by Microsoft)

Windows 10のCreator UpdateのGame ModeとUWPの話のようですね.

http://schedule.gdconf.com/session/game-mode-and-the-evolution-of-cross-platform-uwp-game-development-presented-by-microsoft

Windows Holographic Rendering: One SDK to target VR and AR ecosystems (Presented by Microsoft)

Windows Holographicsの開発セッション.VRとARのSDKを1つの統合したもので提供するようですね.GDC 2017の中でも注目度が高いのではないかと思います.

http://schedule.gdconf.com/session/windows-holographic-rendering-one-sdk-to-target-vr-and-ar-ecosystems-presented-by-microsoft

NVIDIA

D3D Async Compute for Physics: Bullets, Bandages, and Blood (Presented by NVIDIA)

ほかのセッションのところでも書いてますが,Pascal世代のGeForcedでのAsync Computeの活用方法はちゃんと聞いておきたいですね.

http://schedule.gdconf.com/session/d3d-async-compute-for-physics-bullets-bandages-and-blood-presented-by-nvidia

NVIDIA Vulkan Update (Presented by NVIDIA)

VK_NVX_device_generated_commandsはAPIの標準になってほしい拡張ですね.

http://schedule.gdconf.com/session/nvidia-vulkan-update-presented-by-nvidia

Photogrammetry for Games: Art, Technology and Pipeline Integration for Amazing Worlds (Presented by NVIDIA)

NVIDIAのセッションというのが驚きましたが,フォトグラメトリーはデータ作成として一般化してきましたね.

http://schedule.gdconf.com/session/photogrammetry-for-games-art-technology-and-pipeline-integration-for-amazing-worlds-presented-by-nvidia

Real-Time Rendering Advances from NVIDIA Research (Presented by NVIDIA)

NVIDIA Reserchの最近の研究トピックが1セッションでいろいろと聞けるのはよさそうですね.

http://schedule.gdconf.com/session/real-time-rendering-advances-from-nvidia-research-presented-by-nvidia

Unity

The Future of Rendering in Unity (Presented by Unity Technologies)

Unityの将来のレンダリングの話ですね.セッションのスピーカーがTBDですが,先日移籍したNatalya Tatarchuk氏でしょうか?

http://schedule.gdconf.com/session/the-future-of-rendering-in-unity-presented-by-unity-technologies

Unreal Engine 4

Stylized Character Creation in UE4 Mobile Games

モバイルでやるということが気になりますね.

http://schedule.gdconf.com/session/stylized-character-creation-in-ue4-mobile-games

OpenGLでReversed-Zに切り替える行うチュートリアル記事

最近,UnityがDepth Bufferの方針をReversed-Zに変えたことで話題になりましたが,OpenGLでReversed-Zに切り替える行うチュートリアル記事を公開している人がいました.

Reversed-Z in OpenGL
https://nlguillemot.wordpress.com/2016/12/07/reversed-z-in-opengl/

Reversed-Zに関しては,ゲームコンソールにGPUが搭載されたぐらいのころからいろいろと議論があったとは思いますが,かなり前なのでなかなかまとまった資料が現在見つけにくくなってる(古くて消えてる)ところがありますが,NVIDIAのDepth Precision Visualizedは振り返るのによいと思います.

Depth Precision Visualized
https://developer.nvidia.com/content/depth-precision-visualized

NVIDIAのVulkan Device-Generated Commands拡張のサンプルと記事

以前,NVIDIAのVulkan Device-Generated Commands拡張について記事を書きました(以前の記事)が,サンプルと解説記事が公開されています.

Driver and New Sample for VK_NVX_device_generated_commands
https://developer.nvidia.com/driver-and-new-sample-vknvxdevicegeneratedcommands

ソース
https://github.com/NVIDIAGameWorks/GraphicsSamples/tree/master/samples/vk10-kepler/BasicDeviceGeneratedCommandsVk

ドキュメント
http://nvidiagameworks.github.io/GraphicsSamples/DeviceGeneratedCommandsVulkanSample.htm

 

Vulkanでデバッグマーカーを打つ方法

前回,VulkanのプログラムでNsightでキャプチャする話を書きましたが,Vulkanでプロファイラを使用する際のデバッグマーカーの打ち方について書き忘れていたのでこちらの記事で取り上げます.

Vulkanのサンプル書いてる人がRenderDocへの対応の話で記事を書いていました.

OFFLINE DEBUGGING IN VULKAN WITH VK_EXT_DEBUG_MARKER AND RENDERDOC
http://www.saschawillems.de/?page_id=2017

Vulkanではツールなど向けにVK_EXT_debug_markerという拡張を用意しています.これを使うとツール上でとれるイベントマーカーやオブジェクト(BufferやImage)への名前付けやタグ付けができるようですね.

上の記事の著者によるサンプルもGitHubにありました.

debugmarker
https://github.com/SaschaWillems/Vulkan/tree/master/debugmarker

これをNsightでキャプチャしてみます.

debugmarker001

Scrubber見ているとPerfMarksがついてるのがわかります.

debugmarker002

Reouscesでは一部のImageについては名前がついているのがわかります.

debugmarker003

ちゃんとマーカーが使えたので,Vulkanでは,VK_EXT_debug_markerでよさそうですね.

NVIDIA Nsight Visual Studio Edition 5.2 RC1を見ていく~Vulkan編

はじめに

先日の「NVIDIA Nsight Visual Studio Edition 5.2 RC1を見ていく~Direct3D12編」の記事に続いてVulkan編です.Vulkanへの対応に関してはまだ開発途上のようなので一部の機能に限られるようですが,現状サポートされているものを見ていきます.

今回キャプチャ対象のVulkanのプロジェクトは定番のサンプルを使っていきましょう.

https://github.com/SaschaWillems/Vulkan

Vulkanのプログラムのキャプチャ

まずはキャプチャ対象のプログラムをビルドしておきます.

VulkanのプログラムのキャプチャもDirect3D12の時と同じくVisual StudioからNsightメニューStart Graphics Debuggingをします.

vulkan001

ひとまずshadowmappingサンプルを起動してみました.

vulkan002

どうもほかのグラフィックスAPIの時と違ってCtrl + ZでHUDが出てこないのでVisual StudioのNsightメニューのPause and Capture Frameします.

vulkan003

これでキャプチャはできました.

vulkan004

Vulkan向けにサポートしている機能

Nsightで見れるものというのは,基本的にはNsightのWindowsのところ以下にあるものなのでそれを見ていきます.

vulkan005

Gprahics Debug FoucusやShader ListはほかのグラフィックスAPIにもあるようなものですね(System InfoはVulkanのデバッグに関連しないので割愛).以下がサポートしているものですね.

  • API Inspector
  • API Statics
  • Current Target
  • Events
  • Geometry
  • Memory Pool
  • Resources
  • Scrubber

上から順に説明をしていきたいところですが,Scrubberは何かと単語として出てくるのでこれだけ先に説明します.

Scrubber

Scrubberは前回の記事でも紹介しましたが,Command QueueやCommnad Lists,Draw CallやClearなどをタイムラインで並べたものです.青いのがDrawですね.

vulkan008

このScrubberはparallaxmappingサンプルをキャプチャしたものですが,結構Drawが多いのですが,見てみると画面に描画してるテキストが1文字単位で1Drawという感じのようですね.

vulkan007

API Inspector

API InspectorはDrawコールなどの呼び出し時のシェーダやバインドされたリソース,Pipelineなどがわかります.

たとえば,parallaxmappingのキャプチャのEventID 13のDrawが画面の石の描画をやっているのですが,そのPipelineは下記ですね.PipelineではDirect3D12でいうとRoot Signatureにあたる箇所やDescriptor Set (Direct3D12だとDescriptor Table)みたいなものが見れます.下記ではシェーダステージに割り当てるUniform BufferやSamplerがわかりますね.

vulkan009

次のRender Passも開いてみます.RenderPassはDirect3D12にはない概念ではあるのですが,レンダーターゲットのフォーマットやClear Colorなどがまとまったものですね.

vulkan010

1つ1つ見ていくと大変なので次はFS,Fragment Shaderを見てみます.FSではテクスチャColorとNormal mapがバインドされているのはわかりました.

vulkan011

あとは,RasterやPix OpsなどはRasterizerやBlendのステートがわかります.

API Statistic

API StatisticはVulkanのvkではじまるAPIの呼び出し回数や平均,合計時価などがわかります.

vulkan012

Current Target

Current Targetは現在選択しているDrawまでのRender TargetやDepthやStencilを見れます.Depth Targetも見れるのでShadow mapなどのデバッグは現状でも大丈夫そうですね.

vulkan013

vulkan014

Events

EventsはVulkanのAPIのイベントを順番に表示したものですね.Scrubberではピンポイントに選択しにくいとかにはいいかもしないですね.フィルタもあるのでDrawとかBindとかの単語で絞ったりできますし.

vulkan015

Geometry

Geometryが現在選択しているDrawの頂点データなどを見ることができます.Graphicalならメッシュの形状が見ることができますし,Memoryなら頂点データの数値を見れます.

vulkan016

vulkan017

Memory Pool

Memory Poolはテクスチャとかバッファなどリソースの値をメモリ上に配置された状態でみれるようですね.テクスチャなどは画像のような形でグラフィカルに見たい場合は,次に説明するResoucesで見ます.

FlagsなどでそのリソースがDevice LocalだったりHost VisibleだったりとかがわかるのでCPUから読み書きが可能とかGPUでの読み出しのみとかそのあたりはわかりますね.このあたりは設定を間違うと速度減につながるので遅い処理のリソースは間違いがないかチェックするのに使えますね.

vulkan019

Resources

ResourcesはImage(テクスチャなど)とかバッファ,Frame Buffer Objectなどのリソースが見れます.カテゴリ単位で絞り込んだりはできるようですね.あとフィルタ機能もあるようですね.リソースにちゃんと名前を付けていれば活用できそうですね.

vulkan018

Scrubberは最初に説明したので,以上までが現状サポートしている機能のようですね.

おわりに

ひとまずざっとNsightのVulkan向けの機能がわかりました.現状,ベンダー非依存であればRenderDocが対応していますし,AMDならCodeXLも対応していますがNVIDIA GPU向け開発者としてはRenderDoc以外の選択肢ができたのはよいですね.

あと,現状はパフォーマンス分析関連の機能はあまり強くないのでそこは課題になりそうですね.

そのあたりの機能がほかのAPI向け並みにそろってくるとVulkan開発では便利にはなりそうですね.