55 lines
2.0 KiB
C#
55 lines
2.0 KiB
C#
using UnityEngine;
|
||
using UnityEngine.Rendering;
|
||
using UnityEngine.Rendering.Universal;
|
||
//必须得用到这个namespace?
|
||
//namespace UnityEngine.Experiemntal.Rendering.Universal
|
||
//{
|
||
public class MPRendererFeature : ScriptableRendererFeature
|
||
{
|
||
public enum Target
|
||
{
|
||
Color,
|
||
Texture
|
||
}
|
||
[System.Serializable]
|
||
public class HLSettings
|
||
{
|
||
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
|
||
public Material mMat;
|
||
public Target destination = Target.Color;
|
||
//public int blitMaterialPassIndex = -1;
|
||
public string textureId = "_ScreenTexture";
|
||
//public float contrast = 0.5f;
|
||
}
|
||
|
||
public HLSettings settings = new HLSettings();
|
||
RenderTargetHandle m_renderTargetHandle;
|
||
|
||
MP_RenderPass m_ScriptablePass;
|
||
|
||
public override void Create()
|
||
{
|
||
//int passIndex = settings.mMat != null ? settings.mMat.passCount - 1 : 1;
|
||
//settings.blitMaterialPassIndex = Mathf.Clamp(settings.blitMaterialPassIndex, -1, passIndex);
|
||
m_ScriptablePass = new MP_RenderPass("HLPostEffectRender", settings.renderPassEvent, settings.mMat);//, settings.contrast);
|
||
m_renderTargetHandle.Init(settings.textureId);
|
||
}
|
||
|
||
// Here you can inject one or multiple render passes in the renderer.
|
||
// This method is called when setting up the renderer once per-camera.
|
||
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
|
||
{
|
||
var src = renderer.cameraColorTarget;
|
||
var dest = (settings.destination == Target.Color) ? RenderTargetHandle.CameraTarget : m_renderTargetHandle;
|
||
if (settings.mMat == null)//丢失材质
|
||
{
|
||
return;
|
||
}
|
||
m_ScriptablePass.Setup(src,dest);
|
||
renderer.EnqueuePass(m_ScriptablePass);
|
||
}
|
||
}
|
||
//}
|
||
|
||
|