Files
FORT-BO/Assets/Plugins/VolumetricLightBeam/Scripts/SRPHelper.cs
T
2026-08-29 13:34:57 +03:00

87 lines
2.7 KiB
C#

#if UNITY_2018_1_OR_NEWER
#define VLB_SRP_SUPPORT // Comment this to disable SRP support
#endif
#if VLB_SRP_SUPPORT
#if UNITY_2019_1_OR_NEWER
using AliasCurrentPipeline = UnityEngine.Rendering.RenderPipelineManager;
using AliasCameraEvents = UnityEngine.Rendering.RenderPipelineManager;
using CallbackType = System.Action<UnityEngine.Rendering.ScriptableRenderContext, UnityEngine.Camera>;
#else
using AliasCurrentPipeline = UnityEngine.Experimental.Rendering.RenderPipelineManager;
using AliasCameraEvents = UnityEngine.Experimental.Rendering.RenderPipeline;
using CallbackType = System.Action<UnityEngine.Camera>;
#endif // UNITY_2019_1_OR_NEWER
#endif // VLB_SRP_SUPPORT
namespace VLB
{
public static class SRPHelper
{
public enum RenderPipeline
{
Undefined,
BuiltIn,
URP,
LWRP,
HDRP,
}
public static RenderPipeline renderPipelineType
{
get
{
// cache the value to prevent from comparing strings (in ComputeRenderPipeline) each frame when SRPBatcher is enabled
if (m_RenderPipelineCached == RenderPipeline.Undefined)
m_RenderPipelineCached = ComputeRenderPipeline();
return m_RenderPipelineCached;
}
}
static RenderPipeline m_RenderPipelineCached = RenderPipeline.Undefined;
static RenderPipeline ComputeRenderPipeline()
{
#if VLB_SRP_SUPPORT
var rp = UnityEngine.Rendering.GraphicsSettings.defaultRenderPipeline;
if (rp)
{
var name = rp.GetType().ToString();
if (name.Contains("Universal")) return RenderPipeline.URP;
if (name.Contains("Lightweight")) return RenderPipeline.LWRP;
if (name.Contains("HD")) return RenderPipeline.HDRP;
}
#endif
return RenderPipeline.BuiltIn;
}
#if VLB_SRP_SUPPORT
public static bool IsUsingCustomRenderPipeline()
{
// TODO: optimize and use renderPipelineType
return AliasCurrentPipeline.currentPipeline != null || UnityEngine.Rendering.GraphicsSettings.defaultRenderPipeline != null;
}
public static void RegisterOnBeginCameraRendering(CallbackType cb)
{
if (IsUsingCustomRenderPipeline())
{
AliasCameraEvents.beginCameraRendering -= cb;
AliasCameraEvents.beginCameraRendering += cb;
}
}
public static void UnregisterOnBeginCameraRendering(CallbackType cb)
{
if (IsUsingCustomRenderPipeline())
{
AliasCameraEvents.beginCameraRendering -= cb;
}
}
#else
public static bool IsUsingCustomRenderPipeline() { return false; }
#endif
}
}