Search Unity

Resolved Depth masking in deffered problem

Discussion in 'Shaders' started by PROE_, May 24, 2020.

  1. PROE_

    PROE_

    Joined:
    Feb 20, 2016
    Posts:
    32
    Solved, edit below.

    Hi, I'm creating a building system for my game and I started thinking about placing windows and doors on the walls. And here is the issue, I tried depth masking but it doesn't work for 2500< render queues in Deferred so I lose the shadows and I can't let that happen.

    I get this with render queues above 2500:
    upload_2020-5-24_21-8-29.png
    If the render queue is below or equal to 2500, everything renders normally as before applying any shaders.

    And the shader code is:
    Code (CSharp):
    1. SubShader{
    2.         // Render the mask after regular geometry, but before masked geometry and
    3.         // transparent things.
    4.  
    5.         Tags {"Queue" = "Geometry+1" }
    6.  
    7.         // Don't draw in the RGBA channels; just the depth buffer
    8.  
    9.         ColorMask 0
    10.         ZWrite On
    11.  
    12.         // Do nothing specific in the pass:
    13.  
    14.         Pass {}
    15.     }
    What are the alternatives to this, possibly in shaders? The last option I have is CSG subtract but this would screw my UV and vertices caching etc.
    Thanks in advance!
    Nick

    EDITED:
    Well, now I learned a few things about shading and now I know why this approach wouldn't work. If anyone ever had the same problem - in built-in pipeline probably the easiest solution to this is to use clip() in the surface shader and add #pragma addshadow :)
     
    Last edited: Dec 31, 2020