// SPDX-FileCopyrightText: 2023 Unity Technologies and the glTFast authors
// SPDX-License-Identifier: Apache-2.0
using UnityEngine;
#if USING_URP || USING_HDRP
using UnityEngine.Rendering;
#endif
#if USING_URP
using UnityEngine.Rendering.Universal;
#endif
#if USING_HDRP
using UnityEngine.Rendering.HighDefinition;
#endif
namespace GLTFast
{
///
/// Render Pipeline
///
public enum RenderPipeline
{
///
/// Unknown Render Pipeline
///
Unknown,
///
/// Built-in Render Pipeline
/// Unity's built-in render pipeline
///
BuiltIn,
///
/// Universal Render Pipeline
///
Universal,
///
/// High Definition Render Pipeline
///
HighDefinition
}
///
/// Render Pipeline Utilities
///
public static class RenderPipelineUtils
{
static RenderPipeline s_RenderPipeline = RenderPipeline.Unknown;
///
/// Currently used render pipeline
///
public static RenderPipeline RenderPipeline
{
get
{
if (s_RenderPipeline == RenderPipeline.Unknown)
{
s_RenderPipeline = DetectRenderPipeline();
}
return s_RenderPipeline;
}
}
static RenderPipeline DetectRenderPipeline()
{
#if USING_URP || USING_HDRP
// ReSharper disable once Unity.PerformanceCriticalCodeNullComparison
var rpAsset = QualitySettings.renderPipeline ? QualitySettings.renderPipeline : GraphicsSettings.defaultRenderPipeline;
if (rpAsset != null) {
#if USING_URP
if (rpAsset is UniversalRenderPipelineAsset) {
return RenderPipeline.Universal;
}
#endif
#if USING_HDRP
if (rpAsset is HDRenderPipelineAsset) {
return RenderPipeline.HighDefinition;
}
#endif
throw new System.Exception("glTFast: Unknown Render Pipeline");
}
#endif
return RenderPipeline.BuiltIn;
}
}
}