« 2018年9月 | トップページ | 2018年11月 »

2018.10.30

GeForce RTX向けの機能を使いつつVulkan でレンダラ開発を動画配信しながら作る話

meshoptimizerの開発者のArseny Kapoulkine氏がYoutubeで開発を配信しながらNiagaraというレンダラを作っています。

Niagara
https://github.com/zeux/niagara

このレンダラは外部ライブラリに頼らず、Vulkanで開発していくもので、以下のような新しい機能(一部、RTXシリーズのMesh Shaderなども使いつつ)を入れたものでやっていくようですね。

・GPU culling & scene submission
・cone culling
・automatic occlusion culling
・task/mesh shading,

配信チャンネル
https://www.youtube.com/playlist?list=PL0JVLUVCkk-l7CWCn3-cdftR0oajugYvd

GeForce RTXはレイトレーシングの部分に注目が集まりますが、ラスタライズ側の拡張も意欲的なのでDirect3D12世代でここまで定番として定着してきた手法から新しいアプローチの発明が出てくる可能性がありますね。

2018.10.29

HalcyonのVulkan対応の話

EA SEEDのHalcyonのVulkan対応の話のスライドが公開されていますね。

Khronos Munich 2018 - Halcyon and Vulkan
https://www.ea.com/seed/news/khronos-munich-2018-halcyon-vulkan

HalcyonはR&DチームのフレームワークでEAのFrostbiteと異なり少しプロダクションで使われる技術よりも先の技術が入っていることとプロトタイピングの速さが重視されている感じですね(ゲームエンジンともなるとコードベースが大きくなるので軽量なものは必要になりそうですね)。

GDC 2018やSIGGRAPH 2018ではDXRを組み込んだ話がメインでしたが、このスライドではVulkan版の話です。

このスライドでは単純にVulkan対応という話題というよりは、Halcyon設計自体がわかる良い資料ですね。マルチGPU対応の部分も単にAlternate Frame Rendering (AFR。複数のGPUをフレーム単位で分担をを変える)ではない使い方というのも提案されていますね。

レンダリングコマンドやFramegraphの話などこの世代のAPIで作るレンダリングエンジンに対する考えが学べて良いですが、Direct3D12とVulkanを混在して使えるとかはちょっとびっくりですね。極端な話画面の半分をDirect3D12で、もう半分をVulkanということもできるようですね。

実はこの辺は、クラウドで分散したGPUで大きなレンダリングをする...などの基礎になるのかなとは個人的に思っています。GPUやメモリが離れたところにあっても協調してレンダリングできるというのはクラウドレンダリング時代に必須なんだろうと予測しています。

あと、Metal 2対応なんかも将来やるみたいですが、Direct3D12とあわせてMetal 2はMachine Learning用のAPIの組み込みという単語もありますね(Direct3D12ならDirectML)。CGの分野はAIと組み合わせると相性がいい分野が多いので、レンダリングエンジンに組み込むというのはこれから業界で模索が続くところでしょうね。

そういったわけで、GPUを使ったレンダリングエンジンの未来を考えてるなと思うスライドでした。

2018.10.28

MicrosoftのglTF-SDKにシリアライズ/デシリアライズのサンプルが来た

MicrosoftのglTF-SDKにシリアライズ/デシリアライズのサンプルが加わってますね。GLTFSDK.Samplesというフォルダにサンプルがあります。

glTF-SDK
https://github.com/Microsoft/glTF-SDK

NuGetに書かれてるサンプルが古い時代のものでコンパイルが通らなったのですが、これで使い方がわかりますね。

https://www.nuget.org/packages/Microsoft.glTF.CPP/

とりあえず、シリアライズのサンプルの方を自分のモデルローダに組み込んでいこうと思います。バイナリの.glbとJSONの.gltfどちらもいけるのがいいですね。

https://github.com/Microsoft/glTF-SDK/tree/master/GLTFSDK.Samples/Serialize

2018.10.16

そろそろ移行するか

先日の記事からそろそろHLSLのシェーダコンパイラはfxcからdxcに移行するかなぁ。

Physically Based Renderingがオンラインで無料公開

Physically Based Renderingがオンラインで無料公開になったみたいですね。

http://www.pbr-book.org/

リポジトリ
https://github.com/mmp/pbrt-v3

2018.10.13

EA SEEDのHalcyonのDirect3D12やVulkan向けのシェーダの話

Running Microsoft FXC in Docker
https://www.wihlidal.com/blog/pipeline/2018-09-17-linux-fxc-docker/

1か月くらい前に出てる記事ですが、ようやく読みました。

ちょうどこの記事では、EA SEEDのHalcyon(R&DチームのSEEDのエンジン。PICA PICAデモなどで使用)のシェーダの話が書かれています。

まず、Direct3D12には旧来型のHLSL 5.1までのDXBCを出力するfxcのコンパイラとHLSL 6.xからのLLVMベースのDirectXShaderCompiler(DXC)がありますが、ドライバが枯れている分DXBCがDXCが出力するDXILにパフォーマンス的に勝つこともあるし、DXILのシェーダが問題になることも(ただし、オープンソースなので報告すると数日で修正される)あるので、DXBCが使われるケースはまだまだあるようですね。

Halcyonではそうした事情から、シェーダはfxcとDXCのものが混在しているようですね。

続いてVulkanの話ですが、HalcyonではVulkanのSPIR-VのシェーダはDXCから出力しているそうです。DXCは当初は、SPIR-Vのバイナリを出力することはできなかったわけですが、現在はGoogleのエンジニアが加わり、HLSLからSPIR-Vをのバイナリ出力ができるようになりました。

…ということで、HalcyonではシェーダはすべてHLSLが使われているようですね(GLSLは使われていない)。

この記事で興味深いのはDirect3D12とVulkan出のシェーダの比較ですね。記事中の表では、各シェーダのDirect3D12とVulkanのパフォーマンスが比較されています。Direct3D12ではDXBCとDXILのどちらが使用されているかも記述されてます(Using DXBC)。Direct3D12では37のシェーダのうちDXBCが使われてるものは5つある、といった感じです。

この表から見て取れるものとして、

・全体としてはDirect3D12側がパフォーマンス
・DXIL(Using DXBCがNo)とVuklkanの処理時間が同じものはDXCのSPIR-V出力がほぼ同じパフォーマンスが出せているし、場合によってはVulkanが勝つものもある
・DXBCが用いられていて、Vulkanを引き離すところがある(DXILとの比較がないですが、おそらくDXILが遅い)

パフォーマンスの差は、GPUのドライバの最適化度具合なわけですが、大きく離れていたりDXBCがSPIR-Vに負けるケースなどについては細かく記事中で言及されています(LightingとかReflectionパス)。

DXCのSPIR-V出力の完成度に関しては、あまり自分で検証したことがなかったのですがこの記事を見ていると完成度が高まってきたところはありそうですね。まだ、問題のある個所はありますがそろそろ移行を考えるには良い時期なのかもしれませんね。

ちょっと一か月遅れぐらいで読みましたが、興味深い記事でした。


2018.10.12

UnityのHDSRPを使ったサンプルアセットFilm Sample Project

UnityのHDSRPを使ったサンプルアセットFilm Sample Projectがアセットストアに公開されていますね。

Film Sample Project
https://assetstore.unity.com/packages/templates/film-sample-project-130415

このサンプルはe Adam 2: The MirrorやBaymax Dreamsのような映像作品をUnityで作る人向けのサンプルのようでHD Scriptable Render Pipeline、Post Processing Stack V2、Timeline、Cinemachineが使われてるようですね。


Unityのバージョンは2018.2.x以上が必要だそうです。

2018.10.11

今日のRTXな話題

まだ、RS5の正式リリースに合わせた形になっていないようなので、少し待ちですかねぇ。

2018.10.09

DirectMLって

そういえば、October Update 2018でDirectMLが加わりましたが、あれってRTX シリーズのTensor Coreとか使ってるくれんだろうか?

2018.10.03

Windows 10 October UpdateとDXRの記事

Windows 10 October Updateに合わせて、DXRの記事が来てますね。

DirectX Raytracing and the Windows 10 October 2018 Update
https://blogs.msdn.microsoft.com/directx/2018/10/02/directx-raytracing-and-the-windows-10-october-2018-update/

Windows 10 October Updateきた

Windows 10 October Updateきたようですね。

https://blogs.windows.com/windowsexperience/2018/10/02/how-to-get-the-windows-10-october-2018-update/

DXRがこのバージョンからリリースという事のようなのでチェックではありますが、最新のDXR 1.5はFallback Layerの対応状況よくないのでRTX用意しないとなぁ。

« 2018年9月 | トップページ | 2018年11月 »