Search Unity

HD レンダーパイプライン:ビジュアル品質に重点を置いたパイプライン

, 3月 16, 2018

先日のブログ記事では、スクリプタブルレンダーパイプライン(SRP)についてご紹介しました。簡単に言うと SRP とは、Unity がフレームをレンダーする方法をデベロッパーが C# で制御できるようにするものです。Unity 2018.1 にはライトウェイトレンダーパイプラインおよび HD レンダーパイプライン(HD RP)という 2 つのレンダーパイプラインがビルトインで搭載されます。本記事では、このうち HD RP に焦点を当ててお話ししていきます。

HD RP の目的は、高解像度のビジュアルを実現するためのツールをデベロッパーに提供することです。 

このレンダーパイプラインは以下の 3 つのコンセプトを軸に設計されています。

  • 物理ベースレンダリング
  • 一元的、かつ一貫したライティング
  • 特定のレンダリングパスに依存しない機能

物理ベースレンダリングは、ライティング、マテリアル、カメラの 3 つの柱によって成り立っています。ライティングとマテリアルは物理的なインタラクションに基づいており、様々なライティング条件下で一貫した結果を得るためには両者が明確に分離されている必要があります。最終的にライティングが画面上でどのように表示されるかは、カメラを通して決まります。物理ベースレンダリングの目的は、アーティストがより簡単に説得力のある結果を実現できるようにすることにあります。

「一元的なライティング」とは、シーン内で使用されている媒体やオブジェクトのすべてが同じライティングを受けるということです。不透明マテリアル・透明マテリアル・ボリューメトリックマテリアルが一切区別されない状態です。「一貫したライティング」とは、マテリアルが(例えばデカールなどで修正されていても)、光源の種類([例]リフレクションプローブやエリアライトなど)に関わらず、ライティングに対して正しく反応しなければならない事を意味します。これにより、最終的な見た目がより一貫性のあるものになります。

リアルタイムレンダリングで使用されるレンダリングパスは様々です。これには、デファ―ド/フォワード、シングルパス/マルチパス、タイル/クラスターなどが含まれます。ゲーム開発においては、選択したレンダリングパスによってグラフィックスの機能に制約が掛かるのが一般的です。これに対し HD RP は、レンダリングパスの種類に関わらず同じグラフィックス機能を使用可能にすべく開発されました。このため、ゲームに必要な機能を考慮してそれを基にレンダリングパスの選択を行うのではなく、純粋にパフォーマンス面のみを考慮して選択を行えるようになっています。

HD RP は、これらの原則にできる限り沿う形で開発されています。

HD RP は誰のために開発されたか

HD RP は高性能 PC や据え置き機をターゲットにしており、美しい高解像度ビジュアルを実現することに重きを置いています。規模の小さな開発チームでもトップレベルのグラフィックス機能を使用できるようにすることがその目的です。少なくとも DirectX 11 レベルの機能セットを前提としており、コンピュートシェーダーを非常に多用します。これに伴うトレードオフは、HD RP は性能の低いプラットフォームでは機能しないことです。対応のターゲット API は D3D11、D3D12、GNM(PlayStation 4)、Metal および Vulkan です。VR への対応も予定されていますが、現時点で入手可能なプレビュー版には実装されていません。

さらに、HD RP には完全に新しい機能と挙動のセットが搭載されており、これに伴う学習と開発セットアップの再構成が必要となります。プロジェクトを Unity 組み込みのレンダーパイプラインから HD RP へアップグレードするための変換ツールもご提供していますが、これは、マテリアルとテクスチャーの簡単な再設定のみを行うものです。ライティング、ポストプロセッシング、シーン設定、グラフィックス設定、カスタムシェーダーはすべて修正が必要となります。

(例)Viking Village プロジェクトのアップグレード

HD RP は現段階ではプレビュー版であるためプロダクト開発でのご利用はおすすめしません。

ライティングの改良

HD RP は新しいライティングアーキテクチャーを搭載しています。このアーキテクチャーにおいては、デファ―ド/フォワード、およびタイル/クラスターを組み合わせたレンダラーが使われます。これにより、シーン内のライトの数に応じた対応を、これまで Unity に組み込まれていたレンダーパイプラインよりも遥かに効率的に行うことが可能になります。この新しいライティングアーキテクチャーは、パフォーマンスに重点を置いています。

デバッグモードで、タイル化されたライトを一覧表示している例

また、HD RP には様々な追加のライトのプロパティや新しいライトエディターが搭載されており、ライトをフェードさせたり、拡散ライティングとスペキュラーライティングのどちらか一方のみに設定を適用したり、ライトの色の設定に色温度を使用したりすることができます。スポットライトの場合は、内角を制御したり異なる形(円錐形・ボックス形・角錐形)を使用したりすることが可能です。色付きのクッキーにも対応しています。

HD RP は、長方形ライトなどのリアルタイムのエリアライトの使用に対応しています(現時点ではシャドウやベイクには非対応です)。

ライトの減衰は物理的な逆 2 乗の法則に従って行われ、物理的なライトの単位が使用されます。ライティングとライトの制御は完全にリニアで、Unity 組み込みの「ガンマモード」はなくなっています。太陽光の強度は地面(床)の高さにおけるルクス(lx)で定義され、ポイントライトとスポットライトはルーメン(lm)で定義されます。

イメージベースドライティングの面では、HD RP ではリフレクションプローブが大幅にアップグレードされました。具体的には、方向付きのバウンディングボックスや球形の使用が可能となり、プロキシシェイプ(シーンのジオメトリを近似するエリア)とインフルエンスシェイプ(ピクセルが影響を受けるエリア)が分離され、インフルエンスのフェーディングに関する各種オプション(フェースごとのフェーディング、法線の方向に基づくフェーディングなど)が使用できるようになっています。

マテリアルのレンダリング

HD RP には Lit シェーダーと呼ばれる独自のスタンダードシェーダーがあります。Lit シェーダーは数多くの機能を搭載しており、従来の Unity 組み込みのレンダーシステムよりも豊かなマテリアルの表現が可能です。両面サーフェスのオプションもあり、自動的にグローバルイルミネーションに接続されて、プラナーやトリプラナーを始めとする様々なマッピングのオプションが使用できるようになりました。パララックスオクルージョンマッピングやテッセレーションなどの高度なエフェクトがワンクリックで使用できるようになっています!

しかし、マテリアルのレンダリングに関する最も強力な追加要素は、そのライティングモデルです。
HD RP が使用する双方向反射分布関数は、スペキュラーレイヤー用の等方性多重散乱 GGX と拡散光レイヤー用の Disney 拡散です。従来の Unity 組み込みのレンダーシステムとの違いは、この多重散乱の部分です。

以下の画像は、金色のメタリック球の比較です。左に行くにつれてスムース、右に行くにつれてラフになっています。

等方性単一散乱 GGX(従来の Unity 組み込みのレンダーシステムに類似しています)

HD RP の等方性多重散乱 GGX の場合、マテリアルがラフになるに従って、暗くなるのではなく彩度が高くなります。

デフォルトのパラメーターの定義は Metallic/Smoothness ですが、同じシェーダー内で SpecularColor/Smoothness に切り替えることも可能です。

HD RP では、この初期設定モデルを改良したり置き換えたりできます。各種オプションを使って以下を行うことができます。

  • 等方性 GGX を異方性 GGX に置き換える
  • Disney 拡散にサブサーフェススキャタリング(表面下散乱)を追加する
  • 透過性を追加する
  • 遊色エフェクトを追加する
  • クリアコート GGX を追加する

このようにライティングモデルにバリエーションがあるので、様々な複雑な見た目を実現できます。

透過性とサブサーフェススキャタリング(表面下散乱)を使用したキノコの画像(提供:Laurent Harduin)

また HD RP では、透明マテリアル用に、背面→前面の順でのレンダリング(ソートに役立ちます)や深度ポストパス(透明マテリアルの被写界深度エフェクトに使用できます)などの新しいオプションが使用可能です。

背面→前面の順にレンダーした、透明な両面サーフェスの遊色エフェクトの例

HD RP は Lit シェーダーがベースとなっており、様々な Lit シェーダーを組み合わせられる LayeredLit シェーダーを提供しています。LayeredLit に関する詳細は、こちらのブログ記事でお読みいただけます。

HD RP でもうひとつ追加されたのは、デカールへの対応です。デカールは不透明と透明の両方のマテリアルに対応しており(現在引き続き開発中です)、グローバルイルミネーションのサンプリング(ライトマップ/ライトプローブ)に正常に適用されます。

デカールを使用した、床に描かれたチョークの絵

デバッグ

HD RP で追加された最も重要な機能はデバッグツールです。デバッグは、データ作成およびパフォーマンスの問題を理解するためには極めて重要です。

HD RP にはカスタム可能な新しいデバッグウィンドウが搭載されており、これにより、デバッグの表示モードとレンダーパイプラインの設定を制御できます。このデバッグウィンドウは Unity エディター内のみならずどんなプレイヤーでも使用できます。そしてすべてのデバッグ機能が PlayStation 4 を含むすべてのターゲットデバイスで使用可能となっています。

Unity エディター上のデバッグウィンドウ(通常のプロパティ表示の状態)

デバッグウィンドウでは、不透明・透明の両方のマテリアルのプロパティを、デファ―ドあるいはフォワードレンダリングパスで表示できます。

ライティングのデバッグ表示(拡散ライティングのみの表示・反射ライティングのみの表示)も可能です。シーン全体に適用されるプロパティ(法線、アルベド、スムースネスなど)のオーバーライドも行え、モーションベクターやデプスバッファなどの中間的なレンダーターゲットを表示することもできます。その他にも、特定のプロパティ(「ライトマップを使用したオブジェクト」「テッセレーションを使用したオブジェクト」など)の強調表示や NaN チェッカーなど、様々な機能を備えています。

プレイヤー内のデバッグウィンドウの例(拡散ライティングモードでアルベドをオーバーライドした状態)

カラーピッカーモードも面白いモードのひとつです。これは、現在の画面上の値や HDR 値をポストプロセッシングの適用前に読み出すものです。

デバッグウィンドウは簡単に拡張可能で、AI やアニメーションデバッグツールなど、ゲームに必要な任意のデバッグツールに対応させることができます。

新しい挙動

HD RP には従来の Unity 組み込みのレンダーパイプラインとは異なる新しい挙動が搭載されています。

デファ―ドとフォワードのレンダリングパスが同じ機能セットをサポートしています。サブサーフェススキャタリング(表面下散乱)、スクリーンスペースアンビエントオクルージョン、およびデカールは、両方のパスで同様に機能します。特定の機能を使用するためにどちらか特定のレンダリングパスを選択しなければならないという事はありません。

HD RP はカメラに対する相対的なレンダリングを採用しています。つまり、ワールドの原点から遠く離れていたとしても精度の高いレンダリングが行えるということです。これは HD RP で使用されるすべてのシェーダーに影響します。

カメラは、どのライティングアーキテクチャを使用するか(デファ―ドおよびフォワードレンダラーパスをシーン内で組み合わせ可能)と、そのレンダリングにどの機能を有効にするかを制御できます。フォグ、シャドウ、ポストプロセッシングなどを無効にすることもできます。

シーン設定のセットアップには、ボリュームの設定をベースとしたまったく新しいシステムが採用されています。これはポストプロセッシングで使用されるものと類似しています。シーンの設定(空、太陽光のカスケードシャドウ、スクリーンスペースシャドウの接触設定など)をボリューム毎に設定でき、パラメーターを補間してボリューム間の遷移を滑らかにすることが可能です。

また、空とフォグ用に新しいオプションが追加されています。高さに応じたフォグや、空の色で彩色されたフォグなどです。また、フォグは不透明・透明の両方のマテリアルに影響を与えます。

最後に、レンダーターゲットのアロケーションに関して HD RP は専用のシステムを採用しており、画面をリサイズするたびに再アロケーションしなくても済むようになっています。このため、例えば動的解像度の使用時などに余計なターゲットアロケーションの発生が回避されます。

制限事項

HD RP は現在も開発中であるため、一部の機能は未完成であったり、不具合があったりします。Unity 2018.1 と共にプレビュー版が公開されますが、まだプロダクト開発にお使いいただけるレベルにはありません。

現時点における制限事項で重要なものは、HD RP は Unity のパーティクルシステムで作成された Lit パーティクルと互換性がないことです。互換性があるのは Unlit パーティクルのみです。

また、ビルトインのテレインシステムには様々なアーティファクトがあります。

すべてのスクリプタブルレンダーパイプライン(SRP)に言えることですが、ライトのレンズフレアなど、以前 Overlay レイヤーでレンダーされたものにはすべて非対応です。Grabpass はなくなっています。

今後の開発予定

開発チームは現在、安定化およびプラットフォーム対応の作業を集中的に進めていますが、ボリューメトリックライティングなどの目玉機能も公開予定です。

エリアライトは Unity Labs チームによる調査・研究に基づいて改善される予定です。

より一貫性のあるライティングとポストプロセッシングを実現するための次のステップとして、物理ベースカメラの搭載も予定されています。

また、キャラクターレンダリングツールのいくつかのプロトタイプも開発中です。

Windup プロジェクトの女の子のキャラクターを含むシーンのレンダリング

まとめ

HD RP は、現世代のゲームのビジュアル品質を極限まで高める、Unity のまったく新しいレンダーパイプラインとして公開されます。

これを使用するに当たっての難点を挙げるとすれば、現在の Unity 組み込みのレンダーパイプラインと大幅に異なるために、学ばなければならない事が多いことです。
上記でご紹介したすべての機能が複雑なものです。一元的かつ一貫したライティングの実現は非常に難易度の高い課題です。優秀なデバッグツールの使用は往々にして容易ではなく、カメラに対して相対的なレンダリングを導入すると、今まで以上に熟考が求められます。HD RP 用のカスタムシェーダーの記述も可能ですが、そのために必要とされる知識は以前より遥かに多くなります。しかし、このような課題を乗り越えるに値する結果を HD RP はもたらしてくれるはずです!

Unity ベータプログラム に参加して、新機能をいち早く体験してみてください。HD RP の開発状況は GitHub で随時ご確認いただけます。Unity フォーラムの Graphics Experimental Previews のセクションで HD RP についてお話しできるのを楽しみにしています!

HD RP および複雑なマテリアルを使用した、独自のスタイルを持つゲーム環境の例

 

64 replies on “HD レンダーパイプライン:ビジュアル品質に重点を置いたパイプライン”

I have more doubts.
1. Could I create a project using HD-RP and after update to new unity version using new HD-RP?
2. I have tested alpha cutoff but it doesn’t work. I’m using Beta 2. Am I doing something wrong?

Hi, I have some doubts about that.
First of all, great work. I have tested and it looks amazing.
1. So, I noticed that terrain is not working yet using HD Render Pipeline. Do you know what beta version it will be working?
2. If selected HD-RP template when creating a project, could I disable later?
3. With no terrain working yet, what must I do to create map?
4. How could I create vegetation with cutout option? I have created a grass and plant that parts of texture must be hide/disappear.

Please make computing enlighten on GPU, It’s pain in butt to wait long time computation on cpu.

Nice the light settings are kinda heavyweight! – but actually very useful to simulate indoor lighting products for the kind of pre-viz stuff I have looked at.
If I could simulate (more loosely) temperature and lumens in other lighting pipelines it would also be good.
Or perhaps a scalable pipeline for indoor vizualisation could be made

The last picture with the SSS looks absolutely bloody gorgeous, and the tree with the hole in it is incredible.
Could the artists share their experience making these?

That is all fine and dandy. Unity Tech finally realized, that a modern rendering pipeline is important to many devs, who do not work on mobile titles.
For me this comes a bit too late, for my current project. So I use another engine that starts with an “U”.
The biggest problem here is, this is far from being production-ready. And given UT’s track record, it will be for a long time.
I really hope UT get’s this right. But I fear this becomes another Umbra-, Enlighten-, GUI-, or Terrain-Desaster.

So instead of being an adult, continuing with your engine of choice which is obviously Unreal, you decide to come to the blog purely to rant? haha.

Not really Robert. Not if you had read my post properly. I actually would see this becoming a success. But I see this was this with a lot sceptism, based on my over 8 years of experience with Unity. And I still use Unity for my every day work as an freelance artist. For my own project though, Unity’s rendering and performance capabilities are simply not sufficient enough. And I can not count on some promises. Especially if they come from UT.

By the way. No need to attack me personally, because you might disagree with me. Your post isn’t what I would call mature either.

It can be interesting if somebody is capable of integrating the Unreal rendering (and paying the Unreal royalties for) into the feuter Unity Scriptable Render Pipeline. You are sceptical about Unreal 20yr rendering experience will bit this incoming 2018~19 Unity High Definition Render Pipeline? Well, that is compressible. But I like how Unity renders and Unity progress in the only last 8Yr!

Hello. Did i understand correctly that the High Definition Render Pipeline have much better performance on modern consoles(Amd GCN architecture) in comparison with the Unity’s default render?

Hello, what’s lumen is it?
Do you know that sun intensity IRL actually is 3,63*10^28?
So, how you will approximate that value?

Wow! HDRP is very gorgeous! Of course I can’t use this for production games, but definitely use for realtime movies. Can’t wait to try it now.

Here are my observations, after splitting the image into two: the water is different, SSAO looks better and buildings in the background are lit better.

So is this a tool for the big studios only? Or say sometime in 2019 when it matures will small Indies and/or freelancers be able achieve AAA visuals out of the box? Or does it require full-time technical artists to achieve the results shown in the pics? At the very least will you release a cookbook for HD RP for us mere mortals?

Congratulations for graphics team vision and achievements – these still images look great.

Problems.
1. It is not ready – will not be available for production for some time after that and buggy for some time after that, so in the best case, half of 2018 is gone.
2. Lightweight shadows suck – they are awfully awful bi-linear – the nicer shadows that HD brings will not be available for production as seen above, this leaves as for some time without nice shadows.
3. No proper shader documentation or examples for those who try the beta to adapt their shaders – new semantics and paradigms in shaders without any documentation – plus beta per se is buggy, it crashed several times in 3 hours.
4. No video demonstration – a subtle problem in current rendering implementation is that when there are shiny reflections in the scene, they look juggy and unstable from frame to frame – they kinda swim – no matter what anti-aliasing – temporal or not you throw in, as seen in every unity Adam demo. Is this problem fixed ?
5. All these features seem pretty heavy – is it possible to get nice shadows in Lightweight pleeeeeeease ???? Jokes aside, I believe that if the shadows in Lightweight do not see some improvement, having to use the HD (when it is ready) and paying the extra resources it (logically) demands just to have nice shadows seems as an overkill.
7. I hear about the SRP since I was using Unity 5 – which is good, but so far I have seen nothing ready for production. Last fall I watched with great interest Joachim Ante presentation regarding SRP and unity programming architectural restructuring, which was essentially what Mike Acton used to say about data oriented design years ago and now Mike Acton works for Unity – which is great. Sebastien Lagarde is a legend in computer graphics – so many highly-skilled people work for Unity now, which is super. But SRP is not here yet, after all this time and after all this effort. I do not like this delay.
7. The way rendering pipeline changes was extremely annoying so far – many changes in core shader code without any warning – scarce examples and documentation – it is gonna be a hell from now on because lightweight and HD pipelines are not yet finalized – documented, so we will undergo a long period of intense changes. I sincerely believe that some part of Unity growth was due to the “ease” you could manipulate the shaders – it was not a piece of cake but many people managed to do it with nice results, e.g. Monument Valley, Limbo, e.t.c. If as you say you ‘re gonna make it more difficult to code shaders (hopefully by offering AAA quality and speed in exchange), you should take the responsibility to produce proper documentation and examples from day -1.

Kind regards.

If you think things can magically be done with a push of a button, the world will be either totally destroyed or a better place to live. Ok jokes aside. Yeah it’s not production ready because hey “still relativelly new”. Sebastien clearly said that is not recommended for projects already in production, only projects that starts now. It will/should be ready for production by the end of the year.

In mr Lagarde’s words “I will not recommend HD for anything that is already started. I “may” recommend it for a new project that will start its pre-production today. And will ship mid-next year or later”. – it is written a few posts below.
As I understand it, you either opt for lightweight pipeline (the one with awful shadows), or the existing rendering pipeline, which will soon become legacy. What is annoying with the second option is that the more people are using legacy, the slower the transition will be towards the new pipeline.
I am very reserved in criticizing Unity – check my 1475 posts from the past 10 years – and I find very disappointing the fact that the above concerns are not addressed.

Really cool stuff guys! Since i’m creating a more dynamic game with quite customized graphcs im curious if unity is still going to leave a door open for really easily customizing its deferred renderer. I’m using the gbuffers unitys creating right now and doing all sorts of stuff with them. Is this not recommended. When are you going to remove the Deferred rendering pipeline. I got roped into using unityscript when i first started and it was subsequently destroyed. Do you think abadoning the deferred renderer in unity currently is recommended?

Is there an approximate release window for 2018.1? I’m looking forward to playing with these new features and getting used to the changes but should I expect it in the next few weeks for 2/3/4 + months?

Ooh, come on !!! Well, when already! I’m so tired of waiting! Tried SRP from the first days as it was let into people, Job System and ECS, this is the only thing I expect no less than the SRP.

I am a bit worried about this pipeline and the ability to scale down its features to run on lower-end hardware. Is it being designed particularly for computers with powerful graphics cards, with little or no support for less capable computers? Could I use the HDRP, but turn off some of the more expensive features (without programming) to get it run well on a low-range graphics card, or heck, current-gen integrated graphics?

I’d be very disappointed if Unity is only optimising this for a small subset of hardware, because the LWRP is missing a lot of features from the rendering we currently have, let alone some of the new features of the HDRP.

It’s interesting to see the new pipeline. It seems to solve problems for me like rendering fog with transparent objects. I have a game in development and I’m wondering if the HD RP will be available for production before the end of 2018. It’s not necessarily a good idea to switch a technology during the development based on availability projection. I’m aware it’s still experimental, but do you have an idea when could be the production release?

I’m also wondering if that will be compatible with technologies like Amplify Shader Editor.

The current pipeline does not allow to create procedural games with graphics as beautiful as the baked scenes. I want to suggest that you think about creating procedural games with the new pipeline. For example, being able to create light probes at runtime to take advantage of them in a better way than always being restricted to the baked scenes to achieve realism.

Thanks for sharing this. Will there be another way to create lens flares on the sun? It’s a big part of BrightRidge’s look.

“VR support is planned, but not implemented in the currently available preview.”

/slams door
/runs from room crying

“VR support is planned, but not implemented in the currently available preview” – is it going to be availible in the 2018.1 release?

This is really exciting stuff. Great to see Unity’s 2018 direction really beefing up the engine in massive ways across the board. Seeing the words, “Unified and coherent lighting is extremely hard to achieve” coming from someone as skilled as Sebastian scares the living daylights out of me though! My only plea is for lots of documentation, examples and learning resources :-)

Great work guys. I’m really happy about your mindset of making this big “breaking change” that isn’t necessarily the most user-friendly thing ever. Unity has been in dire need of something more serious and professional for a long time, and the HDRP (and ECS and Job System) is exactly that!

Surely this won’t make everyone happy but I 100% encourage you to continue in that direction

Comments are closed.