69 lines
2.2 KiB
C#
69 lines
2.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
namespace Misaki.HdrpToon
|
|
{
|
|
#if UNITY_EDITOR
|
|
[UnityEditor.InitializeOnLoad]
|
|
#endif
|
|
public static class UTSRenderPassRegistrar
|
|
{
|
|
private static UTSRenderPassSettings _renderSetting;
|
|
|
|
private static UTSPass _utsPass;
|
|
private static UTSOutlinePass _outlinePass;
|
|
|
|
static UTSRenderPassRegistrar() => RegisterCustomPasses();
|
|
|
|
[RuntimeInitializeOnLoadMethod]
|
|
public static void RegisterCustomPasses()
|
|
{
|
|
_renderSetting = UTSRenderPassSettings.GetOrCreateSettings();
|
|
if (_renderSetting == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_utsPass = new UTSPass()
|
|
{
|
|
name = "UTS Pass",
|
|
targetColorBuffer = CustomPass.TargetBuffer.None,
|
|
targetDepthBuffer = CustomPass.TargetBuffer.None,
|
|
};
|
|
|
|
_outlinePass = new()
|
|
{
|
|
name = "UTS Outline",
|
|
targetColorBuffer = CustomPass.TargetBuffer.Camera,
|
|
targetDepthBuffer = CustomPass.TargetBuffer.Camera,
|
|
};
|
|
|
|
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforeRendering, _utsPass);
|
|
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.BeforePostProcess, _outlinePass);
|
|
|
|
NotifyRendererSettingChanged();
|
|
}
|
|
|
|
public static void UnregisterGlobalCustomPass()
|
|
{
|
|
CustomPassVolume.UnregisterGlobalCustomPass(_utsPass);
|
|
CustomPassVolume.UnregisterGlobalCustomPass(_outlinePass);
|
|
}
|
|
|
|
public static void NotifyRendererSettingChanged()
|
|
{
|
|
if (_utsPass == null || _outlinePass == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_utsPass.EnableHairShadow = _renderSetting.hairShadowSetting.enable;
|
|
_utsPass.HairShadowQuality = _renderSetting.hairShadowSetting.quality;
|
|
|
|
_utsPass.EnableHairBlending = _renderSetting.hairBlendingSetting.enable;
|
|
_utsPass.HairBlendingQuality = _renderSetting.hairBlendingSetting.quality;
|
|
|
|
_outlinePass.enabled = _renderSetting.outlineSetting.enable;
|
|
}
|
|
}
|
|
} |