Physically Based Rendering

会社員になってからすっかり画像認識の人になってしまったけど、最近のCGレンダリング事情にキャッチアップしておきたい。
リアルタイムレンダリング系の書籍を買っておきながらしばらく積んでいた↓

リアルタイムレンダリング 第4版 (Real Time Rendering Fourth Edition 日本語版)ゲーム制作者になるための3Dグラフィックス技術 改訂3版

画像認識もCGも、リアルタイム化を目指す際の考え方は共通点が多いと最近感じる。
極力ユースケースを絞って重い処理はなるべく事前計算へ追いやり、キャッシュをフル活用してリッチな処理を近似する。実行時の自由度と処理負荷のバランスを調整していく。。
応答のリアルタイム性を追求するとどんなジャンルでも考え方は似通ってくるのかな。

レンダラやGPUアーキテクチャの話もあるけど、基本はやっぱりBRDF(反射)なので、とりあえずミクロなスケールでShaderの話からキャッチアップして行こう。

今月のCG WORLDはPBR (Physically Based Rendering)特集だったね。

CGWORLD (シージーワールド) 2020年 09月号 [雑誌]


スポンサーリンク


BRDFの近年までの歴史を概観するのにTeppei Kuritaさんが公開している資料がとても分かりやすい↓

Cook-Torrance

この分野は長らく遠ざかっていたので、オイラの実装知識はCook-Torranceぐらいまでで止まっている↓

学生の頃、C++の勉強も兼ねてCook-TorranceをMayaのShaderプラグインとして実装したことがある↓

Cook Torrance

https://github.com/NegativeMind/Maya-Plugins

当時、Mayaの標準レンダラに搭載されていたShaderはBlinnやPhongぐらいだった。(mentalrayにはCook-Torranceも搭載されていた)

幾何減衰項G、フレネル項F、マイクロファセット分布項Dで構成されたパラメーターが、オイラにとっては模型の塗装みたいで直感的だった。プログラミングを習得する題材としてちょうどよかったな。

PBR Shader

現在多くのDCCツールでデファクトスタンダードとなっている通称PBR Shaderと呼ばれる反射モデルは、2012年にDisneyが発表したDisney Principled BRDFがベース。


スポンサーリンク

物理モデルBRDFでは、物体の質感を以下の要素で定義する↓

  • Albedo (反射比率)
  • Metalness (金属か誘導体か)
  • Roughness (表面の粗さ)
  • IOR (屈折率)

Disney Principled BRDFは物理モデルをベースに、アーティストが直感的に質感を調整できるようパラメーターが設計されている。それまでDCCツールで主流だったLambertやPhongといった推論モデルに対して、物理モデルを裏付けとしたShaderだからPBR(Physically Based Rendering) Shaderと呼ばれるわけですね。

追記:ご指摘いただいたので補足。Lambertを推論モデルに括るのは雑でした。
ここで言いたかったのはLambert反射の定義ではなく、当時のDCCツール(というかMaya)に搭載されていたLambertマテリアルの話。
DCCツール、というか多くのCGプログラムでLambertは実装が省略されていて、エネルギー保存が成立していなかった。定義に従ってLambert Shaderを書き直してみたことがある↓



2015年、Disney Principled BRDFをさらに発展させて、BRDF(反射)だけでなくBTDF(屈折・透過)も合わせたBSDFモデルが発表され、現在に至る。
BSDF: (Bidirectional scattering distribution function)
BSDF: Bidirectional Scattering Distribution Function (双方向散乱分布関数) = BRDF: Bidirectional Reflectance Distribution Functi...


BlenderデフォルトマテリアルのPrincipled BSDFもDisney Principled BRDFがベース↓

左:英語、右:日本語



各パラメータの解説はこちらの記事が詳しい↓
http://bluebirdofoz.hatenablog.com/entry/2019/10/05/091604

ここ数年はSIGGRAPHでも毎年Physically Based Shading in Theory and Practiceのコースが設けられている。

SIGGRAPH University – Introduction to "Physically Based Shading in Theory and Practice"

今年のコースのスライド↓
https://blog.selfshadow.com/publications/s2020-shading-course/

結局、スライドだけでなくセッション動画も公開されましたね↓

Some Thoughts on the Fresnel Term


スポンサーリンク

関連記事

1枚の画像からマテリアルを作成できる無料ツール『Materialize』
この連休でZBrushの スキルアップを…
ゴジラの造形
ZBrushトレーニング
AR (Augmented Reality)とDR (Diminished Reality)
グローバルイルミネーションに手を出す前に、やり残したことがあるんじゃない?
無料で使える人体3DCG作成ツール
2012 昨日のクローズアップ現代を見た
adskShaderSDK
リアルタイム レイトレーシングAPI『DirectX Raytracing (DXR)』
『ローグ・ワン/スター・ウォーズ・ストーリー』"あのキャラクター"のメイキング
Mayaのシェーディングノードの区分
ZBrushでアヴァン・ガメラを作ってみる おでこ(?)のバランス調整
顔モデリングのチュートリアル
単純に遊びに行くのはだめなのか?
CEDEC 3日目
映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウン まとめ
人間の顔をそっくりそのままCGで復元する『Digital Emily Project』
HD画質の無駄遣い その2
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作ったのか
ZBrushCoreのTransposeとGizmo 3D
ZBrushで仮面ライダー3号を造る ベース編
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
MFnMeshクラスのsplit関数
Blenderでよく使うaddon
プログラムによる景観の自動生成
ZBrushの作業環境を見直す
UnityのGlobal Illumination
3Dボリュームデータ処理ライブラリ『OpenVDB』
ZBrush用トポロジー転送プラグイン『ZWrap Plugin for ZBrush』
Mayaのポリゴン分割ツールの進化
この本読むよ
iPhone欲しいなぁ
ZBrush 4R7
BlenderでPhotogrammetryできるアドオン
Pix2Pix:CGANによる画像変換
PythonでMayaのShapeノードプラグインを作る
ジュラシック・パークの続編『ジュラシック・ワールド』
WebGL開発に関する情報が充実してきている
3D復元技術の情報リンク集
世界一下品なクマと世界一紳士なクマ
映画から想像するVR・AR時代のGUIデザイン

コメント