Update custom pass to global custom pass

This commit is contained in:
Misaki
2024-10-23 20:15:07 +09:00
parent e441bb7911
commit d0554a73bb
64 changed files with 949 additions and 46128 deletions

View File

@@ -0,0 +1,70 @@
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.RegisterGlobalCustomPass(CustomPassInjectionPoint.AfterOpaqueAndSky, _outlinePass);
CustomPassVolume.RegisterGlobalCustomPass(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;
}
}
}