投稿者 tel | 2015年4月12日

Unityのレンズフレアでデプステストする

デフォルトのレンズフレアのシェーダだとデプステストが常にパスされるので、太陽をレンズフレアで表現しようと思ったときに半分だけ隠れてるような見え方ができない。 builtinのInternal-Flare.shaderシェーダをAsseets/Resourcesフォルダに入れると、レンズフレアでそのシェーダが使われるようになるのでデプステストを有効にできる。
http://docs.unity3d.com/Manual/class-Flare.html

ビルトインのシェーダは以下の場所からダウンロードできる。
http://japan.unity3d.com/unity/download/archive

デフォルトのシェーダのレンズフレア

flare_ss

デプステストを入れたレンズフレア

flare_custom_ss

ディレクトリに追加して編集したあとUnityを再起動しないとレンズフレアにシェーダが反映されないみたい。

追記

Unity5.4ではシェーダの設定方法が変更されている。GraphicsSettingsのLens FlareをCustom shaderにして設定する。

graphicssettings_ss


Responses

  1. レンズフレアをオブジェクトで隠す方法を探していてこちらを拝見しました。

    プロジェクトのAssets内にResourcesという名前のフォルダを作成して、builtinのInternal-Flare.shaderシェーダファイルをコピーしました。再起動もしたのですが、反映されませんでした。
    「ディレクトリに追加して編集したあとUnityを再起動」と書かれていますが、どのような編集をされたのでしょうか?

  2. もともとのフレアのシェーダでは ZTest Always となっており、デプステストが無効になっています。プロジェクトに追加した Internal-Flare.shader で上記の ZTest Always の部分を削除するとデプステストが有効になるのでうまくいくと思います。
    http://docs.unity3d.com/ja/current/Manual/SL-CullAndDepth.html

  3. ご返答ありがとうございます!
    Resourcesフォルダに置いたInternal-Flare.shaderのZTestを編集してみたのですが、変化ありませんでした。

    Telさんの使用したレンズフレアはどのように設置されたものですか?
    こちらは、レンズフレアにImport package でLight Flaresをインポートし、シーン上のポイントライトにLens Flareコンポーネントをアタッチして、フレアに「Sun」を使用しています。

  4. サンプルプロジェクトを作成してみました。
    https://github.com/sapphire-al2o3/FlareTest/
    こちらでうまく表示されるでしょうか。

  5. わざわざありがとうございます!
    頂いたものを試したところうまく表示できました。ずっとバージョン4.0で作業していたのですが、今回のものを4.6で試したところうまくゆきました。

    今回のものも4.0ではやはりだめでしたが、古いバージョンだとデプステストの働きが何かちがうのでしょうか。
    ご教示ありがとうございました。

  6. うまくいってよかったです。
    レンズフレアはエディタで見るといろいろ挙動が怪しいので実際にビルドして確認することをおすすめしますl


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。