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


スポンサーリンク

関連記事

映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウン まとめ
iPhone 3GSがますます欲しくなる動画
ラクガキの立体化 背中の作り込み・手首の移植
粘土をこねるようなスカルプトモデリング
BlenderProc:Blenderで機械学習用の画像データを生成するPythonツール
ゴジラ(2014)のメイキング
Google Earth用の建物を簡単に作れるツール Google Building Maker 公...
自前のShaderがおかしい件
オープンソースの物理ベースレンダラ『Mitsuba』をMayaで使う
無料で使える人体3DCG作成ツール
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧
Deep Fluids:流体シミュレーションをディープラーニングで近似する
Photo Bash:複数の写真を組み合わせて1枚のイラストを制作する
Maya API Reference
Adobe Photoshop CS5の新機能
SIGGRAPH ASIAのマスコット
色んな三面図があるサイト
MRenderUtil::raytrace
Transformers ”Reference & Bulid” Siggraph 2007
フリーのUV展開ツール Roadkill UV Tool
CEDEC 3日目
生物の骨格
ZBrushで仮面ライダー3号を造る ベース編
池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』
ゴジラ三昧
タマムシっぽい質感
PGGAN:段階的に解像度を上げて学習を進めるGAN
OpenMesh:オープンソースの3Dメッシュデータライブラリ
fSpy:1枚の写真からカメラパラメーターを割り出すツール
リメイク版ロボコップスーツのメイキング
Texturing & Modeling A Procedural ApproachをGoo...
オープンソースのテクスチャマッピングシステム『Ptex』
ZBrush 2018での作業環境を整える
MPC社によるゴジラ(2014)のVFXブレイクダウン
Python for Unity:UnityEditorでPythonを使えるパッケージ
トランスフォーマー :リベンジのメイキング (デジタルドメイン)
ZBrush 2018へのアップグレード
Shader.jp:リアルタイム3DCG技術をあつかうサイト
MFnDataとMFnAttribute
ZBrushでリメッシュとディティールの転送
BlenderのPython環境にPyTorchをインストールする

コメント