導入
参考:
Unity で PBR なライティング環境をセットアップしてみよう | SEGA TECH Blog
The Beginner’s Guide to Physically Based Rendering in Unity | Treehouse Blog
概要
参考:
アーティストの為の PBR 再入門 | Unity Learning Materials [公式]
アーティストの為の PBR 再入門 – SlideShare
スタンダードシェーダー
レンダリングモード (Rendering Mode)
- 不透明 (Opaque):全体が不透明なマテリアルを描画する
- カットアウト (Cutout):切り抜き/アルファ値が閾値より大きい部分のみを切り抜いて描画する
- 透明 (Transparent):アルファ値に応じてマテリアルを半透明に描画する
- フェード (Fade):アルファ値に応じて描画を背景に溶け込ませる
メインマップ (Main Maps)
- アルベド (Albedo)
- アルファカットオフ (Alpha Cutoff)
- メタリック (Metallic)
- スムースネス (Smoothness)
- ソース (Source)
- メタリックアルファ (Metallic Alpha/デフォルト)
- アルベドアルファ (Albedo Alpha)
- ソース (Source)
- 法線マップ (Normal Map)
- ハイトマップ (Height Map)
- オクルージョン (Occlusion)
- 詳細マスク (Detail Mask)
- 放出 (Emission)
- 色 (Color)
- グローバルイルミネーション (Global Illumination)
- リアルタイム (Realtime)
- ベイク (Baked/デフォルト)
- なし (None)
- タイリング (Tiling)
- オフセット (Offset)
セカンダリーマップ (Secondary Maps)
- 詳細アルベド (Detail Albedo)
- 法線マップ (Normal Map)
- タイリング (Tiling)
- オフセット (Offset)
- UV セット (UV Set)
UV0
/UV1
(デフォルト:UV0
)
フォワードレンダリングオプション (Forward Rendering Options)
- スペキュラーハイライト (Specular Highlights/デフォルト:
有効
) - リフレクション (Reflections/デフォルト:
有効
)
詳細オプション (Advanced Options)
- レンダーキュー (Render Queue)
- GPU インスタンシングを有効にする (Enable GPU Instancing/デフォルト:
無効
) - 両面グローバルイルミネーション (Double Sided Global Illumination/デフォルト:
無効
)
ドキュメント:
スタンダードシェーダー | Unity マニュアル [公式]
マテリアルパラメーター | Unity マニュアル [公式]
セカンダリマップ/詳細マップ & 詳細マスク | Unity マニュアル [公式]
マテリアル
ドキュメント:
マテリアルの作成と使用 | Unity マニュアル [公式]
マテリアルバリデーター
ドキュメント:
物理ベースのレンダリングマテリアルバリデーター | Unity マニュアル [公式]
テクスチャ
参考:
物理ベースレンダリング (PBR) のテクスチャは実際どのようなテクスチャなのか | tkmkrocket_tech
アルベド/透明度 (Albedo / Transparency)
ドキュメント:
アルベドカラーと透明度 (Transparency / Albedo) | Unity マニュアル [公式]
メタリック (Metallic)
メタリックテクスチャ
メタリック用のテクスチャは R チャンネルにメタリック値を格納し、アルファチャンネルにスムーズネスを格納する。
- R:メタリック
- G / B:不使用
- A:スムーズネス
ドキュメント:
メタリックパラメータ (Metallic) | Unity マニュアル [公式]
参考:
PBR マテリアルのメタリックとラフネスのパック処理 | Shade3D チュートリアル
スムーズネス (Smoothness)
ドキュメント:
参考:
テクスチャを用いた Smoothness 設定方法 | 灰藍堂
フレネル反射
スタンダードシェーダーではフレネル反射の強度を直接調節するパラメータは存在しない。スムースネスに応じて、自動的に調節される。
ドキュメント:
参考:
法線マップ/ノーマルマップ (Normal Map)
参考:
法線マップ (Normal Map / Bump Mapping) | Unity マニュアル [公式]
ハイトマップ (Height Map / Parallax Mapping)
明度が高さに相当するグレースケールのテクスチャにより視差マッピングを適用する。
参考:
オクルージョンマップ (Occlusion Map)
オクルージョンをベイクしたテクスチャによりアンビエントオクルージョン (Ambient Occulusion / AO) を上乗せする。
参考:
オクルージョン マップ | Unity マニュアル [公式]
スペキュラーモード (Specular Setup)
「メタリック」 (Metallic) パラメーターの代わりに「スペキュラー」 (Specular) パラメーターを使用してマテリアルを設定する。スペキュラーパラメーターはスペキュラー反射の強度と色をコントロールする。スペキュラー反射を直接的に指定したい場合にメタリックモード (Metallic Setup) の代わりに使用される。
「スムースネス」 (Smoothness) パラメーターはスペキュラー効果の明瞭さをコントロールする。スムースネスが低いとスペキュラー反射は拡散してぼやけて見え、スムースネスが高いと鮮明ではっきりとしたスペキュラー反射が現れる。
参考:
Specular パラメーター | Unity マニュアル [公式]
Metallic と Specular のワークフロー | Unity 2018.4 マニュアル [公式]
シェーダーを作成する
参考:
PBR シェーダを Unity で実装する | LIGHT11
PBR (物理ベースレンダリング) をやってみる – Qiita
仕組み
参考:
物理ベースレンダリングを柔らかく説明してみる 4 – Qiita
照度/露出を調整する
参考:
Unity で、PBR なライティング環境をセットアップしてみよう | SEGA TECH Blog
GGX
公式サイト:
GGX を Unity 5.3 で導入しました | Unity Blog [公式]
参考:
Replacing Blinn-Phong by GGX | Graphics Development & Unity3D
Using GGX instead of Blinn-Phong – Unity Forum
パフォーマンス
参考:
モバイルゲーム開発における PBR の適用性 – Qiita
Unity Learn
Creating Physically Based Materials | Unity Learn [Official]
Shadergraph: PBR Material | Unity Learn [Official]
チュートリアル
Photorealistic Materials in Unity!
PBR Workflow in HD Render Pipeline
High Quality PBR Materials in HDRP
Alloy
動画:
公式サイト:
Alloy – Physically Based Shading for Unity | RUST LLC [Official]
リポジトリ:
Josh015/Alloy: Alloy Physical Shader Framework for Unity – GitHub
ドキュメント:
Documentation – Alloy | RUST LLC
フォーラム:
Alloy – Physical Shader Framework | Unity Forum
参考:
Alloy 4.3.0 for Unity 2017.3 is live on the Asset Store and Github (Deleted User) – Unity Forum