Files
ichni_Creator_Studio/Assets/ThemeBundles/DepartureToMultiverse/Shders/PixelateFeature.cs
SoulliesOfficial 1a3d37d9b5 一些特效
2025-06-28 03:01:03 -04:00

47 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class PixelateFeature : ScriptableRendererFeature
{
[System.Serializable]
public class Settings
{
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingPostProcessing;
[Tooltip("用于像素化的材质")]
public Material pixelateMaterial = null;
}
public Settings settings = new Settings();
private PixelatePass m_PixelatePass;
// 当Feature被创建或Inspector中的值被改变时调用
public override void Create()
{
// 检查材质是否存在
if (settings.pixelateMaterial != null)
{
m_PixelatePass = new PixelatePass(settings.pixelateMaterial);
// 将Inspector中设置的事件赋值给Pass
m_PixelatePass.renderPassEvent = settings.renderPassEvent;
}
else
{
// 如果材质为空则不创建Pass避免后续报错
m_PixelatePass = null;
}
}
// 【核心修正】这个方法现在非常干净只负责将创建好的Pass入队
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
if (m_PixelatePass == null)
{
// 如果Pass没有被成功创建因为没材质就直接返回
return;
}
// 将我们的Pass添加到渲染队列中URP会在正确的时间执行它
renderer.EnqueuePass(m_PixelatePass);
}
}