大修
This commit is contained in:
48
Assets/Shaders/ScriptablePostProcessor/Volumes/Sharpen.cs
Normal file
48
Assets/Shaders/ScriptablePostProcessor/Volumes/Sharpen.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using Echovoid.Runtime.Behavior.Rendering;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
|
||||
namespace SLSUtilities.Rendering.PostProcessing
|
||||
{
|
||||
[System.Serializable, VolumeComponentMenu("SLS/Postprocessing/Sharpen")]
|
||||
public class Sharpen : ScriptablePostProcessorVolume
|
||||
{
|
||||
// 放在所有后处理之后,对最终画面进行锐化
|
||||
public override CustomPostProcessInjectionPoint InjectionPoint => CustomPostProcessInjectionPoint.AfterPostProcess;
|
||||
// 排序靠后,确保是最后几步操作之一
|
||||
public override int OrderInInjectionPoint => 10;
|
||||
|
||||
[Header("General Settings")]
|
||||
[Tooltip("锐化强度。值越大画面越锋利。建议范围 0.5 - 2.0。过大会导致失真。")]
|
||||
public ClampedFloatParameter sharpness = new(0f, 0f, 5f);
|
||||
|
||||
[Header("Optimizations (Visual Quality)")]
|
||||
[Tooltip("对比度阈值(降噪)。\n只有当像素差异大于此值时才锐化。\n增加此值可避免平坦区域(如天空、皮肤)出现噪点。\n建议值:0.01 - 0.05。")]
|
||||
public ClampedFloatParameter threshold = new(0.01f, 0f, 0.2f);
|
||||
|
||||
[Tooltip("最大亮度钳制(防光晕)。\n限制像素亮度的最大变化幅度,防止边缘出现刺眼的白边或黑边。\n减小此值可让锐化更自然。\n建议值:0.1 - 0.3。")]
|
||||
public ClampedFloatParameter clamp = new(0.2f, 0f, 1f);
|
||||
|
||||
public override string GetShaderName() => "SLS/Postprocessing/Sharpen";
|
||||
|
||||
public override void Render(CommandBuffer cmd, ref RenderingData renderingData, RTHandle source, RTHandle destination)
|
||||
{
|
||||
if (material == null) return;
|
||||
|
||||
Vector4 paramsVec = new Vector4(
|
||||
sharpness.value,
|
||||
threshold.value,
|
||||
clamp.value,
|
||||
0 // unused
|
||||
);
|
||||
|
||||
material.SetVector(InternalShaderHelpers.ID._SharpnessParams, paramsVec);
|
||||
|
||||
Blitter.BlitCameraTexture(cmd, source, destination, material, 0);
|
||||
}
|
||||
|
||||
// 只有强度大于 0 时才激活
|
||||
public override bool IsActive() => sharpness.value > 0f;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user