revival/game/Assets/Scripts/Rendering/DrawFullscreenFeature.cs

48 lines
1.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering.Universal;
public enum BufferType
{
CameraColor,
Custom
}
public class DrawFullscreenFeature : ScriptableRendererFeature
{
[Serializable]
public class Settings
{
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingOpaques;
public Material blitMaterial = null;
public int blitMaterialPassIndex = -1;
public BufferType sourceType = BufferType.CameraColor;
public BufferType destinationType = BufferType.CameraColor;
public string sourceTextureId = "_SourceTexture";
public string destinationTextureId = "_DestinationTexture";
}
[SerializeField] private Settings _settings = new Settings();
private DrawFullscreenPass _blitPass;
public override void Create()
{
_blitPass = new DrawFullscreenPass(name);
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
if (_settings.blitMaterial == null)
{
Debug.LogWarning($"missing blit material. {GetType().Name} blit pass will not execute. check for missing references.");
return;
}
_blitPass.renderPassEvent = _settings.renderPassEvent;
_blitPass.Settings = _settings;
renderer.EnqueuePass(_blitPass);
}
}