I'm quite new to writing shaders but this one problem has made my hair grey way too quickly:
I'm trying to write a foliage shader with good looking backface lighting. The problem I'm having is the
post process AO in the project. Whenever I use anything other than the Standard lighting function, the AO behind the object with my foliage shader is rendered in front of it. See below:

Using my original code "#pragma surface surf
StandardTranslucent fullforwardshadows". AO from the rocks in the background is rendered on top of the quad.

Changing code to "
#pragma surface surf
Standard fullforwardshadows". AO stays in the back. The quad still renders its own AO properly (none in this case. Bad example)
I am even invoking the Standard lighting function, but to no avail. My shader code:
- Shader "Custom/testFoliageTwoPass" {
- Properties {
- _Color ("Color", Color) = (1,1,1,1)
- _MainTex ("Albedo (RGB)", 2D) = "white" {}
-
- _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
- }
- SubShader {
- Tags {
- "RenderType"="TransparentCutout"
- "Queue"="alphatest"
- "IgnoreProjector"="True"
- }
- LOD 200
-
- Cull Off
-
- CGPROGRAM
- #pragma surface surf StandardTranslucent fullforwardshadows
- #pragma target 3.0
-
- sampler2D _MainTex;
-
- struct Input {
- float2 uv_MainTex;
- };
-
- fixed4 _Color;
-
- #include "UnityPBSLighting.cginc"
- inline fixed4 LightingStandardTranslucent(SurfaceOutputStandard s, fixed3 viewDir, UnityGI gi)
- {
- // Original colour
- fixed4 pbr = LightingStandard(s, viewDir, gi);
-
- return pbr;
- }
-
- void LightingStandardTranslucent_GI(SurfaceOutputStandard s, UnityGIInput data, inout UnityGI gi)
- {
- LightingStandard_GI(s, data, gi);
- }
-
- void surf (Input IN, inout SurfaceOutputStandard o) {
- // Albedo comes from a texture tinted by color
- fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
- o.Albedo = c.rgb;
-
- o.Alpha = c.a;
- }
- ENDCG
- }
- }
Does anyone have any clue to why the AO from the background is rendered on top of the quad? My suspicion is that it must be a deferred rendering path, but as I said I'm pretty new so I don't really know what that means..! But that's what my trail & erroring have showed. Am I on the right track?