Files
taptap2024_GJ_chidouren/Assets/Scripts/System/RenderFeature/GaussBlurFeature.cs
2024-10-16 00:03:41 +08:00

65 lines
2.8 KiB
C#

using System;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Rendering.Universal;
using UnityEngine.Serialization;
namespace Framework.RenderFeature
{
public class GaussBlurFeature : ScriptableRendererFeature
{
[Serializable]
public class Setting
{
public bool enable = true;
public Material grayMaterial = null;
public Color grayColor = Color.white;
public bool isGray = true;
public bool isBlur = true;
public Material blurMaterial = null;
[Range (0, 1)] public float blurProgress = 1;
[Range (0, 1)] public float grayScale = 1;
[Range (0 , 1)] public float colorChannel_R = 1;
[Range (0 , 1)] public float colorChannel_G = 1;
[Range (0 , 1)] public float colorChannel_B = 1;
[Range (1, 10)] public int blurPasses = 1;
// [TitleGroup("模糊设置"), Title("分辨率精度(越小越高)"), Range(1, 4)] public int downsample = 1;
}
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingTransparents;
public GaussBlurFeature.Setting setting;
public string cmdName = "GaussBlurFeature";
private GaussBlurPass m_ScriptablePass;
public override void Create ()
{
// return;
this.m_ScriptablePass = new GaussBlurPass ().Init (this.setting, cmdName);
this.m_ScriptablePass.renderPassEvent = this.renderPassEvent;
}
public override void AddRenderPasses (ScriptableRenderer renderer, ref RenderingData renderingData)
{
this.m_ScriptablePass.ConfigureInput (ScriptableRenderPassInput.Color);
renderer.EnqueuePass (this.m_ScriptablePass);
// var supportsCameraStackingType = renderer.SupportsCameraStackingType ( CameraRenderType.Base);
// if (supportsCameraStackingType)
// {
// renderer.EnqueuePass (this.m_ScriptablePass);
// }
}
public override void SetupRenderPasses (ScriptableRenderer renderer, in RenderingData renderingData)
{
// 只对游戏摄像机应用后处理(还有预览摄像机等)
if (renderingData.cameraData.cameraType == CameraType.Game)
{
// 设置向pass输入color (m_RenderPass父类)
m_ScriptablePass.ConfigureInput (ScriptableRenderPassInput.Color);
// 设置RT为相机的color
m_ScriptablePass.SetTarget (renderer.cameraColorTargetHandle);
}
}
}
}