A physically based shader with easy setup sdPBR

Version 4.80
MMXX,MMXXI,MMXXII,MMXXIII,MMXXIV (c) SANDMAN presents!

http://karen.saiin.net/~hayase/
Twitter @NenemSdmn

Please refer to the videos for an overview of each effect's appearance and basic usage
https://www.nicovideo.jp/watch/sm37243095

The tutorials are here

Contents

前バージョンからの変更点

口上:PBRって何?リアル調MMDしか作れないの?

何をするエフェクトなのか

使い方

注意事項と推奨環境について

仕様

パラメータ解説

Tips

謝辞

使用範囲

免責事項

更新履歴

作者への連絡について

前バージョンからの変更点

Version4.70→Version4.80

Version4.60→Version4.70

Version4.50→Version4.60

Version4.40→Version4.50

Version4.30→Version4.40

Version4.20→Version4.30

Version4.10→Version4.20

Version4.00→Version4.10

Version3.90→Version4.00

Version3.80→Version3.90

Version3.70→Version3.80

Version3.60→Version3.70

Version3.50→Version3.60

Version3.40→Version3.50

Version3.30→Version3.40

Version3.20→Version3.30

Version3.10→Version3.20

Version3.00→Version3.10

Version2.90→Version3.00

Version2.80→Version2.90

Version2.70→Version2.80

Version2.60→Version2.70

Version2.50→Version2.60

Version2.40→Version2.50

Version2.30→Version2.40

Version2.20→Version2.30

Version2.10→Version2.20

Version2.00→Version2.10

Version1.90→Version2.00

Version1.80→Version1.90

Version1.70→Version1.80

Version1.60→Version1.70

Version1.50→Version1.60

Version1.40→Version1.50

Version1.30→Version1.40

Version1.20→Version1.30

口上:PBRって何?リアル調MMDしか作れないの?

(shader\マテリアル説明_基本編.fxからの抜粋です。全文はマテリアルの作成にご興味が湧いたら、そちらをどうぞ)

PBRとはPhysically-based Rendering、物理ベースレンダリングの略です。

物理現象のうちCGと関りが深くて、なおかつ現代のコンピュータで作れそうな範囲を計算で再現してみましょうというCGの作り方に対する姿勢です。RPGの元祖Dungeons&Dragonsのうち、コンピュータで作れて一人で遊べる範囲を再現したらRogueやWizardryという、さほどRoleをPlayできないGameになったように物理現象をそのまま再現!とまでは行きません。

PBRにおいては、元々Disneyによって作られて2012年のSIGGRAPHにて公開された、Disney "principled" BRDFという関数が歴史的に重要な役割を果たしています。

「この関数を使って光の当たり方から実際のピクセルの輝度を求めると良い感じに色が付きますよ、関数の入力とかはこう作って下さいね」という大事な所を公開してくだすったんですね。これ一つどころか式の一つ、項の一つ作るにも大天才博士グループが年単位で知恵を絞って考えた結果でしょうに自由に使って良いんですって!ありがたいことですね!

PBRに則って絵を作るとリアル調になるのかというと出自を考えると「そういう風になる事もある」としか言えません。リアル調になるのかアニメ調になるのかという事は、シェーダだけが決めるのではなく、使うモデルやポストプロセス、なにより全体的な構成を考える貴方の表現の影響の方がよほど大きいような気がします。実際、sdPBRもリリース間もないにも関わらず、ありがたいことに多くの作品にご利用いただいていますが、sdPBR導入前と導入後で「前まではアニメタッチだったのにいきなり劇画タッチになった」ようなMMD作家の方というのは今のところいらっしゃいません…。やはりsdPBRを使おうと使うまいと個々人の作風というのは明らかにあるのです。

このsdPBRは参考文献にあるprincipled BRDFの実装のうちの1つをほぼそのままMMEとして使えるように移植しました。BRDF自体は確かな物ですが、ライトとかポストエフェクトとかその他もろもろの部分は僕が適当に作っているものですし、そもそも誤解している部分も多々あるでしょう。幾多のバージョンアップを経て、色々と誤解をしていた点も見えてきましたので、必要に応じて訂正したり、一般には訂正されるべきだけれどもオリジナルを尊重してそのままになっていたりします。ですので、PBRと銘打ってはいるものの、物理的な正しさからは逸脱している部分も結構あります。

ともかく、PBRの雰囲気だけでも、なんとなく伝わればいいんじゃないかなと思い、導入だけは簡単になるよう作ったつもりです。本格的なシェーダの使い方に挫折してしまった方も是非トライしてみましょう。使い方は簡単な方だと思いますから、MMEのインストールさえできればきっと誰でも(ビデオカードなど環境の問題をクリアしていれば)使えると思います。光源の設定や材質の選択といった、あなたの操作、工夫、アーティストとしての感性や情熱、あなたが借りたであろう様々なアセットの製作者様たちの知恵や芸術的センスが、そのまま画面に反映される楽しさを実感してみてください。

物理ベースシェーダの楽しさが分かったなら、ray-mmd, ikPolishShader, KrShaderSystem, HgOreShaderなど先行の本格的なシェーダにも挑戦してみるといいんじゃないでしょうか?という調子で隙間に入り込むつもりだったのですが、増改築を繰り返した結果、sdPBR自体がそれなりに規模感の有るプロダクトになってしまいました。気に入ったシェーダが見つかると良いですね!

何をするエフェクトなのか

MMDのモデル・アクセサリを描画するためのシェーダです

このアーカイブに入っているエフェクトを使ってできる事の例

このアーカイブに入っているエフェクトだけでは出来ないのでお気に入りのエフェクトで補ってほしいところ

基本的になんでも揃っているのがMMDの魅力ですからあまり自前では作らないつもりでした(というかsdPBR自体あんまり作るつもりが無かったのです)が、追加の光源を配置できるようにしたあたりからシャドウマップも、SSAOも…となってしまいました。

このエフェクトの利点

このエフェクトの欠点

Usage

  1. Launch MMD with MME installed.
  2. Drag and drop sdPBR.pmx and sdPBRGBuffer.x to MMD.
  3. Drag and drop one of your favorite skyboxXX.x from the skybox folder to MMD.
  4. Drag and drop any models you like to MMD.
  5. Open MMEffect menu from top right corner of MMD, select the model whose texture you want to change, then choose and assign fx files from material folder.
  6. If you want, you can also drag and drop sdToneMapper.x and sdFXAA.x from posteffect folder.

For more detailed usage, please refer to this page.

注意事項と推奨環境について

仕様

パラメータ解説

モーフ値の有効範囲は特に断りがない限り0または正の値です

モーフの値に0を設定するとデフォルト値が自動的に設定される場合があります

特に断りが無い限り距離の単位はMMD単位です

(1MMD長さ単位は、あにまさ式初音ミクの身長が20MMD長さ単位である事から約8cmに換算されると言われていますのでsdPBRでは厳密に8cmである事を仮定して計算しています)

舞台装置のパラメータについては舞台装置マニュアルに記載してあります

sdPBR.pmx

ボーン(シャドウマップ下)

分割中心 シャドウマップのディテールが最も細かくなる地点を指定します。デフォルトではワールド座標の原点です。このボーンの位置から遠ざかるほどシャドウマップが粗くなります(4段階)

モーフ

[左上] : シェーディングについての操作
明るく 全体的な明るさを増やします。モーフの値*10倍がEV値(後述)に加算されます
暗く 全体的な明るさを減らします。モーフの値*10倍がEV値から引かれます
ライト明るく 直接光の強さを一括で制御します。モーフの値*10倍がEV値に加算されます
ライト暗く 直接光の強さを一括で制御します。モーフの値*10倍がEV値から引かれます
環境色明るく skybox由来の環境光の明るさを制御します。モーフの値*10倍がEV値に加算されます
環境色暗く skybox由来の環境光の明るさを制御します。モーフの値*10倍がEV値から引かれます
AL明るく AutoLuminous対応材質由来の光の明るさを制御します。モーフの値*10倍がEV値に加算されます
AL暗く AutoLuminous対応材質由来の光の明るさを制御します。モーフの値*10倍がEV値から引かれます
※EV値とは相対的な輝度を対数で表したものです。EV値が+1されると輝度が2倍、+2で4倍、+3で8倍…となっていきます。逆にEV値が-1されると輝度は0.5倍、-2されると0.25倍、-3で0.125倍…となります。上記の各モーフの値を1.0に設定するとEV値は±10されるので、モーフ値0の時に比べると輝度は1024倍、または1024分の1になります。
滑らかシェード 光の当たる角度による影響を軽減してどの方向から光が当たっても一定の明るさを保つようになります。0~1で指定し、1の時どの方向から光が当たってもシャドウ・SSAOなどの遮蔽を考慮しなければ同じ明るさになります。直接光によるシェーディングにのみ影響し、環境光には影響しません
[右上] : 遮蔽についての操作
影を薄める シャドウマップによる影の濃さを指定します。0を指定すると影の中心で直接光が完全に遮蔽されます(デフォルト)。1を指定すると影が表示されなくなります。0~1で指定します
平行光源高さ シャドウマップを作る際にどの高さまでのシャドウマップを作るか指定します。モーフの値*10000になります。デフォルトでは1000(モーフ値0.1相当)です。上げると高いビルなどの全体から影が作られるようにしやすいですが精度の問題が出て足元など細かい部分の影が不正確になる傾向が現れます
影マップ細かさ シャドウマップの最も細かいレベルのシャドウマップの範囲(「分割中心」ボーンを中心とする正方形1辺の長さ)を指定します。lerp(100,1,モーフ値)になり、デフォルトでは25(モーフ値0.75付近)です
影マップ広さ シャドウマップの最も粗いレベルの範囲(「分割中心」ボーンを中心とする正方形1辺の長さ)を指定します。lerp(100,10000,モーフ値)になり、デフォルトでは1000(モーフ値0.1付近)です。これはsdPBRconfig.fxsubでDIRECTIONALLIGHT_SHADOWMAP_CASCADES定数に4が指定されている場合の距離で、3以下になっている場合は最も遠くのシャドウマップ範囲は、設定した値より狭くなります
影マップゆとり 値を大きくすると、影を落とす元となる物体と、影を落とされる側の物体の間の、光源から見た場合の奥行にある程度のゆとりが無いと影が作られなくなります。シャドウマップが原因で床などに斑状のノイズが載る場合は上げてみてください。但し、上げすぎるとモデルの足元から影が離れたようになる場合があります。デフォルトでは0.1が指定されたとみなされます。
影マップぼかし 値を大きくするとシャドウマップがソフトな感じになります。追加ライトのシャドウにも効きます。sdPBRconfig.exeで平行光源シャドウマップのフィルタ直径を大きく設定すると効果が良くわかります。デフォルトでは0.25付近が指定されたとみなされます。
SSDO濃さ SSAOの濃さを指定します。デフォルトではSSAO/SSDOの場合0.1、HBAOの場合は0.25が指定されたとみなされます。sdPBRではSSAOのための方法として、SSAO・HBAO・SSDOを選択できるようになりましたが、以前のバージョンとの互換性のため、コントローラでの表記はSSDOとなっています。
SSDO半径 SSAOの広がり具合を指定します。モーフのデフォルトでは0.1が指定されたとみなされます。襟と首の間など細かい物体同士の影を重視したい時は小さくし、建物などの大きな物体同士の影を重視したい場合は大きくしてください。
SSDOぼかし SSAOは何も処理しないとザラつくのでぼかしを行います。その際の強度を指定します。デフォルトでは0.575付近が指定されたとみなされます
SSDO強化 SSAOは本来環境光のみに影響しますが、このモーフ値を上げると平行光源にも影響するようになります。追加ライトには影響しません
※画質設定を落としているとSSAOが原因で影になっている部分がザラついて見える事があります。気になる時はSSAOを薄くする・半径を縮める・ぼかしを上げるの3点を試してみてください。
[左下] : ボリュームライトの設定
散乱(濃/淡) ボリュームライトを作るための霧の濃度が変化します
散乱(明/暗) ボリュームライトの明るさが本来の明るさより変化します。不自然な状態になるので基本的には散乱(濃/淡)モーフと光源自体の明るさで調整しましょう(※Version4.00よりデフォルト値は0に変更されました)
散乱の指向性 ボリュームライトの指向性を指定します。モーフの値が0のときは方向によらず光が拡がるため霧のような雰囲気になり、大きくすると光条らしい雰囲気が出ますが、ノイズも少し目立つことがあります
ボリューム開始 モーフの値を上げるとカメラの近場のボリュームライトの効果を無くします。虹を空だけに掛ける時などに使います。モーフの値*1000MMD距離からボリュームライトの効果が現れます。
ボリューム距離 ボリュームフォグの終了位置に関係し、遠くまでボリュームライトの効果が観測されるようになります。モーフの値*1000MMD距離までの散乱を表示します。1より大きい値も指定できます。デフォルトでは0.25が指定されたとみなされます。大きな背景モデルを使う場合は1.0より大きい値を指定しても問題はありませんが、近場へのボリュームライトの精度が落ちる事があります。
虹輝度 0より大きくすると虹の掛かる方向に一致する場所に虹が掛かります。
虹開始角 カメラの向きベクトルと光源ベクトルの内積(v・l)がモーフの値*-2+1以上になると虹が掛かります。デフォルトでは0.075が指定されたとみなされ、カメラと光源の向きが大体一致している(カメラの後ろから光が差している)場合に虹が見ます
虹幅 (v・l)が虹開始角+この値*0.3の範囲に虹が出ます。デフォルトでは0.167付近です。
虹ノイズ 虹があまりクッキリしていると見た目にファンシーすぎるのでぼかします。デフォルトでは0.1が指定されたとみなします
※sdPBRconfig.fxsubにDIRECTIONALLIGHT_VOLUMEシンボルが定義されている時のみ有効です
[右下] : その他の設定
照度計 照度計を画面の上端に2本のバーで表示します。1本目のバーが平行光源の照度で、2本目のバーが環境光の照度です。天候によって直接光と環境光のバランスを変えるとよりそれらしくなります。くわしい使い方はこちら

SpotLight.pmx,RectLight.pmx

他のポストエフェクトや遮蔽の影響を考慮しない状況で、光源の彩度0の時、光軸に垂直に置かれた反射率(rgb値)1.0のランバート反射面の輝度が+1される光源の表面からの距離を光源に対する「基準距離」と以下表します。

※このドキュメントでの輝度とは特に断りが無い限りリニア色空間での輝度です。画面に表示されるガンマ補正後のsRGB色空間での信号の値とは異なるので注意してください

ボーン(エフェクト下)

狙い このボーンとセンターボーンが0.01MMD距離以上離れてる時、スポットライトの光線の出る向きがセンターボーンの位置から狙いボーンの位置への向きになります
煙移動速度 このセンターボーンの位置からこのボーンの位置の間を約1秒の間に煙が移動するようになります。ボリュームライトに煙効果のある時のみ有効です

表情モーフ

[左上] : 光の色・明るさについて
明るさ 光源の放射強度を指定します。放射強度はモーフで指定された値の2乗に比例します。1より大きい値を直接指定しても構いません。 1.0を指定すると光源の基準距離は距離10[MMD]に設定され、基準距離はモーフの値に正比例します。 光源の表面からの距離の二乗に反比例して照度(照射される物体の輝度の増分に比例します)は減衰します
色相 光源の色相を指定します。後述の彩度が0だと意味がありません
彩度 光源の彩度を指定します。
光源マーカー 光源の位置を示すマーカーをポストエフェクトで描き入れます。あくまで操作の便宜のために用意された物なので画面を構成する要素として実装された物では無い事を念頭に置いて活用してください
[右上] : 光の照らす範囲について
距離100倍 基準距離を伸ばします。1+モーフの値*100倍になります。
つまりモーフの値を1.0にすると実際には101倍になります。
光の明るさを保ったまま距離が延びるという事は距離が2倍になれば放射強度は4倍になるので
このモーフを1.0にすると101倍^2で放射強度は10201倍になります。
距離制限 スポットライトの明るさは距離の二乗に反比例して減衰しますが、
それだけでは照らされたくない所まで光が届いてしまって使い勝手が悪いこともあるでしょう
非物理的ではありますがこのモーフで指定された距離までで光を強制的に打ち切ることができます
モーフの値が1に近づくほど光の有効範囲は0に近づきます
モーフの値が0の時、基準距離の20倍が有効範囲になります
つまり輝度の増分が1/400になる距離で打ち切られることになります
0~1で指定します
ゆるく制限 0~1で指定します。
0の時、制限距離に達するまでは2乗に反比例して放射照度が減衰するだけで、制限距離を超えるといきなり0になります
1の時、制限距離に達せずとも光源の表面から離れたら2乗に反比例する分より余分に減衰し、ゆるい感じに減衰しているように見えます
コーン角度 スポットライトの照射範囲を角度方向について制限します。0.5より大きくするとシャドウマップが有効になります。四角いライトの場合はシャドウマップを作る角度にのみ影響します。実装上の理由から四角いライトのシャドウマップはあまり正確ではないのでうまく調整してください
ゆるコーン コーンの縁がゆるくなります。四角いライトには影響しません
光源半径 光源自体の大きさを指定します。使い勝手の観点から大きさが増えても画面には光源自体は表示されません
光源半径以下の範囲では距離の二乗に反比例した照度の減衰が起こらず、常に光源の表面における照度に等しくなります。四角いライトには影響しません
影を薄める 追加ライトによって作られる影を薄めます。1にすると影が見えなくなります
[左下] : ボリュームライトの設定
散乱(濃/淡) ボリュームライトを作るための霧の濃度が変化します
散乱(明/暗) ボリュームライトの明るさが本来の明るさより変化します。不自然な状態になるので基本的には散乱(濃/淡)モーフと光源自体の明るさで調整しましょう(※Version4.00よりデフォルト値は0に変更されました)
散乱の指向性 ボリュームライトの指向性を指定します。モーフの値が0のときは方向によらず光が拡がるため霧のような雰囲気になり、大きくすると光条らしい雰囲気が出ますが、ノイズも少し目立つことがあります
ボリューム距離 遠くから見た時にもボリュームライトの効果が観測されるようになります。遠くほどボリュームライトは減衰しますから。遠くからの観測を前提にする場合「距離100倍」モーフなどで放射強度を上げて下さい
煙の滑らかさ 値を大きくすると煙テクスチャが引き延ばされて滑らかな煙になります。デフォルト値は0.6です。ボリュームライトに煙効果が付いている時のみ有効です。
煙のキレ 値を大きくすると煙の密度の低い所が間引かれてメリハリのある煙になりますが、ノイズが出やすくなります。ボリュームライトに煙効果が付いている時のみ有効です。
煙の明るさ 煙が濃くなった時の明るさを指定します。ボリュームライトに煙効果が付いている時のみ有効です。
[右下] : 四角いライト固有の設定
幅・高さ 四角いライトの大きさを指定します。モーフの値に比例した長さになり、1.0の時100MMD長さ(約8m)になります。四角いライトの場合は、このモーフが片方でも0の場合は面積が0になるため、明るさモーフの値に関わらず、照明としての効果が無くなります

ポストエフェクト共通

アクセサリのパラメータ

Tr濃さを指定できます

sdSSR.xのパラメータ

X 物体の厚さをMMD距離単位で指定します。0を指定するとデフォルト値の3MMD距離単位(24cm)が指定されたと解釈します。スクリーン空間では物体の厚みが分からなくなるので一定の厚さとして近似します
Rx フレネル項の影響度を指定します。Rx=0の時、反射面に対する視線の角度を反射率に考慮しません。Rx=1に近づくにつれて視線が反射面に垂直に近くなると反射率が落ち、非金属に対する自然な反射を表現します

sdSSR2.xのパラメータ

X 物体の厚さをMMD距離単位で指定します。0を指定するとデフォルト値の3MMD距離単位(24cm)が指定されたと解釈します。スクリーン空間では物体の厚みが分からなくなるので一定の厚さとして近似します
Y 反射率を加減します。1を指定すると+100%(2倍)となり、-1を指定すると-100%(なし)になります

sdEyeAdaptationController.pmxのモーフ

順応後の明るさ 明順応/暗順応の結果がこのモーフで指定された輝度の付近になります
リニア色空間での輝度で指定し、デフォルトでは0.22付近です(sRGB 50%グレー)
順応速度 順応の急峻さを指定します。1.0を指定すると暗順応は約1秒、明順応は約0.25秒で完了します
モーフ値の逆数に従って完了までの時間が延びます
デフォルトでは0.5が指定されたとみなされます(暗順応は約2秒、明順応は約0.5秒で完了)
順応範囲 明順応・暗順応に対してそれぞれ輝度をモーフ値の10倍のEV値の変化として行います
1.0を指定すると±10EV(最大暗順応時は本来の1024倍の輝度、最大明順応時は本来の1/1024倍の輝度)
デフォルトでは0.3が指定されたとみなされ、±3EVで表示されます
(明順応最大時は本来の輝度の1/8倍、暗順応最大時は本来の輝度の8倍)
周辺優先 デフォルトでは0が指定されたとみなされ、画面の中心付近の輝度から現在の輝度を判断します
1.0を指定すると輝度の採取部位を画面の縁部分に偏らせます

sdUnsharpMask.xのパラメータ

Siシャープネスの効き具合を指定できます

sdSSGIController.pmxのパラメータ

[左上] : 明るさと色についての操作
明るさ 効果のある範囲の明るさに対する倍率を指定します。モーフ1の時で2倍になります。デフォルトでは0.5 = 1倍が指定されたとみなされます
輝度閾値 指定された輝度以上のピクセルを光源として認識し、光源からの光を拡散するようになります。リニア色空間でのRGB値の平均値で指定します(sRGB50%グレーなら0.218付近になります)
彩度+ 拡散した光の彩度を加算し、物理的にはあり得ませんが色滲みの効果を強調します
色相+ 拡散した光の色相を加算します。物理的にはあり得ませんが、色相を少し上げると青方向に偏るので清涼感が増し、下げる(0.9付近を指定すると色彩環を一周して0.1下がったのと同じ色相になります)と暖かみが増します
[右上] : 効果範囲についての操作
半径 光を拡散させる半径を指定します。カメラに近いほど半径は縮まり、遠いほど半径は大きく計算されるので、効果範囲が画面に占める割合として現れます。デフォルトでは0.25が指定されたとみなされます。
回り込み デフォルトでは面の法線と拡散元の光が入ってくる方向が一致するほど明るく照らされますが、モーフの値を上げるとその傾向を弱めて面の法線がそれほど一致してなくてもそれなりに明るく照らされます。
ぼかし 拡散する光を計算するために計算結果にぼかしを掛ける事で粒状感を減らします。デフォルトでは0.33付近が指定されたとみなします
エッジ強調 なるべく物体の輪郭をはみだして光が広がらないようにします
[右下] : その他
テストモード SSGIによって拡散している光のみを表示します

sdSSGI3Controller.pmxのパラメータ

[左上] : 明るさと色についての操作
明るさ+/- 効果のある範囲の明るさに対する倍率を指定します。明るさ+モーフを0.2上げるごとにGIによって加算される輝度は2倍になり、明るさ-モーフを0.2上げるごとに輝度は半分になります
輝度閾値 指定された輝度以上のピクセルを光源として認識し、光源からの光を拡散するようになります。リニア色空間での明度で指定します(sRGB50%グレーなら0.218付近になります)
輝度制限 x = 2^((1-モーフの値)*10)として、明度がx以上の場合は、明度xとして扱うようになります。点状にスペキュラハイライトがちらつくようなシーンでSSGIを使用すると画面全体がチラつく場合が有るので、その場合はこのモーフを上げてみてください
彩度+ 拡散した光の彩度を加算し、物理的にはあり得ませんが色滲みの効果を強調します
色相+ 拡散した光の色相を加算します。物理的にはあり得ませんが、色相を少し上げると青方向に偏るので清涼感が増し、下げる(0.9付近を指定すると色彩環を一周して0.1下がったのと同じ色相になります)と暖かみが増します
[右上] : 効果範囲についての操作
半径+/- 光を拡散させる半径を指定します。効果範囲が画面に占める割合として指定します。+/-両モーフが0の時は広がる画面上での最大直径は画面の高さと同じになります
最遠探索距離 skyboxなど非常に遠くにある物体をSSGIの計算に入れないような閾値を指定できます。モーフの値*10000[MMD距離]より2点間距離が遠い場合は、SSGIへの影響無しとみなします。0の時はデフォルト値として0.5が指定されたとみなします。
[左下] : AOについての設定
AO濃く/薄く sdSSGI3はGIの効果を強調するため、SSAOの効果も内蔵しています。そのAOの効果を濃く・薄くします。薄くモーフを1にするとSSAOとしての機能は無効になります
[右下] : その他
AO/GIテスト SSAO/SSGIの効果分のみをテスト表示します

sdDiffusion.xのパラメータ

X,Y,ZR,G,Bそれぞれの色合いを強調度を指定します
Rx拡散の方向を指定します(360度系)
Ry白飛び防止機能を入れます。100の時、概ね拡散によって増える輝度分だけ全体の輝度を抑えます。0~99の値にすると白飛び防止機能の効き具合を%で指定できます
Si拡散された光の輝度に対する倍率を指定します

sdCrossFilter.xのパラメータ

X光芒の出始めるカットオフ輝度を指定します。Yパラメータが0の時は、X+1以上の輝度になっている場所からのみ光芒が出始めます
Yカットオフのきつさを指定します。0~1で指定し、0の時光芒の輝度に対する倍率はほぼ0か1かになり、シャープな雰囲気になりますが、1の時は光芒の輝度に対する倍率は緩やかに増加し、ソフトな雰囲気になります。
Z光芒の明るさに対する倍率を指定します。0の時100%で、+1にすると+100%されます(2倍)、-1にすると-100%(0倍)となります
Rx光芒の角度を指定します(360度系)
Si光芒の表示サイズに対する倍率を指定します。1の時、35ミリイメージセンサの高さ(24ミリ)を画面の高さとして解釈し、それに対応するサイズになります

sdExpensiveLensController.pmxのパラメータ

[左上] : 歪曲収差の設定
拡大/縮小 歪曲収差を施すと元からレンダリングされていない範囲は黒く映ります。それを隠すために画面の表示内容を拡大・縮小します
樽型/糸巻収差1 中心が膨れた/凹んだ形に像を歪ませます
樽型/糸巻収差2 中心が膨れた/凹んだ形に像を歪ませます。1を樽型・2を糸巻(またはその逆)に設定すると両者を組み合わせた陣笠型収差を作れます
円周歪み横/縦± レンズとフィルムが平行になっていない事に起因する歪みをつけます
[右上] : 色収差の設定
倍率色収差± 光の波長毎に樽型/糸巻収差の度合いの変化をつけます
軸上色収差± 赤側・青側に偏った波長の色についてピントがずれてぼけた感じになります
[左下] : 周辺減光の設定
ビネット± カメラに差し込んでくる光の量は画面の中央では多く、隅の方では少なくなる傾向があり、その効果をつけます
四角い/丸い/楕円枠 カメラのレンズ周りに枠を付けます
ゆる枠 枠による光のカット具合がゆるやかになります

sdVolumetricCloudController.pmxのパラメータ

[左上] : 雲の形の設定
雲量 雲の量を調節します。大きくすると空が雲で覆いつくされていきます
雲ぼかし 大きくする雲のエッジがぼやけて周囲となじみ、小さくするとコシのある雲ができます
雲濃度 大きくすると雲が濃くなって光を遮る感じが出ます
雲粗さ 大きくすると雲の一塊が大きい入道雲や金床雲のようになり、小さくすると鱗雲や乳房雲のようになります
霧効果 大きくすると雲のない所にもある程度の水蒸気が分布し、光を散乱する効果が出てゴッドレイのような現象が起きやすくなりますが、雲の形はぼやけます
[右上] : 雲の動きの設定
速度X/Y/Z +/- 雲の流れる方向・速さを指定します
[左下] : 雲に当たるライトの設定
ライトH/S/V 雲に当たるライトの色相・彩度・輝度を指定します。これらのモーフが全て0の時、MMDの光源操作パネルでの値と同じになります。雲はskyboxによる環境光の影響も受けます
[右下] : 雲の配置の設定
高さ制限1 雲の高さの下限を指定します。0.5の時Y=0平面と同じ高さになり、数値が小さいほど雲は下の方まで敷かれます
高さ制限2 雲の高さの上限を指定します。0.5の時Y=0平面と同じ高さになり、数値が小さいほど雲は上の方まで敷かれます。雲の敷かれる範囲の上限が下限を下回ると、雲の敷かれない領域と敷かれる領域が反転します。

sdTornadoController.pmxのパラメータ

ボーン

全ての親 竜巻の位置・向きを指定します
光源位置 原点から動かすと点光源による照明になり、点光源の位置を指定できます。原点にある場合は平行光源による照明になります

モーフ

[左上] : 雲の形の設定
雲量 雲の量を調節します。大きくすると充実感の有る竜巻になります
雲ぼかし 大きくする雲のエッジがぼやけて周囲となじみ、小さくするとコシのある雲ができます
雲濃度 大きくすると雲が濃くなって光を遮る感じが出ます
[右上] : 竜巻の動きの設定
回転速度 +/- 竜巻の回転する速度を指定します。+を指定すると北半球での竜巻の回転方向に一致します
[左下] : 竜巻に当たるライトの設定
ライトH/S/V 竜巻に当たるライトの色相・彩度・輝度を指定します。これらのモーフが全て0の時、MMDの光源操作パネルでの値と同じになります。skyboxによる環境光の影響も受けます

sdGroundGlass.xのパラメータ

Xガラスに入った出た光から奥に有る物体までの想定距離を指定します。(指定された値+1)*10MMD距離が計算時の値となり、0が指定された場合、10MMD距離と見なされます。見た目上は屈折の影響の大きさに影響します
Yガラスと他の物体の前後関係についての厳しさを指定します。値を大きくすると前後関係については大らかになり、-1までの負の値を指定すると厳しめになります

sdTAA.xのパラメータ

X時間的なぼかしの量を制御します。0~1の範囲で指定し、数値が大きいほど前のフレームの影響が強くなり、時間的なぼかしが強くなります。
Y空間的なぼかしの量を制御します。0~1の範囲で指定し、数値が大きいほど3x3ボックスフィルタに近づきます。1を指定するとボックスフィルタと同値になります。

sdShiirare.xのパラメータ

X,Yぼかしの中心を指定します。0で画面の中心、(1,1)で右上隅、(-1,-1)で左下隅を表します
Z数値が大きいほど中心付近のぼかし具合を薄めます。数値を小さくすると中心までぼかすようになります
Rx捩りを加えます
Ry0の時通常の半透明、+1の時加算半透明になります。+1より大きくするとさらに明るくなります
Siぼかしの強度を指定します。数値を大きくするほど狭くキレのあるぼけ方になります

sdHashiri.xのパラメータ

Xぼかしの範囲を指定します。1で画面の縦のサイズと同じ画素数分の範囲でぼかすようになります
Y櫛状ノイズの強度を指定します。0~1で指定し、数値が大きくなるほど櫛状ノイズが弱まり、1の時、櫛状ノイズが無くなります
Zぼかしの元になる部分に被った所は効果を薄めます。0~1で指定し、1を指定すると完全に被らなくなります
Rxぼかす方向を指定します
Ry0の時通常の半透明、+1の時加算半透明になります。+1より大きくするとさらに明るくなります
Siぼかしの強度を指定します。数値を大きくするほど狭くキレのあるぼけ方になります

sdCCDSmear.xのパラメータ

Xスミアを起こす輝度の下限を指定します。RGBの平均+1がこの値以上になっている画素があるとスミアが起こります
Yスミアを起こす輝度の幅を0以上で指定します。この値を大きくするとスミアのグラデーションの幅が広くなります
Zスミアの彩度を加減します。-1~+1の範囲で指定し、-1で白黒になり、+1でデジタル8色に近い状態になります
Rxスミアの色相を加減します。値がそのまま色相環での角度になります

sdHexDoF.pmxのパラメータ

こちらをご覧ください

skybox2/DayDynamicSkyBoxDisplayのパラメータ

[左上] : skybox共通の設定
大きくする skyboxの貼られている球体のサイズを大きくします。Kuraudo.pmxのように大きな物体がめり込むときや巨大な背景を使う場合は数値を上げてください
小さくする skyboxの貼られている球体のサイズを小さくします
見えなくする skyboxの貼られている球体の透明度を指定します
[右上] : DayDynamicSkybox固有の設定
太陽小さく 大気の散乱の指向性を上げて、太陽の表示される部分を絞ります
標高 標高0~10000m(125000MMD距離)を想定した大気の状態を描くようになります。標高が高いほど大気が薄くなるため青空が澄み渡った印象になります。0を指定するとデフォルト値として2000mが指定されたとみなされます
フォグ濃さ 距離の遠い部分を空の色に近づけます。フォグはポストプロセスで付けているためパーティクル等一部のエフェクトと相性が悪いです
フォグのキレ フォグの距離に対する効き具合をハッキリさせます

skybox2/NightDynamicSkyBoxDisplayのパラメータ

ボーン

操作-満ち欠け 月の満ち欠けの量・方向を指定できます。満ち欠けに従って月自体も回転するので裏は基本的に見えません(秤動の表現は現在できません)

モーフ

[左上] : skybox共通の設定(DayDynamicSkyboxの項目に記載)
[右上] : NightDynamicSkybox固有の設定
標高 標高0~10000m(125000MMD距離)を想定した大気の状態を描くようになります。標高が高いほど大気が薄くなるため青空が澄み渡った印象になります。0を指定するとデフォルト値として2000mが指定されたとみなされます
月への距離 月は実寸では38万kmの距離にありますが、デフォルトの距離ではとても小さく見えるので、距離をモーフの値の倍率に設定して表示上のサイズを変えられます。0が指定されるとデフォルト値の1.0として扱います
フォグ濃さ 距離の遠い部分を空の色に近づけます。フォグはポストプロセスで付けているためパーティクル等一部のエフェクトと相性が悪いです
フォグのキレ フォグの距離に対する効き具合をハッキリさせます
[左下] : 各パーツの色設定
※各パーツのV(輝度)値には1以上の値も入力できます
月H/S/V 月の色を色相(H)、彩度(S)、輝度(V)で指定します
空H/S/V 月の周りのぼんやりと照らされる部分の色をHSVで指定します
星H/S/V 星の色をHSVで指定します
星絞り 星の色にコントラストを付けます
地面H/S/V 地面からの照り返しの色をHSVで指定します

skybox2/Kuraudo.pmxのパラメータ

[左上] : 雲の形についての設定
のばす(U/V) 雲を間延びした形にします。U/V各方向独立にものばせます
キレ 雲のフチをはっきりさせます
デコ 数値が高いほど濃度勾配による凹凸感を強調します
ボコ 数値が高いほど広域的に濃度勾配を計算し立体感を強調します
オート凸凹 デコ・ボコをモーフの数値分だけ上下させます(2π秒周期)
[右上] : 雲の色についての設定
フォグ 遠くの雲を透明に近づけます
透明度 全体的な透明度を増します。地面に落ちる影もこの数値の影響を受けます
色H/S/V 光の当たっている部分の色をHSV色空間で指定します。Vには1以上の値を指定できます
環境H/S/V 影になっている部分の色をHSV色空間で指定します。Vには1以上の値を指定できます

skybox3/DaySkyBoxDisplayのパラメータ

モーフ

[左上] : skybox共通の設定(skybox2/DayDynamicSkyboxの項目に記載)
[右上] : フォグと太陽の設定
フォグ濃さ 空気遠近フォグを付けます
フォグ距離 フォグを計算する間隔を指定します。値を大きくすると間隔が粗くなる代わりに遠くのフォグの計算が正確になります。デフォルトでは0.1が指定されたとみなされ、100MMD距離間隔で計算を行います
前方散乱度 値を大きくすると太陽から出る光が前方にまとまる傾向が強まり、太陽の光が広がる範囲が狭まります。デフォルトでは0.16付近が指定されたとみなされ、Cornette-Shanks散乱係数に0.8が代入されます
太陽の大きさ 太陽の位置を表示する丸のサイズを指定します。あまり自己主張がないので、より豪華にしたい場合はレンズフレア系のエフェクトを併用しましょう
[左下] : 地面の色設定
※V(輝度)値には1以上の値も入力できます
地面H/S/V 地面の色を色相(H)、彩度(S)、輝度(V)で指定します。この値が変わると地面からの照り返しの色が変わるため、特にモデルの顔色の下半分に影響を与えます。H,S,Vモーフとも0の時デフォルトの設定であるH=0,S=0,V=0.3が指定されたとみなされます
[右下] : 大気の設定
デフォルトでは各モーフについて0.5が指定されたとみなされます。各パラメータの実際の値は0.1増えると2倍になり、0.1減ると1/2倍になるという具合に指数関数的に増減し、0に近づくとデフォルト状態の1/32倍になり、1に近づくと32倍になります
レイリー高度 値を高くすると薄いオレンジ色が足されていきます。レイリー散乱を起こす粒子の高度に乗算され、濃度の計算に反映されますます
レイリー密度 値を高くすると濃いオレンジ色になります。レイリー散乱を起こす粒子の濃度に直接乗算されます
ミー高度 値を高くすると薄い白色が足されていきます。ミー散乱を起こす粒子の高度に乗算され、濃度の計算に反映されます
ミー密度 値を高くすると全体的に黒っぽくなります。ミー散乱を起こす粒子の濃度に直接乗算されます
オゾン密度 値を高くすると青紫色になります。オゾンの濃度に直接乗算されます

skybox3/CloudSkyBoxDisplayのパラメータ

モーフ

[左上] : skybox共通の設定についてはskybox2/DayDynamicSkyboxの項目に記載
[右上] : フォグと太陽の設定(DaySkyboxと同じ項目は省略)
雲定数1 雲の量を制御します。大きくすると雲が少なくなり、小さくすると雲が多くなります。デフォルトは0.5です。
雲定数2 雲の量を制御します。大きくすると薄い雲が多くなり、小さくすると濃い雲が多くなります。雲定数1より小さくすると、雲の出る範囲が反転します。デフォルトは0.83付近です。
雲の濃さ 雲の濃さを指定します。デフォルトは0.5です
雲の明るさ 雲の明るさを指定します。デフォルトは0.5です
雲滑1 雲の滑らかさを指定します。デフォルトは0.5です
雲滑2 雲の大まかな形状と細かい形状の比率を指定します。デフォルトは0.5です
雲流速X/Z± 雲の流れる方向を指定します
[左下] : 地面の色設定(DaySkyboxと同じです)
[右下] : 大気の設定(DaySkyboxと同じです)

skyboxScreen/ScreenSkyBoxDisplayのパラメータ

モーフ

[左上] : skybox共通の設定についてはskybox2/DayDynamicSkyboxの項目に記載
X/Y/Z±薄く 値を高くするとskyboxの各方向の色が表情操作パネル左下、地面H/S/Vモーフで指定された色に近づきます
[右上] : フォグと太陽の設定(skybox3と同じです)
[左下] : 地面の色設定(skybox3と同じです)
[右下] : 大気の設定(skybox3と同じです)

skybox/ground/skyboxGround.pmxのパラメータ

ボーン

エフェクト-投影中心 このボーンにカメラを置いてY=0平面を見た時の様子を床面に投影します

モーフ

[左上] : 明るさの設定
明るく/暗く 環境光による明るさを調節します
反射率下げる skyboxの床自体の反射率を下げて環境光・直接光双方の影響度を下げます
[右上] : 大きさの設定
小さくする/大きくする 床を表示するための円盤のサイズを変更します

Tips

映り込みをskyboxからの物だけにしたいのでモデルに適用されているスフィアマップを無効にしたい

sdPBRconfig.fxsubに以下の一文を入れるとスフィアマップが全て無効になります。特定の材質に対してだけスフィアマップを切りたい場合はマテリアルの方に同じように書いて下さい

#define IGNORE_SP 

アウトラインを描画するようにしたい

デフォルトではsdPBRconfig.fxsubに以下の文がありますから、それを除いて下さい

#define IGNORE_MMDOUTLINE

特定の材質だけアウトラインを描画させるようにしたい場合は、以下の文をマテリアルの方に書いて下さい

#undef IGNORE_MMDOUTLINE

絵柄が濃すぎるのでもっと軽い感じにしたい

デフォルトの設定だと絵作りが結構濃い感じがするかもしれません。エフェクトの各要素が働いているかある程度見た目で判別できる程度に調整しているためやや濃い口になってますが、これでは自分の作品のテイストに対して濃すぎると感じる場合はsdPBR.pmxの表情操作パネル右上にあるSSDO濃さ・影を薄めるモーフを調整して環境光・直接光についての影を薄めてみまょう。それから、表情操作パネル左上の滑らかシェードを上げるとキャラの顔などがアニメ的な平坦な印象に近づきます。滑らかシェードの具合を物体毎に変えたい場合はマテリアルのsmoothShadeパラメータで制御できます。

特定の物体の影を落とさなくする

前髪や建物の天井など影を作る元(ShadowCaster)にしたくない物体がある時はsdPBR_SD0~3に入っている該当する物体のチェックを外しましょう。その物体は平行光源による影を作らなくなります

sdPBR.pmxの「影を薄める」モーフを上げていないのに影が薄い気がする時は環境色が明るすぎる場合があります。「環境色暗く」モーフの数値を上げましょう。特に同梱のHDR画像を用いたskyboxは平均的な輝度が高い事があり、室内や夕方~夜間のシーンに用いる場合はそれなりに環境色を下げた方が使いやすいと思います。

sdEyeAdaptationは静止画の出力が苦手

sdEyeAdaptationは時間とともにシーンに映っている輝度へ目が順応していく様子を計算するので、前のフレームの計算結果を使います。このため1フレームだけの情報を見る「画像ファイルへ出力」を行うと意図しない明るさで画像が出力される事があります。

高解像度skybox画像の入手先について

skyboxDisplay.pmxを使ってskyboxを背景にすると、とても解像度が低く見えると思いますが、球面の内側に貼られた一部だけが画面全体に引き延ばされて表示されるからです。背景としてキレイに見える解像度となると2K出力でもテクスチャの解像度が8Kは必要になります。同梱のskybox用テクスチャはあくまで環境マップを格納するための物ですから、背景として鑑賞に堪えうる画質は二の次で配布アーカイブのコンパクト化を優先しました。高解像度のテクスチャで背景を構成したい場合は各自で高解像度版を謝辞にあるリンクからダウンロードしてくださいね!同梱のskybox用HDRIはHDRIHaven.com様よりダウンロードさせていただきました、最大16Kの高品質なHDRIをCC0で配布していらっしゃいます。とても助かりました。

平行光源のボリュームライトの影の細かさについて

平行光源のために最大4層のシャドウマップが作られますが、平行光源のボリュームライトの遮蔽を計算するためのシャドウマップはパフォーマンス向上のため、そのうち1層のみ参照します。sdPBRConfig.exeによるプリセットでは2番目に細かい(狭い)層から参照されますが、多少精度は落ちてもより広い範囲でボリュームフォグを出したい時のために以下のように明示的に何番目の層から遮蔽の計算を採るか指定できます

#define DIRECTIONALLIGHT_VOLUME_CASCADE 1 

数値には0~最大3を指定でき、大きいほど広い(粗い)層を選びます。DIRECTIONALLIGHT_SHADOWMAP_CASCADESに指定された値以上を指定しないでください。

法線マップを貼ってもデコボコしないんだけど?

モデルにUV座標が設定されていないと法線マップを貼っても効果は出ません。PMXEditorなどでモデルを編集しましょう。

knit.fxなど高さマップを使ったマテリアルを割り当てた物体の表示がおかしい

高さマップはテクスチャが元々貼られていて、なおかつテクスチャの色のみで表示色を指定してある物体でないと表示がおかしくなることがあります。同梱のマテリアルではmaterial\knit.fxが該当するので、もしもknit.fxを割り当てた物体の色がおかしい場合は、この点をご確認ください。PMD/PMXモデルの方をいじりたくない場合はbaseColorマップでbaseColorを上書きすれば解決できます。

マテリアルの貼り替えに時間がかかるんだけど

pmm内に読み込まれていないマテリアルを貼ると、MME内部ではシェーダのコンパイルが起こるため時間が掛かります。実はsdPBRのマテリアル用のシェーダはsdPBR本体そのものなので巨大なコードが生成されるので時間がかかりますが、sdPBRconfig.fxsubに以下の一文を入れるとスポットライトにデータを渡すためのコードをコンパイルしなくなるのでマテリアルの貼り替え時間を少し短縮でき、描画も少し高速化されます。

#define SPOTLIGHT_DISABLE

sdPBRConfig.exeの「スポットライトを一切使わない」にチェックを入れる事でも同様の設定がなされます。

謝辞

MMEとしての実装にあたりikeno氏のikChromatic,ikBokehを参考に作成させていただきました


CloudSkyboxの3Dノイズ作成に当たり、Sebastien Hillaire氏のTileableVolumeNoiseを利用させていただきました。


本シェーダの各要素の実装にあたり、以下の文献・作品を参考にさせていただきました

Markus Moenig氏 "Disney Principled BRDF"
https://www.shadertoy.com/view/XdyyDd

Brent Burley氏 "Physically Based Shading at Disney"
https://blog.selfshadow.com/publications/s2012-shading-course/burley/s2012_pbs_disney_brdf_notes_v3.pdf

舞力介入P氏 "full.fx"
https://ch.nicovideo.jp/beta183/blomaga/ar113351

Dave Hoskins氏 "Hash without Sine"
https://www.shadertoy.com/view/4djSRW

MARUSU氏 "水滴マテリアルV2"
https://bowlroll.net/file/208971

Joey deVries氏 (LearnOpenGL.com)
https://learnopengl.com/Advanced-Lighting/Parallax-Mapping
https://learnopengl.com/PBR/IBL/Specular-IBL

Pocol氏(Project ASURA) "中級グラフィックス入門~シャドウマッピング総まとめ~"
https://www.slideshare.net/ProjectAsura/ss-66370182

Pocol氏"超雑訳 Moving Frostbite to Physically Based Rendering 2.0"
http://project-asura.com/blog/archives/2523

Pocol氏 "Pre-Integrated SkinのLUTを作ってみた。"
http://project-asura.com/blog/archives/4650

mebiusbox2氏 "スクリーンスペース・リフレクション(SSR)"
https://qiita.com/mebiusbox2/items/e69ef326b211880d7549

romainguy氏 "Tonemap operators"
https://www.shadertoy.com/view/llXyWr

Krzysztof Narkowicz氏 "ACES Filmic Tone Mapping Curve"
https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/

内村 創氏 "HDR theory and practice" https://www.slideshare.net/nikuque/hdr-theory-and-practicce-jp

Andrew Lauritzen氏 "GPU Gems3 : Chapter 8. Summed-Area Variance Shadow Maps"
https://developer.nvidia.com/gpugems/gpugems3/part-ii-light-and-shadows/chapter-8-summed-area-variance-shadow-maps

Louis Bavoil氏 "Advanced Soft Shadow Mapping Techniques"
http://developer.download.nvidia.com/presentations/2008/GDC/GDC08_SoftShadowMapping.pdf

Tobias Ritschel氏, Thorsten Grosch氏, Hans-PeterSeidel氏 "Approx. Dynamic Global Illumination In Image Space"

Sébastien Lagarde氏, "PI or not to PI in game lighting equation"
https://seblagarde.wordpress.com/2012/01/08/pi-or-not-to-pi-in-game-lighting-equation/

Ravi Ramamoorthi氏 Pat Hanrahan氏 "An Efficient Representation for Irradiance Environment Maps"
https://graphics.stanford.edu/papers/envmap/envmap.pdf

Epic Games社様 "IES Light Profiles" "Using IES Light Profilesin Unreal Engine4"
https://docs.unrealengine.com/en-US/Engine/Rendering/LightingAndShadows/IESLightProfiles/index.html

AutoDesk社様 "AutoCAD 2011 ヘルプ"
http://docs.autodesk.com/ACD/2011/JPN/filesAUG/WS73099cc142f48755f058a10f71c104f3-3b1a.htm

Ian Morison氏 PROFESSOR MORISON'S ASTRONOMY DIGEST "DARK ADAPTATION AND LIMITING MAGNITUDE"
http://www.ianmorison.com/dark-adaptation-and-limiting-magnitude/

Peter-Pike Sloan氏 "Stupid Spherical Harmonics (SH) Tricks"
http://www.ppsloan.org/publications/StupidSH36.pdf

磯っぺ氏 "自動追尾ライト" SpotlightのIKボーン構造の参考にさせていただきました!
https://bowlroll.net/file/232338

Simon氏 Simon's Tech Blog "Pre-Integrated Skin Shading"
http://simonstechblog.blogspot.com/2015/02/pre-integrated-skin-shading.html

Eric Penner氏 "Pre-integrated Skin Shading"
SIGGRAPH 2011

David Neubelt氏, Matt Pettineo氏 "Crafting a Next-Gen Material Pipeline for The Order:1886"
https://blog.selfshadow.com/publications/s2013-shading-course/#course_content

John Hable氏 "Filmic Tonemapping Operators"
http://filmicworlds.com/blog/filmic-tonemapping-operators/

Waylon Brinck氏, Andrew Maximov氏 SIGGRAPH 2016 "Technical Art of Uncharted 4"
https://advances.realtimerendering.com/other/2016/naughty_dog/NaughtyDog_TechArt_Final.pdf

John Hable氏 "Physically Based Specular for Artists"
http://filmicworlds.com/blog/physically-based-specular-for-artists/

John Hable氏 "Cheating Physically Based Light Intensity (IRL)"
http://filmicworlds.com/blog/cheating-physically-based-light-intensity/

Henrik Wann Jensen氏ら "Night Rendering"
http://graphics.ucsd.edu/~henrik/papers/night/night.pdf

Dimas "Dimev", "Skythedragon" Leenman氏 "Atmospheric scattering explained"
https://www.shadertoy.com/view/wlBXWK

Sebastien Lagarde氏,Charles de Rousiers氏 "Moving Frostbite to Physically Based Rendering 3.0"
SIGGRAPH 2014

Sebastien Lagarde氏 "Adopting a physically based shading model"
https://seblagarde.wordpress.com/2011/08/17/hello-world/

Laurent Belcour氏, Pascal Barla氏 "A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence"
https://hal.archives-ouvertes.fr/hal-01518344/document

そぼろ氏 "MMEにおける色入力値"
https://ch.nicovideo.jp/sovoro_mmd/blomaga/ar319862

Jasmin Patry氏 "Samurai Shading in Ghost of Tsushima"
https://blog.selfshadow.com/publications/s2020-shading-course/#patry

Sebastien Hillaire氏 "Physically Based and Scalable Atomosphere in Unreal Engine"
https://blog.selfshadow.com/publications/s2020-shading-course/#hillaire

Sebastien Hillaire氏 "A Scalable and Production Ready Sky and Atmosphere Rendering Technique"
Eurographics Symposium on Rendering 2020 Volume 39 (2020), Number 4

Eric Bruneton氏 "Precomputed Atmospheric Scattering: a New Implementation"
https://ebruneton.github.io/precomputed_atmospheric_scattering/index.html

Timothy Lottes氏 "FXAA"
https://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf

Johannes Deligiannis氏 "Real-Time Rendering of Soft Shadows"
https://www.diva-portal.org/smash/get/diva2:1396997/FULLTEXT01.pdf

Abdou Bouam氏 "chromatic aberration motion blur"
https://twitter.com/abdoubouam/status/1312880920492470274

Jim Hejl氏 "TonemapFilmic_Hejl2015"
https://twitter.com/jimhejl/status/633777619998130176

Eric Heitz氏ら "Real-Time Polygonal-Light Shading with Linearly Transformed Cosines"
https://blogs.unity3d.com/jp/2016/05/26/real-time-polygonal-light-shading-with-linearly-transformed-cosines/ https://github.com/selfshadow/ltc_code

Stephen Hill氏、Eric Heitz氏 "Real-Time Area Lighting: a Journey from Research to Production"
http://advances.realtimerendering.com/s2016/s2016_ltc_rnd.pdf

竹重 雅也氏 "shikihuiku" レンダリングにおけるimportance samplingの基礎
https://shikihuiku.wordpress.com/2016/06/14/%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bimportancesampling%E3%81%AE%E5%9F%BA%E7%A4%8E/

Jiayin Cao氏 "A GRAPHICS GUY'S NOTE" Sampling Anisotropic Microfacet BRDF
https://agraphicsguy.wordpress.com/2018/07/18/sampling-anisotropic-microfacet-brdf/

Brian Karis氏 "Graphic Rants" Specular BRDF Reference
http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html

Brian Karis氏 "Real Shading in Unreal Engine 4"
https://blog.selfshadow.com/publications/s2013-shading-course/

Eric Heitz氏, Eugene d'Eon氏 "Importance Sampling Microfacet-Based BSDFs with the Distribution of Visible Normals"
https://hal.inria.fr/hal-00996995v1/

Joe Schutte氏 "Importance Sampling techniques for GGX with Smith Masking-Shadowing"
https://schuttejoe.github.io/post/ggximportancesamplingpart1/

NVidia社, Anton S. Kaplanyan氏, Stephen Hill氏, Anjul Patney氏, Aaron Lefohn氏 "Filtering Distributions of Normals for Shading Antialiasing"
https://research.nvidia.com/publication/filtering-distributions-normals-shading-antialiasing
https://blog.selfshadow.com/sandbox/specaa.html

SiliconStudio社, 川瀬正樹氏 CEDEC2019 "物理ベース?アート指向?~尤もらしさと自由度を両立するレンズフレア表現~"
https://www.siliconstudio.co.jp/rd/presentations/files/CEDEC2019/cedec2019_lensflare.pdf

ta(@HelmholtzEq)氏, "ポストエフェクトクエスト - 波動と回折とレンズと使われしシェーダ -"
https://qiita.com/AngularSpectrumMTD/items/77f71b24b21cbc3d2a52

柿本正憲氏, SIGGRAPH2015"Wave optics based glare generation techniques"
https://research.tri-ace.com/s2015.html

ケンコートキナー社, "クロスフィルターを使いこなす方法"
https://www.kenko-tokina.co.jp/special/product_type/lensfilter/cross-filter.html

Colour & Vision Research laboratory and database "Older CIE Standards"
http://www.cvrl.org/cie.htm

Ocean Optics Web Book様(Curtis Mobley氏、Emmanuel Boss氏、Collin Roesler氏ほか) "From XYZ to RGB"
https://www.oceanopticsbook.info/view/photometry-and-visibility/from-xyz-to-rgb

BeRo氏 "Color grading"
https://www.shadertoy.com/view/lsdXRn

Wikipedia "Distortion (optics)"
https://en.wikipedia.org/wiki/Distortion_(optics)

James T. Kajiya氏ほか "RENDERING FUR WITH THREE DIMENSIONAL TEXTURES"
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.127.5564

Wikipedia "ブレンドモード"
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AC%E3%83%B3%E3%83%89%E3%83%A2%E3%83%BC%E3%83%89

Björn Ottosson氏 "sRGB gamut clipping"
https://bottosson.github.io/posts/gamutclipping/

Sebastien Hillaire氏 "Physically Based Sky, Atmosphere and Cloud Rendering in Frostbite"
https://blog.selfshadow.com/publications/s2016-shading-course/

Magnus Wrenninge氏ほか "Oz: The Great and Volumetric"
https://www.researchgate.net/publication/262309690_Oz_the_great_and_volumetric

Brian Karis氏 "Physically Based Shading on Mobile"
https://www.unrealengine.com/en-US/blog/physically-based-shading-on-mobile

針金P氏"【MMD】役に立たないエフェクト集"
(scale.fx等役立つ配布動画です)
https://www.nicovideo.jp/watch/sm12560037

わたり氏"【MME紹介】連続面毎に分解エフェクト"
https://www.nicovideo.jp/watch/sm19453784

Frisvad, J. R.氏 "Building an Orthonormal Basis from a 3D Unit Vector Without Normalization."
https://doi.org/10.1080/2165347X.2012.689606

JEEA 電気技術解説講座 "照明用語の定義と照度計算"
https://jeea.or.jp/course/contents/09103/

佐々木 敏一 氏 "単位球法による直射照度の計算についての研究(2)"
https://doi.org/10.2150/jieij1917.35.172

Bruce Walter氏ら "Microfacet Models for Refraction through Rough Surfaces"
http://dx.doi.org/10.2312/EGWR/EGSR07/195-206

Marco Salvi氏 "An Excursion in Temproal Supersampling" NVidia, GDC16
https://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf

英語版Wikipedia "YCoCg"
https://en.wikipedia.org/wiki/YCoCg

Lei Yang氏, Shiqiu Liu氏, Marco Salvi氏 "A Survey of Temporal Antialiasing Techniques"
NVIDIA Corporation, EUROGRAPHICS 2020

Eugene d'Eon氏 NVIDIA Research: "An Analytic BRDF for Materials with Spherical Lambertian Scatterers"
https://developer.nvidia.com/blog/nvidia-research-an-analytic-brdf-for-materials-with-spherical-lambertian-scatterers/

針金P氏 "床面鏡像描画(AutoLuminous対応版)"
https://harigane.at.webry.info/201010/article_1.html
https://www.nicovideo.jp/watch/sm15642005

Hang Dou氏ほか "Adaptive Depth Bias for Shadow Maps, Journal of Computer Graphics Techniques (JCGT), vol. 3, no. 4, 146-162, 2014"
http://jcgt.org/published/0003/04/08/

テンパカ氏 "2ボーンエフェクト"
https://seiga.nicovideo.jp/seiga/im4200203

hikita12312氏 下町のナポレオン "被写界深度表現の実装"
https://hikita12312.hatenablog.com/entry/2017/09/02/200531

川瀬正樹氏 "続・レンダリスト養成講座"
https://www.slideshare.net/siliconstudio/cedec-2009imagire-day-2009

Björn Ottosson氏 "A perceptual color space for image processing"
https://bottosson.github.io/posts/oklab/

川瀬正樹氏 "Making Your Bokeh Fascinating","Subtle Anamorphic Lens Effects"
https://research.tri-ace.com/s2015.html

Colin Barr?-Brisebois氏 "Hexagonal Bokeh Blur Revisited"
https://colinbarrebrisebois.com/2017/04/18/hexagonal-bokeh-blur-revisited/

Olli Niemitalo氏 "Circularly symmetric convolution and lens blur"
http://yehar.com/blog/?p=1495

Kleber Garcia氏 "Circular Dof"
https://www.ea.com/frostbite/news/circular-separable-convolution-depth-of-field
https://www.shadertoy.com/view/Xd2BWc
https://github.com/kecho/CircularDofFilterGenerator

Dan Koschier氏, Jan Bender氏, Barbara Solenthaler氏, Matthias Teschner氏
"Smoothed Particle Hydrodynamics Techniques for the Physics Based Simulation of Fluids and Solids", Eurographics Tutorial, 2019
https://interactivecomputergraphics.github.io/SPH-Tutorial/

Miles Macklin氏、Matthias Muller氏
"Position Based Fluids"
http://dx.doi.org/10.1145/2461912.2461984

Markus Ihmsen氏、Nadir Akinci氏、Gizem Akinci氏、Matthias Teschner氏
"Unified Spray, Foam and Bubbles for Particle-Based Fluids"
http://dx.doi.org/10.1007/s00371-012-0697-9

inigo quilez氏 "Noise - Gradient - 3D - Deriv"
https://www.shadertoy.com/view/4dffRH

Robert Bridson氏, Jim Hourihan氏, Marcus Nordenstam氏 "Curl-Noise for Procedural Fluid Flow"
https://www.cs.ubc.ca/~rbridson/docs/bridson-siggraph2007-curlnoise.pdf

Stephen McAuley氏 "Rendering the World of Far Cry 4" 2015 GDC
https://www.youtube.com/watch?v=rD6KcxcCl_8

Angelo Pesce氏
"Misunderstanding Multiscattering"
http://c0de517e.blogspot.com/2019/08/misunderstanding-multiscattering.html
"Misunderstanding Multilayering (Diffuse-Specular Energy Conservation)"
http://c0de517e.blogspot.com/2019/08/misunderstanding-multilayering-diffuse.html

Doekele G. Stavenga氏
"Thin film and multilayer optics cause structural colors of many insects and birds"
https://doi.org/10.1016/j.matpr.2014.09.007

Doekele G. Stavenga氏, Bodo D. Wilts氏, Hein L. Leertouwer氏, Takahiko Hariyama氏
"Polarized iridescence of the multilayered elytra of the Japanese jewel beetle, Chrysochroa fulgidissima"
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3049007/

Pascal Freyer氏, Bodo D. Wilts氏, Doekele G. Stavenga氏
"Reflections on iridescent neck and breast feathers of the peacock, Pavo cristatus"
https://royalsocietypublishing.org/doi/10.1098/rsfs.2018.0043

英語版Wikipedia "Transfer-matrix method (optics)"
https://en.wikipedia.org/wiki/Transfer-matrix_method_(optics)

Philip Laven氏 "The optics of a water drop"
http://www.philiplaven.com/index1.html

Scott Prahl氏 "miepython"
https://github.com/scottprahl/miepython

Henrik Wann Jensen氏, Stephen R. Marschner氏, Marc Levoy氏, Pat Hanrahan氏 "A Practical Model for Subsurface Light Transport"
https://graphics.stanford.edu/papers/bssrdf/

Per H Christensen氏, Brent Burley氏 "Approximate Reflectance Profiles for Efficient Subsurface Scattering"
https://dl.acm.org/doi/10.1145/2775280.2792555

Evgenii Golubev氏 "Efficient Screen-Space Subsurface Scattering Using Burley's Normalized Diffusion in Real-Time"
https://advances.realtimerendering.com/s2018/index.htm

Colas Schretter氏, Leif Kobbelt氏, Paul-Olivier Dehaye氏 "Golden Ratio Sequences For Low-Discrepancy Sampling"
https://www.researchgate.net/publication/254311299_Golden_Ratio_Sequences_for_Low-Discrepancy_Sampling

Martin Roberts氏 "The Unreasonable Effectiveness of Quasirandom Sequences"
http://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/

A.H. Rabbani氏、 S. Khiat氏 "Fast Eulerian Fluid Simulation In Games Using Poisson Filters (SCA 2020 Showcase)"
https://www.youtube.com/watch?v=_3eyPUyqluc

Niels Jørgen Christensen氏、Henrik Wann Jensen氏 "A Practical Guide to Global Illumination using Photon Maps"
https://dl.acm.org/doi/10.1145/1103900.1103920

Mark Finch氏、Cyan Worlds氏 "GPU Gems Chapter 1. Effective Water Simulation from Physical Models"
https://developer.nvidia.com/gpugems/gpugems/part-i-natural-effects/chapter-1-effective-water-simulation-physical-models

TinyTexel氏 "ACEScg"
https://www.shadertoy.com/view/WltSRB

英語版Wikipedia "ColorChecker"
https://en.wikipedia.org/wiki/ColorChecker

Olivier Therrien氏ほか "Screen Space Indirect Lighting with Visibility Bitmask"
DOI 10.1007/s00371-022-02703-y

cornusammonis氏 "Path Tracer Denoise 1SPP "
https://www.shadertoy.com/view/ldKBRV

Christoph Schied氏ほか "Spatiotemporal Variance-Guided Filtering: Real-Time Reconstruction for Path-Traced Global Illumination"
https://research.nvidia.com/publication/2017-07_spatiotemporal-variance-guided-filtering-real-time-reconstruction-path-traced

↑の日本語解説記事
@shocker-0x15氏 "SVGF (Spatiotemporal Variance-Guided Filtering)"
https://qiita.com/shocker-0x15/items/f928898730498c7a52c7


本マニュアルの口絵には以下の版権元様の二次創作ガイドラインに則って利用させていただいたコンテンツが含まれています。

本マニュアルの口絵の作成に以下の方々の作品をお借りしました。


また、同梱のテクスチャ素材および口絵に、下記サイトにてCC0またはパブリックドメインとして公開されている画像を利用させていただきました

HDRI Haven様 https://hdrihaven.com

Texture Haven様 https://texturehaven.com

CC0 Textures様 https://cc0textures.com

3DTextures様 https://3DTextures.me

NASA Scientific Visualization Studio様 https://svs.gsfc.nasa.gov/


作例動画に多くの方々から様々な作品をお借りしました。ニコニコ動画のコンテンツツリーに記載してあります

開発中はナリのくま様やMARUSU様のマテリアルをお借りしておりました

Plover様、reno様、mototo様、粉ふきスティック様、アガちん様のモーションをテストに良く使わせていただきました

(`・ω・)様の天龍ちゃんをはじめとするモデルが無かったらMMDを始めていなかったと思います

Twitterでお世話になっている皆様、ニコニコ動画で作品を視聴してくださっている皆様

誠にありがとうございました!


使用範囲

  1. 非営利目的でも商用利用でも特に制限はありません。自由に使って下さい。勿論、併用している他のアプリケーションやアセットの使用範囲は遵守してください。
    動画作品などにご使用いただいた際は当方のハンドル名や使ったエフェクト名などをクレジット表記する事ができますが義務ではありません
    ニコニコ動画のコンテンツツリーを利用してこの作品を親作品として登録する事ができますが義務ではありません
    義務ではありませんが、どれもエフェクトをご利用くださった貴方が出来ることです
    ニコニコ動画のコンテンツツリーに記載していただける場合は、sdPBRのいずれかのバージョンの配布動画・静画を親作品登録して下されば幸いです

  2. 改変後のプロダクトの配布について
    この作品には、舞力介入P氏作 full.fxからの引用箇所があります
    それ以外にApache Licence2.0, MIT Licence, CC0, CC-BY-NC4.0等に基づいて公開されている、いわゆるオープンソースソフトウェアからの引用箇所があります。引用元及び各ライセンスについてはソースコード内に付記してあります。
    それらを踏まえた上で引用・改変し、配布者の責任で配布して構いません

  3. ソースコードの引用について
    sdPBRのソースコードからの引用は自由に行って構いません。コード自体も無保証・無サポートです。ライセンスはまだ定めていませんが、いわゆる「ライセンス汚染」の恐れの無いライセンスを付ける予定です。sdPBR自体も数多のオープンソースソウトウェアからの引用により成り立っていますが、GPLやCC-BY-SAライセンスに則ったソフトウェアからの引用はありません。sdPBRがソースコードの引用を行っているソフトウェアについては(抜けはあるかもしれませんが)ソースコード内に極力適宜出典を付してあります。義務ではありませんが、なるべく引用元についての情報もコード内に残していただけると、貴方がそのコードを公開した際に、読んだ人の助けになると思います。

  4. このアーカイブそのものの転載・再配布は基本的にご遠慮下さい
    流通しているフリーソフトウェアに悪意のあるインストーラを括り付けて再配布する事例が有ったので、これは禁止させて下さい
    もしも、このソフトウェアを欲しいという方がいらっしゃったら配布元のURLを伝えて下さい
    不特定多数への配布ではなくあくまで個人間での配布と言える範囲であれば配布者の責任で行っていただければ問題ありません
    (講習会の参加者全員に配布するといった場合は「配布時点で配布する対象の個人を明確に把握出来る」場合は個人間の配布の範囲と捉えて結構です)
    特に、この説明書の口絵には、様々な一次創作者様側のコンテンツ二次利用ガイドラインに則って「同人創作的な活動の一環です」として慎ましく利用させていただいているコンテンツも含まれております。

  5. 組み込みは歓迎します
    自作(または規約を満たしている他作の改変)のエフェクト・モデル等MMD関連ファイルの配布にあたって、当方のエフェクトとの共存が望ましいと判断していただける場合は「4.転載・再配布禁止」の例外として、貴方の配布するエフェクト・モデルに同梱して再配布しても構いません
    個別に許可を取る必要はありませんので貴方の責任で自由に行ってください

免責事項

フリーウェアという事で、このパッケージを使用した、あるいは使用できなかった結果、バージョンアップに伴って生じた結果について、作者は何の責任を負う義務も無いものとします。また、作者は、不具合に関する報告や、要望について対応する義務を持ちません。なるべく不具合への対処などはしますが、必ずするというわけでもなく、提出された要望に関しても、「興味を引くような内容なら実装するかもしれない」という程度ですので、悪しからず

更新履歴

Version 4.80

Version 4.70

Version 4.60

Version 4.50

Version 4.40

Version 4.30

Version 4.20

Version 4.10

Version 4.00

Version 3.90

Version 3.80

Version 3.70

Version 3.60

Version 3.50

Version 3.40

Version 3.30

Version 3.20

Version 3.10

Version 3.00

Version 2.90

Version 2.80

Version 2.70

Version 2.60

Version 2.50

Version 2.40

Version 2.30

Version 2.20

Version 2.10

Version 2.00

Version 1.90

Version 1.80

Version 1.70

Version 1.60

Version 1.50

Version 1.40

Version 1.30

Version 1.20

Version 1.10

Version 1.00 初公開

作者への連絡について

Twitterやってます。IDはこのドキュメントの上の方に書いてあります