Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by fruktprins · Oct 28, 2021 at 01:01 PM · shaderpost processingsurface shaderdepth of fieldambient occlusion

Post processing AO renders on top of material like it's transparent

Hi!

I have written a rim lighting shader that renders meshes twice, first pass offset a little offset look like rim lighting. It looks like this:

alt text

The issue I'm experiencing is that the unity post processing stack AO is rendering on top of the rim lighting pass. Here is how that look (with an expanded rim lighting width to better show the issue:

alt text

Im also using the HBAO unity asset (https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/horizon-based-ambient-occlusion-54780) and it has the same issue. The pass also has issues with the post processing DOF effect. It seems to be treating the rim lighting pass as transparency.

Here is the complete shader code.

 Shader "Rim Lighting"  {
     Properties {
         _Color ("Main Color", Color) = (.5,.5,.5,1)
         _MainTex ("Base (RGB)", 2D) = "white" { }
     }
     
     CGINCLUDE
     #include "UnityCG.cginc"
     
     
     struct appdata {
         float4 vertex : POSITION;
         float3 normal : NORMAL;
         float4 texcoord : TEXCOORD0; // texture coordinates
     };
 
     struct v2f {
         float4 pos : SV_POSITION;
         UNITY_FOG_COORDS(0)
         fixed4 color : COLOR;
         float4 screenPos : TEXCOORD0;//
     };
     
     uniform float _Outline, _XOffset, _YOffset, _OutlineZ, _Brightness;
     sampler2D _MainTex;
     
     v2f vert(appdata v) {
         v2f o;
         o.pos = UnityObjectToClipPos(v.vertex);
         o.screenPos = ComputeScreenPos(o.pos);//
 
         float3 norm = normalize(mul ((float3x3)UNITY_MATRIX_IT_MV, v.vertex));
         float2 offset = TransformViewToProjection(norm.xy) + (float2(_XOffset, _YOffset) * 20);
         float4 tex = tex2Dlod(_MainTex, float4(v.texcoord.xy, 0, 0));
         
         #ifdef UNITY_Z_0_FAR_FROM_CLIPSPACE //to handle recent standard asset package on older version of unity (before 5.5)
             o.pos.xy += offset * UNITY_Z_0_FAR_FROM_CLIPSPACE(o.pos.z) * _Outline;
         #else
             o.pos.xy += offset * o.pos.z * _Outline;
         #endif
         o.pos.z -= (o.screenPos.z * _OutlineZ);
 
 
         o.color = tex * _Brightness * 1.1 * (unity_AmbientGround + unity_AmbientSky + unity_AmbientEquator);
         
 
         UNITY_TRANSFER_FOG(o,o.pos);
         return o;
     }
     ENDCG
 
     SubShader {
         Tags { "RenderType"="Opaque" "Queue" = "Geometry" }
         UsePass "Base/FORWARD"
         Pass {
             Name "OUTLINE"
             Tags { "LightMode" = "Always" }
 
             ZWrite On
             ColorMask RGB
             Blend One Zero
 
             CGPROGRAM
             #pragma vertex vert
             #pragma fragment frag
             #pragma multi_compile_fog
             fixed4 frag(v2f i) : SV_Target
             {
                 UNITY_APPLY_FOG(i.fogCoord, i.color);
                 return i.color;
             }
             ENDCG
         }
     }
     
     Fallback "Diffuse"
 }

and the base shader code:

 Shader "Base" {
     Properties {
         _MainTex ("Texture", 2D) = "white" {}
         _Color("Main Color", Color) = (.5,.5,.5,1)
     }
     SubShader {
         Tags { "RenderType"="Opaque" "Queue"="Geometry"}
 
         CGPROGRAM
         
         #pragma surface surf Standard fullforwardshadows
         #pragma target 3.0
 
         sampler2D _MainTex;
         fixed4 _Color;
 
         struct Input {
             float2 uv_MainTex;
         };
 
         void surf (Input i, inout SurfaceOutputStandard  o) {
             half4 tex = tex2D (_MainTex, i.uv_MainTex);
             float3 color = tex.rgb * _Color; 
             o.Albedo = color;
         }
 
         ENDCG
     }
     Fallback "Legacy Shaders/Diffuse"
 }

I also have some other custom shaders that have the same issue, the AO is rendered on top of it.

shader1.jpg (33.0 kB)
shader2.jpg (40.8 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

195 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to get pure black shadow on gradient shader 0 Answers

Basic surface shader question ... 0 Answers

Post effect shader similar to "Shannara Chronicles" intro's edge smoke effect 0 Answers

Converting Fixed Function Shader to Surface Shader 2 Answers

Referencing the current pixel's world coordinates in the SURF block of a shader 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges