VariantCompileInfo
структура в UnityEditor
Описание
Информация о компилированном варианте шейдера.
Представляет собой результаты компиляции варианта с использованием ShaderData.Pass.CompileVariant. Эта структура содержит статус успешности и возможные сообщения об ошибках, а также часть данных рефлексии вместе с сырым бинарным выводом шейдера.
using UnityEditor; using UnityEngine; // Adds a new Editor menu item called Example. // Select a shader asset in the Project window, then select // Example > PrintVariantCompileInfoExample from the Editor menu. // Information of a compiled variant will be printed as debug log. public class PrintVariantCompileInfoExample { [MenuItem("Example/PrintVariantCompileInfoExample")] static void MenuCallback() { if (Selection.activeObject is Shader selectedShader) { // Get the first pass of the the first subshader ShaderData shaderData = ShaderUtil.GetShaderData(selectedShader); ShaderData.Subshader subShader = shaderData.GetSubshader(0); ShaderData.Pass pass = subShader.GetPass(0); // Compile a vertex shader variant without any keywords var keywords = new string[] { }; ShaderData.VariantCompileInfo info = pass.CompileVariant(UnityEditor.Rendering.ShaderType.Vertex, keywords, UnityEditor.Rendering.ShaderCompilerPlatform.D3D, BuildTarget.StandaloneWindows64); // Log the information Unity has about the compiled variant if (info.Success) { Debug.Log("Compiled size: " + info.ShaderData.Length + " bytes"); string msg = "Vertex attributes: "; foreach (var a in info.Attributes) { msg += a.ToString() + " "; } Debug.Log(msg); msg = "Texture bindings: "; foreach (var tex in info.TextureBindings) { msg += tex.Name + "-" + tex.Index + " "; } Debug.Log(msg); msg = "Constant buffers: "; foreach (var cb in info.ConstantBuffers) { msg += cb.Name + "-" + cb.Size + "bytes "; } Debug.Log(msg); } else // If the compilation fails, Unity prints the errors { string failureMsg = "Compilation failed: "; foreach(var msg in info.Messages) { failureMsg += msg.message + "\n"; } } } } }
Дополнительные ресурсы: ,ShaderData.Pass.CompileVariant,, ,ShaderData,, ,ShaderUtil.GetShaderData,.
Свойства
| Свойство | Описание |
|---|---|
| Attributes | Вертикальные атрибуты компилированных вариантов используются (только для чтения). |
| ConstantBuffers | Константные буферы, используемые скомпилированным вариантом (только для чтения). Некоторые платформы не имеют постоянных буферов; однако, Unity сообщает все глобальные константы/униформы в одном постоянном буфере. |
| Messages | Хранит ошибки и предупреждения, созданные во время компиляции (только для чтения). |
| ResourceBindings | Подробная информация о каждом ресурсе, используемом компилированным вариантом, в одном комбинированном массиве (только для чтения). |
| ShaderData | Хранит необработанный байт-код для компилированного шейдера (только для чтения). |
| Success | Показывает, удалась ли компиляция варианта (только для чтения). Если это произошло, то значение true. В противном случае значение false, и ShaderData.VariantCompileInfo.Messages содержит ошибки. |
| TextureBindings | Привязки текстуры, используемые компилированным вариантом (только для чтения). |