ShaderUtil
класс в UnityEditor
Описание
Утилитные методы, помогающие работать с шейдерами из Редактора.
С помощью методов этого класса можно сделать следующее:
- Управление компиляцией шейдеров. См. CompilePass.
- Создание ассетов шейдера. См. CreateShaderAsset.
- Доступ к общей информации о шейдерах. См. GetShaderData.
Дополнительные ресурсы: ,Shader,, ,ComputeShader,, ,RayTracingShader,, ,ShaderData,.
using UnityEditor; using UnityEngine; using UnityEngine.Rendering; // Adds a new Editor menu item called Example. Select a shader // asset in the Project window, then select // Example > PrintLightModeTagExample from the Editor menu. The value of all // "LightMode" tags present in any pass of the shader will be printed to // the console. public class PrintLightModeTagExample { [MenuItem("Example/PrintLightModeTagExample")] static void MenuCallback() { // If the selected object is a shader... if (Selection.activeObject is Shader selectedShader) { // For each subshader... ShaderData selectedShaderData = ShaderUtil.GetShaderData(selectedShader); for (int subShaderIndex = 0; subShaderIndex < selectedShaderData.SubshaderCount; ++subShaderIndex) { // For each pass... ShaderData.Subshader subShaderData = selectedShaderData.GetSubshader(subShaderIndex); for (int passIndex = 0; passIndex < subShaderData.PassCount; ++passIndex) { ShaderData.Pass passData = subShaderData.GetPass(passIndex); // If the pass has a "LightMode" tag, print its value ShaderTagId lightModeValue = passData.FindTagValue(new ShaderTagId("LightMode")); if (lightModeValue != ShaderTagId.none) { Debug.Log($"Pass '{passData.Name}' in SubShader {subShaderIndex} of " + $"Shader '{selectedShader.name}' has LightMode '{lightModeValue.name}'."); } } } } } }
Статические свойства
| Свойство | Описание |
|---|---|
| allowAsyncCompilation | Если true, асинхронная компиляция Shader разрешена на текущем сайте вызова. |
| anythingCompiling | Если true, Редактор компилирует некоторые шейдеры асинхронно в точке запроса. |
| disableShaderOptimization | Отключает оптимизацию шейдеров в Редакторе. |
| hardwareSupportsRectRenderTexture | Поддерживает ли текущее оборудование отображение текстов. |
Статические методы
| Метод | Описание |
|---|---|
| ClearCachedData | Очищает все внутренне кэшированные данные, которые были созданы для данного шейдера, такие как ошибки и информация о компиляции. |
| ClearShaderMessages | Очистить сообщения времени компиляции для данного шейдера. |
| CompilePass | Запросить у Редактора компиляцию Варианта Шейдера, необходимого для конкретного прохода данного Материала. |
| CreateComputeShaderAsset | Создает новый объект ComputeShader из предоставленной строки исходного кода. Вы можете использовать этот метод вместе с ScriptedImporter для создания собственных инструментов генерации вычислительных шейдеров в Редакторе. |
| CreateRayTracingShaderAsset | Создает новый объект RayTracingShader из предоставленной строки исходного кода. Вы можете использовать этот метод вместе с ScriptedImporter для создания собственных инструментов генерации шейдеров с трассированием лучей в Редакторе. |
| CreateShaderAsset | Создает новый объект Shader из предоставленной строки исходного кода. Вы можете использовать этот метод вместе с ScriptedImporter для создания собственных инструментов создания шейдеров в Редакторе. |
| GetAllShaderInfo | Возвращает массив ShaderInfo всех доступных шейдеров. Это включает встроенные шейдеры. |
| GetAnyHitShaderName | Возвращает имя определенного пользователем любого hit shader из RayTracingShader. |
| GetAnyHitShaderRayPayloadSize | Возвращает размер полезной нагрузки луча определенного пользователем любого hit shader из RayTracingShader. |
| GetCallableShaderCount | Возвращает число вызываемых шейдеров, определенных в заданной RayTracingShader. |
| GetCallableShaderName | Возвращает имя определенного пользователем Shader, который может быть вызван из RayTracingShader. |
| GetCallableShaderParamSize | Возвращает размер параметра определенного пользователем вызываемого шейдера из RayTracingShader. |
| GetClosestHitShaderName | Возвращает имя определенного пользователем ближайшего к соответствию шейдера из RayTracingShader. |
| GetClosestHitShaderRayPayloadSize | Возвращает размер полезной нагрузки луча для определенного пользователем ближайшего попадания шейдера из RayTracingShader. |
| GetComputeShaderMessageCount | Возвращает количество ошибок и предупреждений, созданных компилятором шейдеров Unity для заданного ComputeShader. |
| GetComputeShaderMessages | Возвращает каждую ошибку и предупреждение, созданные компилятором шейдеров Unity для заданного ComputeShader. |
| GetCurrentCustomEditor | Получает текущий пользовательский редактор для шейдера, который вы передаёте in.Depending в ассете конвейера рендеринга, назначенном в графических настройках, пользовательский редактор может измениться, если у шейдера есть другой пользовательский редактор для одного или нескольких ассетов конвейера рендеринга. |
| GetCustomEditorForRenderPipeline | Возвращает имя класса пользовательского редактора шейдера для конкретного типа ассета конвейера рендеринга. |
| GetIntersectionShaderName | Возвращает имя определенного пользователем шейдера пересечения из RayTracingShader. |
| GetMissShaderCount | Возвращает количество miss Shaders, определенных в заданной RayTracingShader. |
| GetMissShaderName | Возвращает имя определенного пользователем miss Shader из RayTracingShader. |
| GetMissShaderRayPayloadSize | Возвращает размер полезной нагрузки луча определенного пользователем miss Shader из RayTracingShader. |
| GetPassKeywords | Получает ключевые слова локального шейдера, которые действительны для Pass в определенном шейдере. |
| GetRayGenerationShaderCount | Возвращает число Shaders генерации лучей, определенных в заданной RayTracingShader. |
| GetRayGenerationShaderName | Возвращает имя определенного пользователем Shader для генерации лучей из RayTracingShader. |
| GetRayTracingShaderMessageCount | Возвращает количество ошибок и предупреждений, созданных компилятором шейдеров для заданного RayTracingShader. |
| GetRayTracingShaderMessages | Возвращает каждую ошибку и предупреждение, генерируемые Компилятором Шейдеров для заданного RayTracingShader. |
| GetShaderData | Получить данные шейдера для конкретного шейдера. |
| GetShaderInfo | Получает ShaderInfo для заданного шейдера. |
| GetShaderMessageCount | Возвращает количество ошибок и предупреждений, генерированных компилятором Unity Shader Compiler для данного Shader. |
| GetShaderMessages | Возвращает каждую ошибку и предупреждение, генерируемые Unity Компилятором Шейдеров для данного Шейдера. |
| GetShaderPlatformKeywordsForBuildTarget | Получает ключевые слова платформы для шейдера, заданную платформу компилятора шейдера, цель сборки и дополнительный графический уровень. Эти ключевые слова платформы необходимы для правильной компиляции шейдера для данной цели. |
| HasProceduralInstancing | Определяет, содержит ли указанный Шейдер допустимый вариант Процедурного Инстансирования. |
| IsGraphicsAPISupported | Проверяет, поддерживает ли данный проход шейдера предоставленную графику API. |
| IsPassCompiled | Проверяет, не был ли уже скомпилирован вариант Shader для данного прохода в Материале. |
| PassHasKeyword | Проверяет, является ли ключевое слово локального шейдера действительным для Pass в определенном шейдере. |
| RegisterShader | Зарегистрировать созданный пользователем шейдер. |
| RestoreAsyncCompilation | Восстанавливает предыдущий режим компиляции Shader в этой области CommandBuffer. |
| SetAsyncCompilation | Добавлена команда компиляции режима шейдера в CommandBuffer. |
| ShaderHasError | Проверяет, не имеет ли шейдер каких-либо ошибок компиляции. Игнорирует предупреждения. |
| ShaderHasWarnings | Проверяет, есть ли у шейдера предупреждения о компиляции. Игнорирует ошибки. |
| UpdateShaderAsset | Заменяет существующий исходный код в указанном шейдере исходным кодом в предоставленной строке. |