Skip to content

特定条件のとき、Unity GameWindow でDepth描画がおかしくなる #393

@InPlanaria

Description

@InPlanaria

いつもシェーダー使わせていただき大変ありがとうございます。
Unity GameWindow , RenderTextureにおいて発生する(Sceneウィンドウ, VRChatアップロード後には発生しない)不自然な挙動を見つけましたので報告させていただきます。

  • Unity 2022.3.22f1
  • VRCSDK -Worlds 3.10.1
  • liltoon 2.3.2

発生シーン
https://www.dropbox.com/scl/fi/ibbmv6y5gmds32xn2m5mq/liltoon_depth_issue.unitypackage?rlkey=ksy7z5ct4xo3u80k5ed3h16vw&st=dhns4lwg&dl=0

※_CameraDepthTexture深度によって白黒を描画する自作Fog風シェーダーを配置して撮影

通常の見た目(Scene Window 一番大きい四角が問題のメッシュ)
Image

発生時の見た目(Game Window 一番大きい四角が透けて見える)
Image

ある特定条件において、liltoonのDepth描画がされなくなり、他のDepth参照シェーダーの描画がliltoonのあるメッシュを無視した状態で描画されます。
自作のFog風シェーダー、Particles/Standard UnlitのSoftParticleへの干渉を確認しています。

確認した発生条件

  • Unity GameWindow , RenderTextureにおいて発生。Sceneウィンドウ, VRChatアップロード後には発生しない。
  • 半透明のマテリアルを持つメッシュ(確認済: Standard, liltoon Transparent)が描画範囲内に存在し、そのすべてがDirectional Lightで照らされていないときに発生する。
  • 描画範囲内半透明メッシュが0個であるか、DirectionalLightに照らされた半透明のマテリアルが1個描画範囲内にあれば発生しない。
  • DirectionalLightに照らされた半透明メッシュ1個と、照らされていない半透明メッシュ1個を完全に重ねて配置したときは発生しない。
  • DirectionalLightに照らされた半透明メッシュAと、照らされていない半透明メッシュBを少しずらして重ねて配置した場合、BがAより手前にあるときに発生し、奥にあるときは発生しない。
  • VRChat ClientSimでの挙動:半透明メッシュが描画範囲にあるか否かの基準は通常プレイヤーCameraだが、RenderTexture描画用カメラがある場合はそのカメラ内の半透明メッシュ有無で決まる(カメラの優先度設定による?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions