Unity Как заставить Image Effect Shaders работать с отложенным рендерингом?
У меня есть простой туманный шейдер, который отлично работает при прямом рендеринге. Тем не менее, я должен заставить его работать на отложенном рендеринге тоже. Мне сказали, что мне нужно только изменить скрипт, который вызывает шейдер. Мой туман вызывает C# скрипт:
using UnityEngine;
using UnityEngine.Rendering;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class Fog : MonoBehaviour
{
public Color fogColor;
public float minDistance;
public float maxDistance;
Shader _shader;
Material _material;
static class Uniforms
{
internal static readonly int _FogColor = Shader.PropertyToID("_FogColor");
internal static readonly int _MinMax = Shader.PropertyToID("_MinMax");
}
public enum BlendMode { Blend, Additive, Multiplicative};
public BlendMode blendMode;
void OnEnable()
{
if (_shader == null) {
_shader = Shader.Find("Hidden/Fog");
}
_material = new Material(_shader);
_material.hideFlags = HideFlags.DontSave;
}
void OnDisable()
{
DestroyImmediate(_material);
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
_material.SetColor(Uniforms._FogColor, fogColor);
_material.SetVector(Uniforms._MinMax, new Vector4(minDistance, maxDistance, 0, 0));
Graphics.Blit(source, destination, _material, (int)blendMode);
}
}
Не могли бы вы помочь мне найти, что именно я должен написать, чтобы сделать эту работу с отложенным рендерингом? Я много читал об этом и изучал все документы Unity о шейдерах, но нет примеров того, как использовать это с шейдерами с эффектами изображения.