フォト

Google AdSense

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

« Real Shading in Unreal Engine 4の実装をやってみる その1 | トップページ | Maya 2015 LT »

2014.04.09

UE4とSubstance Designerの物理ベースシェーダの関係

Substance001

Substance002

Substance Designerはバージョン4.1から物理ベースシェーダが組み込みシェーダで提供されるようになりました(上のスクリーンショットで使ったデータはこちらから)。

Substance Designer(NEXT GEN REAL TIME PREVIEW: PHYSICALLY BASED READYのところにPBR機能紹介)
http://www.allegorithmic.com/products/substance-designer-4

Substance Designerのシェーダはインストールフォルダにありました。

(インストール先)Substance Designer\resources\view3d\shaders

の中に、物理ベースシェーダが入ってます。physically_basedとかphysically_specular_glossinessといったフォルダですね。

シェーダ自体はGLSLで書かれているのですが、ところどころのコメントを読んでいるとどうやらSIGGRAPH 2013のEpic Gamesの"Real Shading in Unreal Engine 4"を元に実装しているようです。基本的には同じコードでGLSLになってるのは確認できました。ちょっとだけ高速化とかGLSLの都合に合わせて書き換わってますが。

Real Shading in Unreal Engine 4から
http://blog.selfshadow.com/publications/s2013-shading-course/

そんなわけで、Substance Designerの組み込みの物理ベースシェーダはUE4の発表の手法を使っているようですね。ただ、SubstanceではSpecularをマップとして持ってるのでInfilrator以降のCavityで代替する手法にはなっていないようです。現在のUE4自体も実際、Cavity使ってるのかは確認してみないとわかりませんが、Substance Designerのシェーダが近いと言うことはUE4向けのアセットを作成するには良いかもしれませんね。

そうそうSubstance Indie Packは4/6までセールみたいですね。

http://store.steampowered.com/sub/39945/

« Real Shading in Unreal Engine 4の実装をやってみる その1 | トップページ | Maya 2015 LT »

Programming」カテゴリの記事

画像付き」カテゴリの記事

コメント

いつも興味深く見させていただいています。

> SubstanceではSpecularをマップとして持ってるので

私は最近Substance買ったばっかりでそんなに詳しくみていないんですが、Substance Designer 4のPBRシェーダは roughness と metallic を使った形式にみえます。(dielectricな時のspecular値が0.04, metallicでbaseColor値に近づけるタイプのやり方)

個人的にUE4のやり方に近くするときに困っているのが、IBLのやり方の違いです。
prefiltered cubemapの代わりに2Dの環境マップを使っていて、そのおかげでよくあるリアルタイムのcubemap前提の技法がそのまま使えず、その代わりに複数回サンプルすることでIBLの精度を上げるというやり方をとっています。(Preferences > Editors > Sample Table Size でサンプル数を変えられる)

たぶん時間が解決してくれると思いますが、このあたりが柔軟にやり方を変えられるようになればUEとのアセットの互換性もとれるようになるのではと期待しています。 :-)

コメントありがとうございます。

> Substance Designer 4のPBRシェーダは roughness と metallic を使った形式にみえます。

そのようですねぇ。

> prefiltered cubemapの代わりに2Dの環境マップを使っていて、そのおかげでよくあるリアルタイムのcubemap前提の技法がそのまま使えず

一方、UnityはCubemapになりそうなんですよね。

http://aras-p.info/texts/files/201403-GDC_UnityPhysicallyBasedShading.pdf

> 複数回サンプルすることでIBLの精度を上げるというやり方をとっています。(Preferences > Editors > Sample Table Size でサンプル数を変えられる)

お、サンプル数の調整ってそこでできたんですね。Uniform変数で入ってるの固定値で、変えたければコード書き換えると思ってましたが、設定ありますね。

> たぶん時間が解決してくれると思います

$19公開のおかげで情報が出やすくなって揃って来そうではありますね。

一方、Unity 5が出てくるとそちらに合わせようというのも出てきそうな感じもするので、両方対応とかになるのか気になるところではありますね、

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Real Shading in Unreal Engine 4の実装をやってみる その1 | トップページ | Maya 2015 LT »