Files
com.misaki.hdrp-toon/Runtime/HDRP/UTS Renderer/UTSRenderPass.cs
2024-11-08 18:32:46 +09:00

70 lines
2.4 KiB
C#

using System.IO;
using UnityEngine;
using UnityEngine.Rendering.HighDefinition;
namespace Unity.Toonshader
{
#if UNITY_EDITOR
[UnityEditor.InitializeOnLoad]
#endif
public static class RegisterUTSRenderPass
{
private static readonly UTSRenderPassSetting _renderSetting;
private static readonly UTSOutlinePass _outlinePass;
private static readonly UTSHairShadowPass _hairShadowPass;
static RegisterUTSRenderPass()
{
var assetPath = Path.GetFileNameWithoutExtension(UTSRenderPassSetting.RENDERER_SETTING_ASSET_PATH);
_renderSetting = Resources.Load<UTSRenderPassSetting>(assetPath);
if (_renderSetting == null)
{
return;
}
_outlinePass = new()
{
name = "UTS Outline",
layerMask = _renderSetting.outlineSetting.layerMask
};
_hairShadowPass = new()
{
name = "UTS Hair Shadow Map",
layerMask = _renderSetting.hairShadowSetting.casterLayerMask,
targetColorBuffer = CustomPass.TargetBuffer.None,
targetDepthBuffer = CustomPass.TargetBuffer.None,
};
RegisterCustomPasses();
}
[RuntimeInitializeOnLoadMethod]
public static void RegisterCustomPasses()
{
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueAndSky, _outlinePass);
CustomPassVolume.RegisterUniqueGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueDepthAndNormal, _hairShadowPass);
_outlinePass.enabled = _renderSetting.outlineSetting.enable;
_hairShadowPass.SetEnable(_renderSetting.hairShadowSetting.enable);
}
public static void UnregisterGlobalCustomPass()
{
CustomPassVolume.UnregisterGlobalCustomPass(_outlinePass);
CustomPassVolume.UnregisterGlobalCustomPass(_hairShadowPass);
_hairShadowPass.Release();
}
public static void NotifyRendererSettingChanged()
{
_outlinePass.enabled = _renderSetting.outlineSetting.enable;
_outlinePass.layerMask = _renderSetting.outlineSetting.layerMask;
_hairShadowPass.SetEnable(_renderSetting.hairShadowSetting.enable);
_hairShadowPass.layerMask = _renderSetting.hairShadowSetting.casterLayerMask;
}
}
}