using System; namespace UnityEditor.ShaderGraph { [GenerationAPI] internal enum Platform { D3D11, GLCore, GLES, GLES3, Metal, Vulkan, D3D9, XboxOne, GameCoreXboxOne, GameCoreXboxSeries, Playstation, Switch, PS5, } [GenerationAPI] internal static class PlatformExtensions { public static string ToShaderString(this Platform platform) { switch (platform) { case Platform.D3D11: return "d3d11"; case Platform.GLCore: return "glcore"; case Platform.GLES: return "gles"; case Platform.GLES3: return "gles3"; case Platform.Metal: return "metal"; case Platform.Vulkan: return "vulkan"; case Platform.D3D9: return "d3d11_9x"; case Platform.XboxOne: return "xboxone"; case Platform.GameCoreXboxOne: return "xboxone"; case Platform.GameCoreXboxSeries: return "xboxseries"; case Platform.Playstation: return "playstation"; case Platform.Switch: return "switch"; case Platform.PS5: return "ps5"; default: throw new ArgumentOutOfRangeException(); } } } internal static class PragmaRenderers { // Return high end platform list for the only renderer directive (The list use by HDRP) internal static Platform[] GetHighEndPlatformArray() { return new Platform[] { Platform.D3D11, Platform.Playstation, Platform.XboxOne, Platform.GameCoreXboxSeries, Platform.Vulkan, Platform.Metal, Platform.Switch }; } // Return platform list not compatible with DXC (The list use by HDRP) internal static Platform[] GetNeverUseDXCPlatformArray() { return new Platform[] { Platform.Metal }; } } }