実際にはCutOut用など色々作る必要アリです。不透明用のシェーダに関しては特に色を求める必要はない(深度のみ)ので、SurfaceShaderを使うのは無駄ですが、面倒なのでそのままです。debugで展開した結果を貼り付けています。finalcolorモディファイアではfixed4しか出力できず、精度的に問題があるのでは、というのが展開した理由です。Oneで加算合成を行っています。不透明ピクセルより手前にある全ピクセルを描画する必要があるため、ZWriteはオフです。ライティング結果のc.rgbにα値を乗算したり、また奥行きに関する重み付け変数wを計算したりしています。詳しくはオリジナルの論文を参照してください。wに関しては(9)の式をそのまま使用しています。(Z値に関してはわざわざ距離を求めなくても良いような気がしますが...)これで半透明オブジェクトのカラーの(重み付けされた後の)合算値、α値(重み付けされた後の)の合算値、MainCameraのレンダーターゲットのα値に格納されている背景が見える割合Π(1-α)、が揃いました。あとは合成するのみです。イメージエフェクトで実装します。}}上記はSSAOイメージエフェクトの必要な部分のみコピーして作成したものです。Graphics.Blitは元のレンダリング画像(テクスチャ)とマテリアルを使用して、destinationに加工後の画像を出力します。合成用のシェーダは次のようになります。"Diffuse"}これも論文の計算式をそのまま用いているだけですので、詳しくはそっち参照です。描画順に依存しない半透明オブジェクトのレンダリングが可能になりましたが、エディタ画面で半透明オブジェクトが表示出来なかったり、半透明オブジェクトのシェーダをすべて標準のシェーダから置き換える必要があったり、不透明オブジェクトのα値をすべて1にしたり、背景(SkyBox,SolidColorなど)のα値を1にする必要があるなど、わりと面倒だったりします。2回描くのもアレだし。検索はてなブログをはじめよう!IARIKEさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。