- Home /
Standard Shader Still Visible through Stencil Shader
Hello! I am currently working on some portals for VR in unity. I decided to use the stencil buffer rather than cameras so that I wouldn't have to manually render each eye separately. Anyways, I have the somewhat gotten the effect to work but I ran into an issue where the current room (standard shader) is still visible through the portal shown in the image below. I tried changing the render queue with no luck. nay suggestions on how to fix it? Thanks!
The portal's shader:
 Shader "Custom/PortalShader"
 {
     Properties
     {
         _StencilBuffer("Stencil Buffer", Int) = 1
     }
 
         SubShader
     {
         Tags { "RenderType" = "Opaque" "Queue" = "Geometry"}
         
         ZWrite off
         ColorMask 0
         cull back
 
         Stencil
         {
             Ref [_StencilBuffer]
             Comp always
             Pass replace
         }
 
         Pass
         {
 
         }
     }
 }
The next other end of the Portal's Shader:
 Shader "Custom/HiddenSceneShader"
 {
     Properties
     {
         _Color("Color", Color) = (1,1,1,1)
         _MainTex("Albedo (RGB)", 2D) = "white" {}
         _Glossiness("Smoothness", Range(0,1)) = 0.5
         _Metallic("Metallic", Range(0,1)) = 0.0
         _StencilBuffer("Stencil Buffer", Int) = 1
     }
         SubShader
         {
             Tags { "RenderType" = "Opaque" "Queue" = "AlphaTest+51"}
 
             Stencil
             {
                 Ref [_StencilBuffer]
                 Comp Equal
             }
 
             CGPROGRAM
             // Physically based Standard lighting model, and enable shadows on all light types
             #pragma surface surf Standard fullforwardshadows
 
             // Use shader model 3.0 target, to get nicer looking lighting
             #pragma target 3.0
 
             sampler2D _MainTex;
 
             half _Glossiness;
             half _Metallic;
             fixed4 _Color;
 
             float4 _Plane;
 
             struct Input
             {
                 float2 uv_MainTex;
                 float3 worldPos;
                 float facing : VFACE;
             };
 
             void surf(Input IN, inout SurfaceOutputStandard o)
             {
                 float distance = dot(IN.worldPos, _Plane.xyz);
                 distance = distance + _Plane.w;
                 //discard surface above plane
                 clip(-distance);
 
                 float facing = IN.facing * 0.5 + 0.5;
 
                 // Albedo comes from a texture tinted by color
                 fixed4 col = tex2D(_MainTex, IN.uv_MainTex);
                 col *= _Color;
                 o.Albedo = col.rgb;
                 // Metallic and smoothness come from slider variables
                 o.Metallic = _Metallic;
                 o.Smoothness = _Glossiness;
                 o.Alpha = col.a;
             }
             ENDCG
         }
             FallBack "Diffuse"
 }

Your answer
 
 
             Follow this Question
Related Questions
Shader queue tags not working...? -3 Answers
Showing hidden units - using stencil buffer with standard shader and deferred rendering 0 Answers
Blender's Set Solid in Unity 1 Answer
HDRP DepthMask Possible? 0 Answers
Shadow Support in Custom Shader 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                