Объявление
public void OnProcessShader(Shader shader, Rendering.ShaderSnippetData snippet, IListПараметры
shader | Шейдер, который компилируется. |
snippet | Подробная информация о компилируемом коде конкретного шейдера. |
data | Список вариантов, которые необходимо скомпилировать для конкретного кода шейдера. |
Описание
Реализуйте этот интерфейс для получения обратного вызова перед компиляцией фрагмента шейдера.
Проверьте глобальные ключевые слова, создав экземпляр ShaderKeyword с именем ключевого слова. Чтобы проверить локальные ключевые слова, используйте дополнительный параметр, чтобы указать шейдер, который использует локальное ключевое слово.
using System.Collections.Generic;
using UnityEditor.Build;
using UnityEditor.Rendering;
using UnityEngine;
using UnityEngine.Rendering;
class MyCustomBuildProcessor : IPreprocessShaders
{
ShaderKeyword m_GlobalKeywordBlue;
public MyCustomBuildProcessor()
{
m_GlobalKeywordBlue = new ShaderKeyword("_BLUE");
}
public int callbackOrder { get { return 0; } }
public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList<ShaderCompilerData> data)
{
ShaderKeyword localKeywordRed = new ShaderKeyword(shader, "_RED");
for (int i = data.Count - 1; i >= 0; --i)
{
if (!data[i].shaderKeywordSet.IsEnabled(m_GlobalKeywordBlue))
continue;
if (!data[i].shaderKeywordSet.IsEnabled(localKeywordRed))
continue;
data.RemoveAt(i);
}
}
}