//////////////////////////////////////////////////////////////////////////////
// MME SSAO Filter for MikuMikuMoving
// 2012/01/19
//////////////////////////////////////////////////////////////////////////////

MikuMikuMoving用のSSAOエフェクトです。
mqdlさんの作成されたSSAOエフェクトを改変させていただきました。

製作：mqdlさん
改変：Mogg

■mqdlさん作SSAO.fxより転載
==============================================================================
MMDでSSAO(Screen Space Ambient Occlusion)効果が得られます。
スクリーン上の情報を完全な3D空間ではなく、2.5D上で
計算し、擬似的なアンビエントオクルージョン効果が得られます。

ピクセルシェーダ3.0必須。
比較的大きなビデオメモリを使用するので、VRAM512MB以上の
ビデオカードを推奨します。


■使い方
==============================================================================
SSAO.fxmをMMMで読み込んで下さい。


■パラメータに関して(mqdlさん作SSAO.fxから転載)
==============================================================================
density:
　SSAO効果を最終的に決定つける濃度です。
　あまり濃くし過ぎるとおかしな映像になる事があります。
　（そもそもSSAOは擬似的なアンビエントオクルージョン計算ですので
　　不正な結果が目立つ事になります）

strength:
falloff:
　ピクセルから飛ばした光線が隠蔽空間であるか否かの
　判定に使用します。
　シーンに最適な効果が得られる様に適宜調整して下さい。

rad:
　計算に使用する光線を飛ばす半径です。

blur:
　SSAO効果のぼかし量です。
　小さくし過ぎるとノイズが発生します。
　大きくしすぎるとぼけた画面になるのでご注意下さい。

dotRange:
　ブラーをかける際に、エッジ近辺であるかの
　判定する為の値です。
　0〜1.0までの値を指定して下さい。
　
optimize:
　MMDで使用する上での最適化率です。
　0〜1.0までの値を指定して下さい
　SSAOは元データから2.5D空間上の隠蔽状態を計算しますが
　このままMMDに適用すると、キャラクターに暗い影が入ります。
　よってこのエフェクトではMMD向けな計算をしています。
　欠点として白いピクセルは暗くならないので、必要に
　応じて値を変更して下さい。
　値を0.0にするとMMD最適化はされずに通常のSSAO計算結果が得られます。
　
その他:
　Version 0.0.0.4でテクスチャのアルファ値を反映するように
　しています。
　半透明オブジェクトの扱いはシーンによって適正が変わるので
　半透明オブジェクトを一切描画しない方が良いシーンでは
　NormalMap.fx、DepthMap.fx に記載のコメントを参照して
　設定を変更してください。


■謝辞
==============================================================================
SSAOエフェクトを作成されたmqdlさん、本当にありがとうございます。

■免責
==============================================================================
当ファイルを使用して生じたいかなる損害に対しても、当方は一切責任を負いません。
自己責任でご使用ください。
