GraphicsSettings.currentRenderPipeline API를 이용하면 현재 사용중인 렌더링 파이프라인 에셋을 가져올 수 있습니다. 하지만 빌트인 렌더러를 사용하고 있는 경우, URP나 HDRP 패키지를 임포트 하지 않아 스크립트에서 직접적으로 접근할 수는 없습니다.
using UnityEngine.Rendering.Universal;
if (GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset) {
}
이런 코드는 UnityEngine.Rendering.Universal 네임스페이스가 정의되지 않아 컴파일에러를 일으킬 가능성이 있습니다. 대신에 GetType()을 이용해 타입 이름을 가져와 확인하는 방식으로 대체하면 됩니다.
public enum ERenderPipeline
{
BuiltIn,
URP = 1,
LWRP = 1,
HDRP = 2,
Custom = 3,
}
public static ERenderPipeline GetPipelineType()
{
if (GraphicsSettings.currentRenderPipeline != null)
{
var assetType = GraphicsSettings.currentRenderPipeline.GetType();
if (assetType.Name == "UniversalRenderPipelineAsset")
{
return ERenderPipeline.URP;
}
if (assetType.Name == "HighDefinitionRenderPipelineAsset")
{
return ERenderPipeline.HDRP;
}
if (assetType.Name == "LightWeightRenderPipelineAsset")
{
return ERenderPipeline.LWRP;
}
return ERenderPipeline.Custom;
}
else
{
return ERenderPipeline.BuiltIn;
}
}
빌트인 렌더러는 렌더링 파이프라인 에셋을 사용하지 않으므로 비어 있다면 빌트인 렌더러입니다.
스크립터블 렌더 파이프라인을 수정해서 쓰고있지 않다면 Universal, HighDefinition, LightWeight 중의 하나일 것입니다. 다른 이름을 갖고 있다면 커스텀 파이프라인입니다.
더 다양한 방법 - HDRP/LWRP detection from Editor script - Unity Forum