Documentation

Unity Engine

Unity Engine

ShaderResourceOptions

The options of a resource described by a BindingInfo.
Read time 2 minutesLast updated 19 days ago

Definition

[Flags]public enum ShaderResourceOptions

Remarks

The options are reported by the shader compiler and are read-only. Options may vary depending on the target graphics API.

Examples

using UnityEditor;using UnityEngine;using UnityEngine.Shaders;// 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.Binding.Set + ":" + tex.Binding.Slot; msg += ", sampler " + tex.SamplerBinding.Set + ":" + tex.SamplerBinding.Slot; } Debug.Log(msg); msg = "Resource bindings: "; foreach (var resource in info.ResourceBindings) { msg += resource.Name + " (" + resource.Binding.ResourceType + ")" + resource.Binding.Set + ":" + resource.Binding.Slot + "["; if ((resource.Binding.ResourceOptions & ShaderResourceOptions.Readable) != 0) msg += "R"; if ((resource.Binding.ResourceOptions & ShaderResourceOptions.Writable) != 0) msg += "W"; 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"; } } } }}

Fields

Value

Description

CounterBufferIndicates a resource is a counter buffer.
NoneIndicates a resource without any options.
ReadableIndicates a resource can be read by the shader.
WritableIndicates a resource can be written to by the shader.