Проблема с слоями
Скрипт отвечающий за прорисовку облаков (ассет TrueClouds) не хочет работать за неотрисованной шейдером частью платформы.
Те объекты, что мы хотим показать задаем в WorldBlockingMask, то есть объекты на которых есть слои, что перечислены в WorldBlockingMask не будут перекрываться облаками.
Я заметил, что WorldBlockingMask используется один раз.
private void ApplyBlits(RenderTexture source, RenderTexture destination)
{
Graphics.Blit(source, destination);
_tempCamera.clearFlags = CameraClearFlags.Color;
_tempCamera.backgroundColor = Color.white;
_tempCamera.rect = new Rect(Vector2.zero, Vector2.one);
_worldDepth.DiscardContents();
_tempCamera.targetTexture = _worldDepth;
_tempCamera.cullingMask = WorldBlockingMask;
_tempCamera.RenderWithShader(depthShader, "RenderType");
... //Остальной код
}
Шейдер что обрезает мою платформу использует discard для этого
Pass
{
Cull Front
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f
{
float4 pos : SV_POSITION;
float4 worldPos : TEXCOORD0;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.worldPos = mul(unity_ObjectToWorld, v.vertex);
return o;
}
float _Val;
fixed4 frag(v2f i) : SV_Target
{
if(i.worldPos.z < _Val) discard;
return half4(1,1,1,1);
}
ENDCG
}
Скажите пожалуйста, как отрисовать облака за неотрисованной частью платформы.
Если нужны еще дополнения, напишите пожалуйста в комментариях

