using System;
using System.Linq;
namespace UnityEngine.Rendering.Universal
{
public enum ShaderPathID
{
Lit,
SimpleLit,
Unlit,
TerrainLit,
ParticlesLit,
ParticlesSimpleLit,
ParticlesUnlit,
BakedLit,
SpeedTree7,
SpeedTree7Billboard,
SpeedTree8,
// If you add a value here, also add it to ShaderID in Editor/ShaderUtils.cs
}
public static class ShaderUtils
{
static readonly string[] s_ShaderPaths =
{
"Universal Render Pipeline/Lit",
"Universal Render Pipeline/Simple Lit",
"Universal Render Pipeline/Unlit",
"Universal Render Pipeline/Terrain/Lit",
"Universal Render Pipeline/Particles/Lit",
"Universal Render Pipeline/Particles/Simple Lit",
"Universal Render Pipeline/Particles/Unlit",
"Universal Render Pipeline/Baked Lit",
"Universal Render Pipeline/Nature/SpeedTree7",
"Universal Render Pipeline/Nature/SpeedTree7 Billboard",
"Universal Render Pipeline/Nature/SpeedTree8",
};
public static string GetShaderPath(ShaderPathID id)
{
int index = (int)id;
int arrayLength = s_ShaderPaths.Length;
if (arrayLength > 0 && index >= 0 && index < arrayLength)
return s_ShaderPaths[index];
Debug.LogError("Trying to access universal shader path out of bounds: (" + id + ": " + index + ")");
return "";
}
public static ShaderPathID GetEnumFromPath(string path)
{
var index = Array.FindIndex(s_ShaderPaths, m => m == path);
return (ShaderPathID)index;
}
public static bool IsLWShader(Shader shader)
{
return s_ShaderPaths.Contains(shader.name);
}
#if UNITY_EDITOR
static readonly string[] s_ShaderGUIDs =
{
"933532a4fcc9baf4fa0491de14d08ed7",
"8d2bb70cbf9db8d4da26e15b26e74248",
"650dd9526735d5b46b79224bc6e94025",
"69c1f799e772cb6438f56c23efccb782",
"b7839dad95683814aa64166edc107ae2",
"8516d7a69675844a7a0b7095af7c46af",
"0406db5a14f94604a8c57ccfbc9f3b46",
"0ca6dca7396eb48e5849247ffd444914",
"0f4122b9a743b744abe2fb6a0a88868b",
"5ec81c81908db34429b4f6ddecadd3bd",
"99134b1f0c27d54469a840832a28fadf",
};
///
/// Returns shader from shader path id.
///
/// Id of shader path.
///
public static string GetShaderGUID(ShaderPathID id)
{
int index = (int)id;
int arrayLength = s_ShaderGUIDs.Length;
if (arrayLength > 0 && index >= 0 && index < arrayLength)
return s_ShaderGUIDs[index];
Debug.LogError("Trying to access universal shader GUID out of bounds: (" + id + ": " + index + ")");
return "";
}
#endif
}
}