Hatena::ブログ(Diary)

OLD hanecci’s blog : 旧 はねっちブログ

2013-07-19 Unreal Engine4 の物理ベースなシェーダ・ライト, BluePrint

概要

追記

  • 7/27 に SIGGRAPH 2013 の資料が公開されたので, より詳しい説明は下の URL に書きました.

物理ベースなシェーダ( Physically based shader for Unreal Engine 4 )

  • 標準シェーダが物理ベースなレンダリングに対応したシェーダに一新していました.
  • 実装には "Physically-Based Shading at Disney" SIGGRAPH2012を参考にしたらしいです.
  • シェーダの主要なパラメータは 4 種類で, ベースカラー・メタリック・ラフネス・スペキュラでした.
  • ベースカラー
    • これはディフューズライティングとスペキュラライティングの両方の結果に影響していました.
    • なのでベースカラーはディフューズアルベドの役割だけでなく, スペキュラリフレクタンスとしての役割も果たしている気がします.
  • メタリック
    • これはディフューズライティングとスペキュラライティングのリニア補間する割合だと思います.
    • 0.0 のときはディフューズライティングの結果になり, 1.0 のときはスペキュラライティングのみの結果になっていました.
  • ラフネス
    • これは従来通りのマイクロファセットによる表面の粗さを制御するものです.
  • スペキュラ
    • このパラメータについてはあるけど, 基本的には使っていないと言っていました.

  • 下に貼り付けた図は "Physically-Based Shading at Disney" の pdf に載っていた図で, 各パラメータを変更させたときの見た目の変化を表しています.
  • この図を見ると, メタリック(metallic)が 1.0 へと変化したときにはスペキュラにベースカラーが載っている状態(金や銀, 銅などの金属のスペキュラ)になっています.
  • 一方で, スペキュラ(specular)が 1.0 へと変化したときにはスペキュラにベースカラーが載らない状態(プラスティックなど非金属のスペキュラ)になっています.

f:id:hanecci:20130719194025j:image:w640

  • 最後に, 下に "Physically-Based Shading at Disney" の pdf に載っている各パラメータの意味合いを貼り付けました.
metallic  - the metallic-ness (0 = dielectric, 1 = metallic).
            This is a linear blend between two different models.
            The metallic model has no diffuse component
            and also has a tinted incident specular,
            equal to the base color.
baseColor - the surface color, usually supplied by texture maps.
roughness - surface roughness, controls both diffuse and specular response.
specular  - incident specular amount.
            This is in lieu of an explicit index-of-refraction.

複数のマテリアルレイヤー

  • 複数のシェーダの結果を混ぜるために, 複数のマテリアルレイヤーに対応していました.
  • これについても "Physically-Based Shading at Disney" に概念に関する説明がありました.

ライト

Unreal Editor の BluePrint (ブループリント)

  • Unreal Engine 4 の Unreal Editor でのビジュアルプログラミング環境で, Unreal Engine3 の Unreal Editor の Kismet に代わるものです.
  • これで記述するスクリプトの種類としては 「アクターの挙動を記述するイベントスクリプト」と, 「シーン中の物体の配置を記述するコンストラクトスクリプト」などがあります.
  • イベントスクリプト中のノードに対してブレークポイントを貼ったり, ステップ実行することも可能らしいです.

Unreal Engine4 は SVOGI (Sparse Voxel Octree Global Illumination)の機能は入らないらしい

参考文献