Unity 6.3
0 онлайн 70 гостей 3 в системе
Вход

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Заменяет существующий исходный код в указанном шейдере исходным кодом в предоставленной строке.