<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SPIRV-Cross.NET</name>
    </assembly>
    <members>
        <member name="T:SPIRVCross.NET.Compiler">
            <summary>
            Wraps basic SPIRV-Cross cross-compilation functionality provided by <see cref="T:SPIRVCross.NET.NativeBindings.Compiler"/> into a type-safe and memory-safe object.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.Compiler.options">
            <summary>
            Common SPIRV-Cross options to compile with.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.Compile">
            <summary>
            Compile IR into a string.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.AddHeaderLine(System.String)">
            <summary>
            <para>Adds a line to be added right after #version in GLSL backend.
            This is useful for enabling custom extensions which are outside the scope of SPIRV-Cross.
            This can be combined with variable remapping.</para>
            <para>While AddHeaderLine() is a more generic way of adding arbitrary text to the header
            of a GLSL file, RequireExtension() should be used when adding extensions since it will
            avoid creating collisions with SPIRV-Cross generated extensions.</para>
            Code added via AddHeaderLine() is typically backend-specific.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.MaskStageOutputByLocation(System.UInt32,System.UInt32)">
            <summary>
            <para>If a shader output is active in this stage, but inactive in a subsequent stage,
            this can be signalled here. This can be used to work around certain cross-stage matching problems
            which plagues MSL and HLSL in certain scenarios.</para>
            <para>An output which matches one of these will not be emitted in stage output interfaces, but rather treated as a private
            variable.</para>
            This option is only meaningful for MSL and HLSL, since GLSL matches by location directly.
            Masking builtins only takes effect if the builtin in question is part of the stage output interface.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.MaskStageOutputByBuiltin(SPIRVCross.NET.BuiltIn)">
            <summary>
            <para>If a shader output is active in this stage, but inactive in a subsequent stage,
            this can be signalled here. This can be used to work around certain cross-stage matching problems
            which plagues MSL and HLSL in certain scenarios.</para>
            <para>An output which matches one of these will not be emitted in stage output interfaces, but rather treated as a private
            variable.</para>
            This option is only meaningful for MSL and HLSL, since GLSL matches by location directly.
            Masking builtins only takes effect if the builtin in question is part of the stage output interface.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.BuildDummySamplerForCombinedImages(SPIRVCross.NET.VariableID@)">
             <summary>
             <para>Analyzes all OpImageFetch (texelFetch) opcodes and checks if there are instances where
             said instruction is used without a combined image sampler.</para>
             <para>GLSL targets do not support the use of texelFetch without a sampler.
             To workaround this, we must inject a dummy sampler which can be used to form a sampler2D at the call-site of
             texelFetch as necessary.</para>
            
             <para>This must be called before BuildCombinedImageIamplers().
             BuildCombinedImageSamplers() may refer to the ID returned by this method if the returned ID is non-zero.
             The return value will be the ID of a sampler object if a dummy sampler is necessary, or 0 if no sampler object
             is required.</para>
            
             If the returned ID is non-zero, it can be decorated with set/bindings as desired before calling Compile().
             Calling this function also invalidates GetActiveInterfaceVariables(), so this should be called
             before that function.
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.BuildCombinedImageSamplers">
             <summary>
             <para>Analyzes all separate image and samplers used from the currently selected entry point,
             and re-routes them all to a combined image sampler instead.
             This is required to "support" separate image samplers in targets which do not NativeBindingsly support
             this feature, like GLSL/ESSL.</para>
            
             <para>This must be called before Compile() if such remapping is desired.
             This call will add new sampled images to the SPIR-V,
             so it will appear in reflection if GetShaderResources() is called after BuildCombinedImageSamplers.</para>
            
             <para>If any image/sampler remapping was found, no separate image/samplers will appear in the decompiled output,
             but will still appear in reflection.</para>
            
             <para>The resulting samplers will be void of any decorations like name, descriptor sets and binding points,
             so this can be added before compile() if desired.</para>
            
             <para>Combined image samplers originating from this set are always considered active variables.
             Arrays of separate samplers are not supported, but arrays of separate images are supported.
             Array of images + sampler -> Array of combined image samplers.</para>
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.GetCombinedImageSamplers">
            <summary>
            Gets a remapping for the combined image samplers.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.SetEnabledInterfaceVariables(SPIRVCross.NET.Set@)">
            <summary>
            <para>Sets the interface variables which are used during compilation.</para>
            <para>By default, all variables are used.</para>
            Once set, compile() will only consider the set in active_variables.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.IsCompilerBufferHLSLCounterBuffer(SPIRVCross.NET.VariableID)">
            <summary>
            Is this variable an HLSL counter buffer?
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Compiler.CompilerBufferGetHLSLCounterBuffer(SPIRVCross.NET.VariableID,SPIRVCross.NET.VariableID@)">
            <summary>
            Gets the paired buffer for an HLSL counter buffer.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.CompilerOptions">
            <summary>
            Common SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CompilerOptions.#ctor">
            <summary>
            Common SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.forceTemporary">
            <summary>
            Debug option to always emit temporary variables for all expressions.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.flattenMultidimensionalArrays">
            <summary>
            <para>Flattens multidimensional arrays, e.g. float foo[a][b][c] into single-dimensional arrays,
            e.g. float foo[a * b * c].</para>
            This function does not change the actual SPIRType of any object.
            Only the generated code, including declarations of interface variables are changed to be single array dimension.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.enableStorageImageQualifierDeduction">
            <summary>
            <para>In cases where readonly/writeonly decoration are not used at all,
            we try to deduce which qualifier(s) we should actually used, since actually emitting
            read-write decoration is very rare, and older glslang/HLSL compilers tend to just emit readwrite as a matter of fact.</para>
            The default (false) is to trust the decorations set by the SPIR-V, 
            but if the SPIR-V is likely to have bad decorations, it's recommended to set this to true and enable automatic deduction for these cases.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.forceZeroInitializedVariables">
            <summary>
            On some targets (WebGPU), uninitialized variables are banned.
            If this is enabled, all variables (temporaries, Private, Function)
            which would otherwise be uninitialized will now be initialized to 0 instead.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.relaxNanChecks">
            <summary>
            <para>For opcodes where we have to perform explicit additional nan checks, very ugly code is generated.</para>
            <para>If we opt-in, ignore these requirements.</para>
            <para>In opcodes like NClamp/NMin/NMax and FP compare, ignore NaN behavior.</para>
            Use FClamp/FMin/FMax semantics for clamps and lets implementation choose ordered or unordered
            compares.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.fixupClipSpace">
            <summary>
            GLSL: In vertex-like shaders, rewrite [0, w] depth (Vulkan/D3D style) to [-w, w] depth (GL style).
            MSL: In vertex-like shaders, rewrite [-w, w] depth (GL style) to [0, w] depth.
            HLSL: In vertex-like shaders, rewrite [-w, w] depth (GL style) to [0, w] depth.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CompilerOptions.flipVertexY">
            <summary>
            In vertex-like shaders, inverts gl_Position.y or equivalent.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Constant">
            <summary>
            A constant value
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetSubconstants">
            <summary>
            Returns a list of subconstants for composites which are constant arrays, etc.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Constant.TypeID">
            <summary>
            The type of the constant.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarFloat16(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar 16-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarFloat32(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar 32-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarFloat64(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar 64-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarUInt8(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar unsigned 8-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarInt8(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar signed 8-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarUInt16(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar unsigned 16-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarInt16(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar signed 16-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarUInt32(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar unsigned 32-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarInt32(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar signed 32-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarUInt64(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar unsigned 64-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.GetScalarInt64(System.UInt32,System.UInt32)">
            <summary>
            Gets the scalar signed 64-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarFloat16(System.UInt32,System.UInt32,System.UInt16)">
            <summary>
            Sets the scalar 16-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
            <remarks>
            As there is no 16-bit floating point type available in C, a 16-bit integer must be substituted.
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarFloat32(System.UInt32,System.UInt32,System.Single)">
            <summary>
            Sets the scalar 32-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarFloat64(System.UInt32,System.UInt32,System.Double)">
            <summary>
            Sets the scalar 64-bit float value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarUInt8(System.UInt32,System.UInt32,System.Byte)">
            <summary>
            Sets the scalar unsigned 8-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarInt8(System.UInt32,System.UInt32,System.SByte)">
            <summary>
            Sets the scalar signed 8-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarUInt16(System.UInt32,System.UInt32,System.UInt16)">
            <summary>
            Sets the scalar unsigned 16-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarInt16(System.UInt32,System.UInt32,System.Int16)">
            <summary>
            Sets the scalar signed 16-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarUInt32(System.UInt32,System.UInt32,System.UInt32)">
            <summary>
            Sets the scalar unsigned 32-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarInt32(System.UInt32,System.UInt32,System.Int32)">
            <summary>
            Sets the scalar signed 32-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarUInt64(System.UInt32,System.UInt32,System.UInt64)">
            <summary>
            Sets the scalar unsigned 64-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Constant.SetScalarInt64(System.UInt32,System.UInt32,System.Int64)">
            <summary>
            Sets the scalar signed 64-bit integer value of this constant. If this constant is a matrix or vector, column and row must be set appropriately.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Context">
            <summary>
            Wraps SPIRV-Cross context functionality provided by <see cref="T:SPIRVCross.NET.NativeBindings.Context"/> into a type-safe and memory-safe object.
            <para>An instance of a <see cref="T:SPIRVCross.NET.Context"/> must be kept alive in order to utilize SPIR-V functionality provided by the child objects it returns.</para>
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Context.IsDisposed">
            <summary>
            Has this context instance been disposed?
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.#ctor">
            <summary>
            Initializes a new SpirvCrossContext along with its native resources.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])">
            <summary>
            Parses SPIR-V bytecode into an intermediate representation that SPIRV-Cross can consume.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateReflector(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of a reflection-only compiler from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateJsonReflector(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of a reflection-only compiler with a JSON backend from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateHLSLCompiler(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of an SPIR-V to HLSL cross-compiler from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateMSLCompiler(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of an SPIR-V to MSL cross-compiler from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateGLSLCompiler(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of an SPIR-V to GLSL cross-compiler from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateCPPCompiler(SPIRVCross.NET.ParsedIR)">
            <summary>
            Creates an instance of an SPIR-V to C++ cross-compiler from a parsed IR instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateReflector(System.Byte[])">
            <summary>
            Creates an instance of a reflection-only compiler from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateJsonReflector(System.Byte[])">
            <summary>
            Creates an instance of a reflection-only compiler with a JSON backend from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateHLSLCompiler(System.Byte[])">
            <summary>
            Creates an instance of an SPIR-V to HLSL cross-compiler from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateMSLCompiler(System.Byte[])">
            <summary>
            Creates an instance of an SPIR-V to MSL cross-compiler from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateGLSLCompiler(System.Byte[])">
            <summary>
            Creates an instance of an SPIR-V to GLSL cross-compiler from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.CreateCPPCompiler(System.Byte[])">
            <summary>
            Creates an instance of an SPIR-V to C++ cross-compiler from SPIR-V bytecode.
            </summary>
            <remarks>
            Implicitly creates parsed IR from the SPIR-V bytecode. 
            If you intend to make multiple compilers from equivalent bytecode, it is preferable to reuse a parsed IR instance returned from <see cref="M:SPIRVCross.NET.Context.ParseSpirv(System.Byte[])"/> 
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Context.Dispose">
            <summary>
            Disposes of the NativeBindings SPIRV-Cross context and all the resources it owns.
            Calling any SPIRV-Cross functionality in child objects created by this instance is illegal and will throw an exception.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Context.Finalize">
            <summary>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ContextChild">
            <summary>
            Represents a class that relies on a Context object for its operation and performs validation to ensure that the context is still valid.
            <para>If the parent context is disposed, attempting to use any validated methods on classes inheriting from this will throw a <see cref="T:SPIRVCross.NET.MissingContextException"/>.</para>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.BaseType">
            <summary>
            SPIR-V primitive value types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.BuiltIn">
            <summary>
            SPIR-V builtin types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ExecutionModel">
            <summary>
            SPIR-V shader execution model.
            </summary>
            <remarks>
            Most commonly used to identify the purpose/function of a SPIR-V module.
            </remarks>
        </member>
        <member name="T:SPIRVCross.NET.Capability">
            <summary>
            SPIR-V module capabilities.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Decoration">
            <summary>
            SPIR-V decoration types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ExecutionMode">
            <summary>
            SPIR-V execution modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.StorageClass">
            <summary>
            SPIR-V storage classes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Dimension">
            <summary>
            SPIR-V Image dimension types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ImageFormat">
            <summary>
            SPIR-V Image format types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.AccessQualifier">
            <summary>
            SPIR-V memory access qualifiers.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.InvalidSPIRVException">
            <summary>
            Represents an error that occurs when an internal SPIRV-Cross method returns a <see cref="F:SPIRVCross.NET.NativeBindings.Result.InvalidSPIRV"/> 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.UnsupportedSPIRVException">
            <summary>
            Represents an error that occurs when an internal SPIRV-Cross method returns a <see cref="F:SPIRVCross.NET.NativeBindings.Result.UnsupportedSPIRV"/> 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.InvalidArgumentException">
            <summary>
            Represents an error that occurs when an internal SPIRV-Cross method returns a <see cref="F:SPIRVCross.NET.NativeBindings.Result.InvalidArgument"/> 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MissingContextException">
            <summary>
            Represents an error that occurs when a SPIR-V cross child type no longer has an active parent context.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ParsedIR">
            <summary>
            <para>A type-safe and memory-safe wrapper around a <see cref="T:SPIRVCross.NET.NativeBindings.ParsedIR"/> pointer.</para>
            Internally, a <see cref="T:SPIRVCross.NET.ParsedIR"/>'s native object is used by SPIRV-Cross to store cross-compilation and reflection information of a SPIR-V module. 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Reflector">
            <summary>
            Wraps SPIRV-Cross reflection functionality provided by <see cref="T:SPIRVCross.NET.NativeBindings.Compiler"/> into a type-safe and memory-safe object.
            </summary>
            <remarks>
            An instance of this class can be obtained through <see cref="M:SPIRVCross.NET.Context.CreateReflector(SPIRVCross.NET.ParsedIR)"/>
            </remarks>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetCurrentIDBound">
            <summary>
            API for querying which specialization constants exist.
            To modify a specialization constant before compile(), use get_constant(constant.id),
            then update constants directly in the SPIRConstant data structure.
            For composite types, the subconstants can be iterated over and modified.
            constant_type is the SPIRType for the specialization constant,
            which can be queried to determine which fields in the unions should be poked at.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.RequireExtension(System.String)">
            <summary>
            Adds an extension which is required to run this shader, e.g.
            require_extension("GL_KHR_my_extension");
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetNumRequiredExtensions">
            <summary>
            Gets the number of extensions in the internal SPIR-V extension list 
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetRequiredExtension(System.UIntPtr)">
            <summary>
            Indexes the internal SPIR-V extension list  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.VariableIsDepthOrCompare(SPIRVCross.NET.VariableID)">
            <summary>
            <para>
            After compilation, query if a variable ID was used as a depth resource.
            </para>
            <para>
            This is meaningful for MSL since descriptor types depend on this knowledge.
            </para>
            <para>Cases which return true:</para>
            <para>- Images which are declared with depth = 1 image type.</para>
            <para>- Samplers which are statically used at least once with Dref opcodes.</para>
            - Images which are statically used at least once with Dref opcodes.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetName(SPIRVCross.NET.ID)">
            <summary>
            Gets the identifier (OpName) of an ID. If not defined, an empty string will be returned.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetName(SPIRVCross.NET.ID,System.String)">
            <summary>
            Overrides the identifier OpName of an ID.
            Identifiers beginning with underscores or identifiers which contain double underscores
            are reserved by the implementation.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.HasDecoration(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration)">
            <summary>
            Returns whether the decoration has been applied to the ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.HasMemberDecoration(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration)">
            <summary>
            Returns whether the decoration has been applied to a member of a struct.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetDecoration(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration,System.UInt32)">
            <summary>
            Applies a decoration to an ID. Effectively injects OpDecorate.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetDecorationString(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration,System.String)">
            <summary>
            Applies a decoration to an ID. Effectively injects OpDecorate.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetMemberDecoration(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration,System.UInt32)">
            <summary>
            Similar to set_decoration, but for struct members.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetMemberDecorationString(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration,System.String)">
            <summary>
            Similar to set_decoration, but for struct members.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetMemberName(SPIRVCross.NET.TypeID,System.UInt32,System.String)">
            <summary>
            Sets the member identifier for OpTypeStruct ID, member number "index".
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.UnsetDecoration(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration)">
            <summary>
            Removes the decoration for an ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.UnsetMemberDecoration(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration)">
            <summary>
            Unsets a member decoration, similar to UnsetDecoration.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.RenameEntryPoint(System.String,System.String,SPIRVCross.NET.ExecutionModel)">
            <summary>
            <para>Renames an entry point from old_name to new_name.</para>
            <para>If old_name is currently selected as the current entry point, it will continue to be the current entry point,
            albeit with a new name.</para>
            GetEntryPoints() is essentially invalidated at this point.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDecoration(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration)">
            <summary>
            <para>Gets the value for decorations which take arguments.</para>
            <para>If the decoration is a boolean (i.e. spv::DecorationNonWritable),
            1 will be returned.</para>
            If decoration doesn't exist or decoration is not recognized,
            0 will be returned.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDecorationString(SPIRVCross.NET.ID,SPIRVCross.NET.Decoration)">
            <summary>
            <para>Gets the value for decorations which take arguments.</para>
            <para>If the decoration is a boolean (i.e. spv::DecorationNonWritable),
            1 will be returned.</para>
            If decoration doesn't exist or decoration is not recognized,
            0 will be returned.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetMemberDecoration(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration)">
            <summary>
            Given an OpTypeStruct in ID, obtain the OpMemberDecoration for member number "index".
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetMemberDecorationString(SPIRVCross.NET.TypeID,System.UInt32,SPIRVCross.NET.Decoration)">
            <summary>
            Given an OpTypeStruct in ID, obtain the OpMemberDecoration for member number "index".
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetMemberName(SPIRVCross.NET.TypeID,System.UInt32)">
            <summary>
            Given an OpTypeStruct in ID, obtain the identifier for member number "index".
            This may be an empty string.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetEntryPoints">
            <summary>
            Gets the entry points of the current SPIR-V module.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetEntryPoint(SPIRVCross.NET.EntryPoint)">
            <summary>
            <para>Sets the active entry point.</para>
            <para>All operations work on the current entry point.</para>
            <para>Entry points can be swapped out with set_entry_point().</para>
            <para>Entry points should be set right after the constructor completes as some reflection functions traverse the graph from the entry point.</para>
            <para>Resource reflection also depends on the entry point.</para>
            By default, the current entry point is set to the first OpEntryPoint which appears in the SPIR-V module.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetCleansedEntryPointName(SPIRVCross.NET.EntryPoint)">
            <summary>
            Gets a cleansed version of the entry point name.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetExecutionMode(SPIRVCross.NET.ExecutionMode)">
            <summary>
            Set the execution mode of the active entry point.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.UnsetExecutionMode(SPIRVCross.NET.ExecutionMode)">
            <summary>
            Unset the execution mode of the active entry point.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.SetExecutionModeWithArguments(SPIRVCross.NET.ExecutionMode,System.UInt32,System.UInt32,System.UInt32)">
            <summary>
            Set the execution mode of the active entry point with arguments.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetExecutionModes">
            <summary>
            Get the execution modes of the active SPIR-V module.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetExecutionModeArgument(SPIRVCross.NET.ExecutionMode)">
            <summary>
            <para>Gets argument for an execution mode (LocalSize, Invocations, OutputVertices).</para>
            <para>For LocalSize or LocalSizeId, the index argument is used to select the dimension (X = 0, Y = 1, Z = 2).</para>
            <para>For execution modes which do not have arguments, 0 is returned.</para>
            <para>LocalSizeId query returns an ID. If LocalSizeId execution mode is not used, it returns 0.</para>
            LocalSize always returns a literal. If execution mode is LocalSizeId,
            the literal (spec constant or not) is still returned.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetExecutionModeArgumentByIndex(SPIRVCross.NET.ExecutionMode,System.UInt32)">
            <summary>
            Get the arguments of the given execution mode by index.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetExecutionModel">
            <summary>
            Get the execution model for the active SPIR-V module. 
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.UpdateActiveBuiltins">
            <summary>
            Traverses all reachable opcodes and sets active_builtins to a bitmask of all builtin variables which are accessed in the shader.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.HasActiveBuiltin(SPIRVCross.NET.BuiltIn,SPIRVCross.NET.StorageClass)">
            <summary>
            Returns whether or not an active builtin with a given storage class is present.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetTypeHandle(SPIRVCross.NET.TypeID)">
            <summary>
            Gets a handle to a SpirvCrossType instance for a SpirvTypeID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDeclaredStructSize(SPIRVCross.NET.Type)">
            <summary>
            Returns the effective size of a buffer block.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDeclaredStructSizeRuntimeArray(SPIRVCross.NET.Type,System.UIntPtr)">
            <summary>
            <para>Returns the effective size of a buffer block, with a given array size
            for a runtime array.</para>
            <para>SSBOs are typically declared as runtime arrays. get_declared_struct_size() will return 0 for the size.</para>
            <para>This is not very helpful for applications which might need to know the array stride of its last member.</para>
            <para>This can be done through the API, but it is not very intuitive how to accomplish this, so here we provide a helper function
            to query the size of the buffer, assuming that the last member has a certain size.</para>
            <para>If the buffer does not contain a runtime array, array_size is ignored, and the function will behave as
            get_declared_struct_size().</para>
            To get the array stride of the last member, something like:
            get_declared_struct_size_runtime_array(type, 1) - get_declared_struct_size_runtime_array(type, 0) will work.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDeclaredStructMemberSize(SPIRVCross.NET.Type,System.UInt32)">
            <summary>
            Returns the effective size of a buffer block struct member.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.StructMemberOffset(SPIRVCross.NET.Type,System.UInt32)">
            <summary>
            <para>API for querying buffer objects.</para>
            <para>The type passed in here should be the base type of a resource, i.e.
            get_type(resource.base_type_id)
            as decorations are set in the basic Block type.</para>
            <para>The type passed in here must have these decorations set, or an exception is raised.</para>
            Only UBOs and SSBOs or sub-structs which are part of these buffer types will have these decorations set.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.StructMemberArrayStride(SPIRVCross.NET.Type,System.UInt32)">
            <summary>
            <para>API for querying buffer objects.</para>
            <para>The type passed in here should be the base type of a resource, i.e.
            get_type(resource.base_type_id)
            as decorations are set in the basic Block type.</para>
            <para>The type passed in here must have these decorations set, or an exception is raised.</para>
            Only UBOs and SSBOs or sub-structs which are part of these buffer types will have these decorations set.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.StructMemberMatrixStride(SPIRVCross.NET.Type,System.UInt32)">
            <summary>
            <para>API for querying buffer objects.</para>
            <para>The type passed in here should be the base type of a resource, i.e.
            get_type(resource.base_type_id)
            as decorations are set in the basic Block type.</para>
            <para>The type passed in here must have these decorations set, or an exception is raised.</para>
            Only UBOs and SSBOs or sub-structs which are part of these buffer types will have these decorations set.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetSpecializationConstants">
            <summary>
            <para>API for querying which specialization constants exist.</para>
            <para>To modify a specialization constant before compile(), use get_constant(constant.id),
            then update constants directly in the SPIRConstant data structure.</para>
            <para>For composite types, the subconstants can be iterated over and modified.</para>
            constant_type is the SPIRType for the specialization constant,
            which can be queried to determine which fields in the unions should be poked at.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetConstantHandle(SPIRVCross.NET.ConstantID)">
            <summary>
            Gets a handle to a SpirvCrossConstant instance for a ConstantID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetWorkGroupSizeSpecificationConstants(SPIRVCross.NET.SpecializationConstant@,SPIRVCross.NET.SpecializationConstant@,SPIRVCross.NET.SpecializationConstant@)">
             <summary>
             <para>In SPIR-V, the compute work group size can be represented by a constant vector, in which case
             the LocalSize execution mode is ignored.</para>
            
             <para>This constant vector can be a constant vector, specialization constant vector, or partly specialized constant vector.</para>
             <para>To modify and query work group dimensions which are specialization constants, SPIRConstant values must be modified
             directly via get_constant() rather than using LocalSize directly. This function will return which constants should be modified.</para>
            
             <para>To modify dimensions which are *not* specialization constants, set_execution_mode should be used directly.</para>
             <para>Arguments to set_execution_mode which are specialization constants are effectively ignored during compilation.</para>
             <para>NOTE: This is somewhat different from how SPIR-V works. In SPIR-V, the constant vector will completely replace LocalSize,
             while in this interface, LocalSize is only ignored for specialization constants.</para>
            
             <para>The specialization constant will be written to x, y and z arguments.</para>
             <para>If the component is not a specialization constant, a zeroed out struct will be written.</para>
             <para>The return value is the constant ID of the builtin WorkGroupSize, but this is not expected to be useful
             for most use cases.</para>
             If LocalSizeId is used, there is no uvec3 value representing the workgroup size, so the return value is 0,
             but x, y and z are written as normal if the components are specialization constants.
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetActiveBufferRanges(SPIRVCross.NET.VariableID)">
            <summary>
            <para>Returns a vector of which members of a struct are potentially in use by a
            SPIR-V shader. The granularity of this analysis is per-member of a struct.</para>
            <para>This can be used for Buffer (UBO), BufferBlock/StorageBuffer (SSBO) and PushConstant blocks.</para>
            ID is the Resource::id obtained from get_shader_resources().
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetBinaryOffsetForDeclaration(SPIRVCross.NET.VariableID,SPIRVCross.NET.Decoration,System.UInt32@)">
            <summary>
            <para>Gets the offset in SPIR-V words (uint32_t) for a decoration which was originally declared in the SPIR-V binary.</para>
            <para>The offset will point to one or more uint32_t literals which can be modified in-place before using the SPIR-V binary.</para>
            <para>Note that adding or removing decorations using the reflection API will not change the behavior of this function.</para>
            <para>If the decoration was declared, sets the word_offset to an offset into the provided SPIR-V binary buffer and returns true,
            otherwise, returns false.</para>
            If the decoration does not have any value attached to it (e.g. DecorationRelaxedPrecision), this function will also return false.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDeclaredCapabilities">
            <summary>
            Gets the list of all SPIR-V Capabilities which were declared in the SPIR-V module.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetDeclaredExtensions">
            <summary>
            Gets the list of all SPIR-V extensions which were declared in the SPIR-V module.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetRemappedDeclaredBlockName(SPIRVCross.NET.VariableID)">
             <summary>
             <para>When declaring buffer blocks in GLSL, the name declared in the GLSL source
             might not be the same as the name declared in the SPIR-V module due to naming conflicts.</para>
             <para>In this case, SPIRV-Cross needs to find a fallback-name, and it might only
             be possible to know this name after compiling to GLSL.</para>
             <para>This is particularly important for HLSL input and UAVs which tends to reuse the same block type
             for multiple distinct blocks. For these cases it is not possible to modify the name of the type itself
             because it might be unique. Instead, you can use this interface to check after compilation which
             name was actually used if your input SPIR-V tends to have this problem.</para>
             <para>For other names like remapped names for variables, etc, it's generally enough to query the name of the variables
             after compiling, block names are an exception to this rule.</para>
             <para>ID is the name of a variable as returned by Resource::id, and must be a variable with a Block-like type.</para>
            
             This also applies to HLSL cbuffers.
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetBufferBlockDecorations(SPIRVCross.NET.VariableID)">
            <summary>
            <para>For buffer block variables, get the decorations for that variable.</para>
            <para>Sometimes, decorations for buffer blocks are found in member decorations instead
            of direct decorations on the variable itself.</para>
            The most common use here is to check if a buffer is readonly or writeonly.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.GetActiveInterfaceVariables">
             <summary>
             <para>Returns a set of all global variables which are statically accessed
             by the control flow graph from the current entry point.</para>
             <para>Only variables which change the interface for a shader are returned, that is,
             variables with storage class of Input, Output, Uniform, UniformConstant, PushConstant and AtomicCounter
             storage classes are returned.</para>
            
             To use the returned set as the filter for which variables are used during compilation,
             this set can be moved to set_enabled_interface_variables().
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.CreateShaderResources">
            <summary>
            Query shader resources, use ids with reflection interface to modify or query binding points, etc.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Reflector.CreateShaderResourcesForActiveVariables(SPIRVCross.NET.Set@)">
            <summary>
            <para>Query shader resources, but only return the variables which are part of active_variables.</para>
            E.g.: get_shader_resources(get_active_variables()) to only return the variables which are statically
            accessed.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Resources">
            <summary>
            <para>Wraps SPIRV-Cross resource reflection functionality provided by <see cref="T:SPIRVCross.NET.NativeBindings.Compiler"/> into a type-safe and memory-safe object.</para>
            A <see cref="T:SPIRVCross.NET.Resources"/> instance provides access to shader resource reflection information which can be used 
            in conjunction with a <see cref="T:SPIRVCross.NET.Reflector"/> to query or modify field names, resource types, offsets, and more.  
            </summary>
            <remarks>
            If the SPIR-V IR used to generate a <see cref="T:SPIRVCross.NET.Resources"/> instance has been modified, the instance will not reflect the changes and a new one nust be created.
            </remarks>
        </member>
        <member name="P:SPIRVCross.NET.Resources.UniformBuffers">
            <summary>
            Uniform Buffers defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.StorageBuffers">
            <summary>
            Storage buffers defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.StageInputs">
            <summary>
            Stage inputs defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.StageOutputs">
            <summary>
            Stage output defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.SubpassInputs">
            <summary>
            Subpass inputs defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.StorageImages">
            <summary>
            Storage images defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.SampledImages">
            <summary>
            Sampled images defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.AtomicCounters">
            <summary>
            Atomic counters defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.PushConstantBuffers">
            <summary>
            Push constant buffers defined in SPIR-V source.
            </summary>
            <remarks>
            There can only be one push constant block,
            but SPIRV-Cross keeps this field as an array in case this restriction is lifted in the future.
            </remarks>
        </member>
        <member name="P:SPIRVCross.NET.Resources.SeparateImages">
            <summary>
            Images defined in SPIR-V source.
            </summary>
            <remarks>
            For Vulkan GLSL and HLSL source,
            these correspond to separate texture2D and samplers respectively.
            </remarks>
        </member>
        <member name="P:SPIRVCross.NET.Resources.SeparateSamplers">
            <summary>
            Image samplers defined in SPIR-V source.
            </summary>
            <remarks>
            For Vulkan GLSL and HLSL source,
            these correspond to separate texture2D and samplers respectively.
            </remarks>
        </member>
        <member name="P:SPIRVCross.NET.Resources.AccelerationStructures">
            <summary>
            Acceleration structures defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.RecordBuffers">
            <summary>
            Shader record buffers defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.PlainUniforms">
            <summary>
            Plain GL Uniforms defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.BuiltinInputs">
            <summary>
            Built-in inputs defined in SPIR-V source.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Resources.BuiltinOutputs">
            <summary>
            Built-in outputs defined in SPIR-V source.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Set">
            <summary>
            <para>A type-safe and memory-safe wrapper around a <see cref="T:SPIRVCross.NET.NativeBindings.Set"/> pointer.</para>
            Internally, a <see cref="T:SPIRVCross.NET.Set"/>'s native object is used by SPIRV-Cross to store a set of global variables in the SPIR-V module. 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ID">
            <summary>
            A typed wrapper around an unsigned, 32-bit integer to use as a reference and identifier for SPIRV-Cross objects.  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.op_Explicit(System.UInt32)~SPIRVCross.NET.ID">
            <summary>
            Explicit conversion from uint to ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.op_Explicit(SPIRVCross.NET.ID)~System.UInt32">
            <summary>
            Explicit conversion from ID to uint.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.ToString">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.ToString(System.String)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.ToString(System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.ToString(System.String,System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.GetHashCode">
            <summary>
            Returns the hash code for this instance
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.Equals(System.Object)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified object.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ID.Equals(SPIRVCross.NET.ID)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified ID.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.TypeID">
            <summary>
            A typed wrapper around an unsigned, 32-bit integer to use as a reference and identifier for SPIRV-Cross types.  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.op_Explicit(System.UInt32)~SPIRVCross.NET.TypeID">
            <summary>
            Explicit conversion from uint to TypeID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.op_Explicit(SPIRVCross.NET.TypeID)~System.UInt32">
            <summary>
            Explicit conversion from TypeID to uint.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.op_Implicit(SPIRVCross.NET.TypeID)~SPIRVCross.NET.ID">
            <summary>
            Implicit conversion from TypeID to ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.ToString">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.ToString(System.String)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.ToString(System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.ToString(System.String,System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.GetHashCode">
            <summary>
            Returns the hash code for this instance
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.Equals(System.Object)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified object.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.TypeID.Equals(SPIRVCross.NET.TypeID)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified TypeID.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.VariableID">
            <summary>
            A typed wrapper around an unsigned, 32-bit integer to use as a reference and identifier for SPIRV-Cross variables.  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.op_Explicit(System.UInt32)~SPIRVCross.NET.VariableID">
            <summary>
            Explicit conversion from uint to VariableID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.op_Explicit(SPIRVCross.NET.VariableID)~System.UInt32">
            <summary>
            Explicit conversion from VariableID to uint.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.op_Implicit(SPIRVCross.NET.VariableID)~SPIRVCross.NET.ID">
            <summary>
            Implicit conversion from VariableID to ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.ToString">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.ToString(System.String)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.ToString(System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.ToString(System.String,System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.GetHashCode">
            <summary>
            Returns the hash code for this instance
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.Equals(System.Object)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified object.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.VariableID.Equals(SPIRVCross.NET.VariableID)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified VariableID.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ConstantID">
            <summary>
            A typed wrapper around an unsigned, 32-bit integer to use as a reference and identifier for SPIRV-Cross constants.  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.op_Explicit(System.UInt32)~SPIRVCross.NET.ConstantID">
            <summary>
            Explicit conversion from uint to ConstantID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.op_Explicit(SPIRVCross.NET.ConstantID)~System.UInt32">
            <summary>
            Explicit conversion from ConstantID to uint.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.op_Implicit(SPIRVCross.NET.ConstantID)~SPIRVCross.NET.ID">
            <summary>
            Implicit conversion from ConstantID to ID.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.ToString">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.ToString(System.String)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.ToString(System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.ToString(System.String,System.IFormatProvider)">
            <summary>
            Converts the numeric value of this instance to its equivalent string representation using the specified format and culture-specific format information.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.GetHashCode">
            <summary>
            Returns the hash code for this instance
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.Equals(System.Object)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified object.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.ConstantID.Equals(SPIRVCross.NET.ConstantID)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified ConstantID.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.CBool">
            <summary>
            A typed wrapper to represent a C98-compatible unsigned byte-based boolean.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.op_Implicit(System.Boolean)~SPIRVCross.NET.CBool">
            <summary>
            Implicit conversion from bool to CBool
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.op_Implicit(SPIRVCross.NET.CBool)~System.Boolean">
            <summary>
            Implicit conversion from CBool to bool.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.ToString">
            <summary>
            Converts the value of this instance to its equivalent string representation (either
            "True" or "False").
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.ToString(System.IFormatProvider)">
            <summary>
            Converts the value of this instance to its equivalent string representation (either
            "True" or "False").
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.CBool.Equals(System.Object)">
            <inheritdoc/>
        </member>
        <member name="M:SPIRVCross.NET.CBool.Equals(SPIRVCross.NET.CBool)">
            <summary>
            Returns a value indicating whether this instance is equal to a specified CBool object.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.ReflectedResource">
            <summary>
            Represents a SPIR-V resource with metadata including its identifier, type, base type, and name.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedResource.id">
            <summary>
            Resources are identified with their SPIR-V ID.
            This is the ID of the OpVariable.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedResource.type_id">
            <summary>
            The type ID of the variable which includes arrays and all type modifications.
            This type ID is not suitable for parsing OpMemberDecoration of a struct and other decorations in general
            since these modifications typically happen on the base_type_id.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedResource.base_type_id">
            <summary>
            <para>The base type of the declared resource.</para>
            This type is the base type which ignores pointers and arrays of the type_id.
            This is mostly useful to parse decorations of the underlying type.
            base_type_id can also be obtained with GetType(GetType(type_id).self).
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedResource.name">
             <summary>
             <para>The declared name (OpName) of the resource.
             For Buffer blocks, the name actually reflects the externally
             visible Block name.</para>
            
             <para>This name can be retrieved again by using either
             GetName(id) or GetName(base_type_id) depending if it's a buffer block or not.</para>
            
             This name can be an empty string in which case GetFallbackName(id) can be
             used which obtains a suitable fallback identifier for an ID.
             </summary>
        </member>
        <member name="T:SPIRVCross.NET.ReflectedBuiltinResource">
            <summary>
            Represents a SPIR-V builtin resource with metadata including the builtin type, value type ID, and base resource information.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedBuiltinResource.builtin">
            <summary>
            This is mostly here to support reflection of builtins such as Position/PointSize/CullDistance/ClipDistance.
            This needs to be different from Resource since we can collect builtins from blocks.
            <para>A builtin present here does not necessarily mean it's considered an active builtin,
            since variable ID "activeness" is only tracked on OpVariable level, not Block members.
            For that, UpdateActiveBuiltins() -> HasActiveBuiltin() can be used to further refine the reflection.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedBuiltinResource.value_type_id">
            <summary>
            <para>This is the actual value type of the builtin.</para>
            Typically float4, float, array(float, N) for the gl_PerVertex builtins.
            If the builtin is a control point, the control point array type will be stripped away here as appropriate.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.ReflectedBuiltinResource.resource">
            <summary>
            <para>This refers to the base resource which contains the builtin.
            If resource is a Block, it can hold multiple builtins, or it might not be a block.</para>
            For advanced reflection scenarios, all information in builtin/value_type_id can be deduced,
            it's just more convenient this way.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.EntryPoint">
            <summary>
            Represents a SPIR-V shader entry point.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.EntryPoint.executionModel">
            <summary>
            The entrypoint's execution model.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.EntryPoint.name">
            <summary>
            The name of the entrypoint.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.CombinedImageSampler">
            <summary>
            Represents the associated IDs of a combined image sampler created by SPIRV-Cross for backends which do not support seperate images/samplers. 
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CombinedImageSampler.combined_id">
            <summary>
            The ID of the sampler2D variable.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CombinedImageSampler.image_id">
            <summary>
            The ID of the texture2D variable.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.CombinedImageSampler.sampler_id">
            <summary>
            The ID of the sampler variable.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.SpecializationConstant">
            <summary>
            Represents a SPIR-V specialization constant.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.SpecializationConstant.id">
            <summary>
            The ID of the specialization constant.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.SpecializationConstant.constant_id">
            <summary>
            The constant ID of the constant, used in Vulkan during pipeline creation.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.BufferRange">
            <summary>
            Represents the range of shader buffer objects.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.BufferRange.index">
            <summary>
            Buffer index. 
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.BufferRange.offset">
            <summary>
            Buffer offset.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.BufferRange.range">
            <summary>
            Buffer range.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.Type">
            <summary>
            <para>Wraps SPIRV-Cross type reflection functionality provided by <see cref="T:SPIRVCross.NET.NativeBindings.Compiler"/> into a type-safe and memory-safe object.</para>
            A <see cref="T:SPIRVCross.NET.Resources"/> instance provides access to shader type reflection information which can be used 
            in conjunction with a <see cref="T:SPIRVCross.NET.Reflector"/> to query or modify names, offsets, vector sizes, layouts, image information, and more. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.BaseTypeID">
            <summary>
            This ID can be used to get the underlying type of an object without decorations
            </summary>    
        </member>
        <member name="P:SPIRVCross.NET.Type.BaseType">
            <summary>
            Gets the underlying primitive value type of this type. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.MemberCount">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a struct, gets the number of member types it contains. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.BitWidth">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a vector or matrix, returns the width in bits of this type.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.VectorSize">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a vector or matrix, returns the vector size of this type.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.Columns">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a matrix, returns the columns it contains.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ArrayDimensions">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an array, returns the number of dimensions that were defined.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.StorageClass">
            <summary>
            Returns storage class information about this type.
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageSampledType">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, provides type information about the image samples. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageDimension">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, provides the number of dimensions the image has. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageIsDepth">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, determines if it is a depth image. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageArrayed">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, determines if the image is a hardware image array. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageMultisampled">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, determines if it is a multisampled image. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageIsStorage">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, determines if it is a storage image. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageStorageFormat">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a storage image, provides the storage format of the image. 
            </summary>
        </member>
        <member name="P:SPIRVCross.NET.Type.ImageAccessQualifier">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an image, provides the memory access qualifier of the image. 
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Type.ArrayDimensionIsLiteral(System.UInt32)">
            <summary>
            Array elements can be either specialization constants or specialization ops.
            This method can be used to determine if the dimension of an array is literal.
            If this method returns true, the element is a literal,
            otherwise, it's an expression, which must be resolved on demand.
            The actual size is not really known until runtime.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Type.GetArrayDimension(System.UInt32)">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is an array with multiple dimensions, gets the array information of a given dimension. This can be used with <see cref="P:SPIRVCross.NET.Type.ArrayDimensions"/> to iterate over the sub-arrays of this type. 
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.Type.GetMemberType(System.UInt32)">
            <summary>
            If this <see cref="T:SPIRVCross.NET.Type"/> is a struct, gets the member type at a given index. This can be used with <see cref="P:SPIRVCross.NET.Type.MemberCount"/> to iterate over the fields of this type.  
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.CPP.CPPCrossCompiler">
            <summary>
            <inheritdoc/>
            <para>Outputs cross-compiled C++ when calling Compile().</para>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.GLSL.Precision">
            <summary>
            GLSL precision level.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.Precision.Mediump">
            <summary>
            Medium (16-bit minimum) floating-point precision.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.Precision.Highp">
            <summary>
            High (24-bit minimum) floating-point precision.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.GLSL.GLSLCrossCompiler">
            <summary>
            <inheritdoc/>
            <para>Outputs cross-compiled GLSL when calling <see cref="M:SPIRVCross.NET.GLSL.GLSLCrossCompiler.Compile"/>.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCrossCompiler.glslOptions">
            <summary>
            GLSL-specific options to compile with.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.GLSL.GLSLCrossCompiler.FlattenBufferBlock(SPIRVCross.NET.VariableID)">
            <summary>
            <para>Legacy GLSL compatibility method.</para>
            <para>Takes a uniform or push constant variable and flattens it into a (i|u)vec4 array[N]; array instead.</para>
            <para>For this to work, all types in the block must be the same basic type, e.g. mixing vec2 and vec4 is fine, but
            mixing int and float is not.</para>
            The name of the uniform array will be the same as the interface block name.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.GLSL.GLSLCrossCompiler.Compile">
            <inheritdoc/>
        </member>
        <member name="T:SPIRVCross.NET.GLSL.GLSLCompilerOptions">
            <summary>
            GLSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.GLSL.GLSLCompilerOptions.#ctor">
            <summary>
            GLSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.version">
            <summary>
            The shading language version.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.ES">
            <summary>
            Emit the OpenGL ES shading language instead of desktop OpenGL.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.vulkanSemantics">
            <summary>
            <para>If true, Vulkan GLSL features are used instead of GL-compatible features.</para>
            Mostly useful for debugging SPIR-V files.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.separateShaderObjects">
            <summary>
            <para>If true, gl_PerVertex is explicitly redeclared in vertex, geometry and tessellation shaders.
            The members of gl_PerVertex is determined by which built-ins are declared by the shader.</para>
            This option is ignored in ES versions, as redeclaration in ES is not required, and it depends on a different extension
            (EXT_shader_io_blocks) which makes things a bit more fuzzy.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.enable420PackExtension">
            <summary>
            For older desktop GLSL targets than version 420, the
            GL_ARB_shading_language_420pack extensions is used to be able to support
            layout(binding) on UBOs and samplers.
            <para>If disabled on older targets, binding decorations will be stripped.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.emitPushConstantAsUniformBuffer">
            <summary>
            In non-Vulkan GLSL, emit push constant blocks as UBOs rather than plain uniforms.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.emitUniformBufferAsPlainUniforms">
            <summary>
            <para>Always emit uniform blocks as plain uniforms, regardless of the GLSL version, even when UBOs are supported.</para>
            Does not apply to shader storage or push constant blocks.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.forceFlattenedIoBlocks">
            <summary>
            In GLSL, force use of I/O block flattening, similar to
            what happens on legacy GLSL targets for blocks and structs.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.enableRowMajorLoadWorkaround">
            <summary>
            <para>Loading row-major matrices from UBOs on older AMD Windows OpenGL drivers is problematic.
            To load these types correctly, we must generate a wrapper dummy function whose only purpose is to
            ensure row_major decoration is actually respected.</para>
            This workaround may cause significant performance degeneration on some Android devices.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.ovrMultiviewViewCount">
            <summary>
            If non-zero, controls layout(num_views = N) in; in GL_OVR_multiview2.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.supportNonzeroBaseInstance">
            <summary>
            If true, the backend will assume that InstanceIndex will need to apply
            a base instance offset. Set to false if you know you will never use base instance
            functionality as it might remove some internal uniforms.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.defaultFloatPrecision">
            <summary>
            The default floating point precision to set in the GLSL source.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.GLSL.GLSLCompilerOptions.defaultIntPrecision">
            <summary>
            The default integer precision to set in the GLSL source.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.BindingFlags">
            <summary>
            Flags used by <see cref="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.SetResourceBindingFlags(SPIRVCross.NET.HLSL.BindingFlags)"/> 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.HLSLCrossCompiler">
            <summary>
            <inheritdoc/>
            <para>Outputs cross-compiled HLSL when calling <see cref="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.Compile"/>.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCrossCompiler.hlslOptions">
            <summary>
            HLSL-specific options to compile with.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.Compile">
            <inheritdoc/>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.SetRootConstantsLayout(SPIRVCross.NET.HLSL.RootConstants[])">
            <summary>
            Sets the custom root constant layout, which should be emitted
            when translating push constant ranges.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.AddVertexAttributeRemap(SPIRVCross.NET.HLSL.VertexAttributeRemap[])">
            <summary>
            Adds an array of remaps to convert a vertex layout location into an HLSL semantic.  
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.RemapNumWorkgroupsBuiltin">
            <summary>
            <para>This is a special HLSL workaround for the NumWorkGroups builtin.</para>
            <para>This does not exist in HLSL, so the calling application must create a dummy cbuffer in
            which the application will store this builtin.</para>
            <para>The cbuffer layout will be:</para>
                <para>cbuffer SPIRV_Cross_NumWorkgroups : register(b#, space#) { uint3 SPIRV_Cross_NumWorkgroups_count; };</para>
            <para>This must be called before compile().</para>
            The function returns 0 if NumWorkGroups builtin is not statically used in the shader from the current entry point.
            If non-zero, this returns the variable ID of a cbuffer which corresponds to
            the cbuffer declared above. 
            <para>By default, no binding or descriptor set decoration is set,
            so the calling application should declare explicit bindings on this ID before calling compile().</para>
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.SetResourceBindingFlags(SPIRVCross.NET.HLSL.BindingFlags)">
            <summary>
            Controls how resource bindings are declared in the output HLSL.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.AddResourceBinding(SPIRVCross.NET.HLSL.ResourceBinding@)">
            <summary>
            resource is a resource binding to indicate the HLSL CBV, SRV, UAV or sampler binding to use for a particular SPIR-V description set and binding. 
            If resource bindings are provided, IsHlslResourceBindingUsed() will return true after calling compile() if
            the set/binding combination was used by the HLSL code.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCrossCompiler.IsResourceUsed(SPIRVCross.NET.ExecutionModel,System.UInt32,System.UInt32)">
            <summary>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.HLSLCompilerOptions">
            <summary>
            HLSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.HLSLCompilerOptions.#ctor">
            <summary>
            HLSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.shaderModel">
            <summary>
            The HLSL shader model to target.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.pointSizeCompat">
            <summary>
            Allows the PointSize builtin in SM 4.0+, and ignores it, as PointSize is not supported in SM 4+.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.pointCoordCompat">
            <summary>
            Allows the PointCoord builtin, returns float2(0.5, 0.5), as PointCoord is not supported in HLSL.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.supportNonzeroBaseVertexBaseInstance">
            <summary>
            <para>If true, the backend will assume that VertexIndex and InstanceIndex will need to apply
            a base offset, and you will need to fill in a cbuffer with offsets.</para>
            Set to false if you know you will never use base instance or base vertex
            functionality as it might remove an internal cbuffer.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.forceStorageBufferAsUav">
            <summary>
            <para>Forces a storage buffer to always be declared as UAV, even if the readonly decoration is used.
            By default, a readonly storage buffer will be declared as ByteAddressBuffer (SRV) instead.</para>
            Alternatively, use SetHlslForceStorageBufferAsUav() to specify individually.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.nonwritableUAVTextureAsSRV">
            <summary>
            Forces any storage image type marked as NonWritable to be considered an SRV instead.
            For this to work with function call parameters, NonWritable must be considered to be part of the type system
            so that NonWritable image arguments are also translated to Texture rather than RWTexture.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.enable16bitTypes">
            <summary>
            <para>Enables native 16-bit types. Needs SM 6.2.
            Uses half/int16_t/uint16_t instead of min16* types.</para>
            Also adds support for 16-bit load-store from (RW)ByteAddressBuffer.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.flattenMatrixVertexInputSemantics">
            <summary>
            <para>If matrices are used as IO variables, flatten the attribute declaration to use
            TEXCOORD{N,N+1,N+2,...} rather than TEXCOORDN_{0,1,2,3}.</para>
            If AddVertexAttributeRemap() is used and this feature is used,
            the semantic name will be queried once per active location.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.useEntryPointName">
            <summary>
            Rather than emitting main() for the entry point, use the name in SPIR-V.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.HLSL.HLSLCompilerOptions.preserveStructuredBuffers">
            <summary>
            <para>Preserve (RW)StructuredBuffer types if the input source was HLSL.</para>
            This relies on UserTypeGOOGLE to encode the buffer type either as "structuredbuffer" or "rwstructuredbuffer"
            whereas the type can be extended with an optional subtype, e.g. "structuredbuffer:int".
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.RootConstants">
             <summary>
             <para>Specifying a root constant (d3d12) or push constant range (vulkan).</para>
            
             `start` and `end` denotes the range of the root constant in bytes.
             Both values need to be multiple of 4.
             </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.VertexAttributeRemap">
            <summary>
            Interface which remaps vertex inputs to a fixed semantic name to make linking easier.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.ResourceBindingMapping">
            <summary>
            A mapping for the register space and binding of a <see cref="T:SPIRVCross.NET.HLSL.ResourceBinding"/>'s resource types. 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.HLSL.ResourceBinding">
             <summary>
             <para>By matching stage, desc_set and binding for a SPIR-V resource,
             register bindings are set based on whether the HLSL resource is a
             CBV, UAV, SRV or Sampler. A single binding in SPIR-V might contain multiple
             resource types, e.g. COMBINED_IMAGE_SAMPLER, and SRV/Sampler bindings will be used respectively.</para>
             <para>On SM 5.0 and lower, register_space is ignored.</para>
            
             To remap a push constant block which does not have any desc_set/binding associated with it,
             use ResourceBindingPushConstant{DescriptorSet,Binding} as values for desc_set/binding.
             For deeper control of push constants, SetRootConstantLayouts() can be used instead.
             </summary>
        </member>
        <member name="M:SPIRVCross.NET.HLSL.ResourceBinding.#ctor">
             <summary>
             <para>By matching stage, desc_set and binding for a SPIR-V resource,
             register bindings are set based on whether the HLSL resource is a
             CBV, UAV, SRV or Sampler. A single binding in SPIR-V might contain multiple
             resource types, e.g. COMBINED_IMAGE_SAMPLER, and SRV/Sampler bindings will be used respectively.</para>
             <para>On SM 5.0 and lower, register_space is ignored.</para>
            
             To remap a push constant block which does not have any desc_set/binding associated with it,
             use ResourceBindingPushConstant{DescriptorSet,Binding} as values for desc_set/binding.
             For deeper control of push constants, SetRootConstantLayouts() can be used instead.
             </summary>
        </member>
        <member name="T:SPIRVCross.NET.Json.JsonReflector">
            <summary>
            <inheritdoc/>
            <para>Outputs reflection info in JSON notation instead of standard format.</para>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.Platform">
            <summary>
            Target Metal platforms.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.IndexType">
            <summary>
            Index types used by the SPIR-V to Metal compiler. 
            </summary>
            <remarks>
            This enumeration is under the MSL namespace as only the Metal compiler makes use of index types.
            </remarks>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ShaderVariableFormat">
            <summary>
            Indicates the format of a shader interface variable. Currently limited to specifying
            if the input is an 8-bit unsigned integer, 16-bit unsigned integer, or
            some other format.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ShaderVariableRate">
            <summary>
            Indicates the rate at which a variable changes value, one of: per-vertex,
            per-primitive, or per-patch.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerCoord">
            <summary>
            MSL sampler coordinate modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerFilter">
            <summary>
            MSL sampler filter modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerMipFilter">
            <summary>
            MSL mipmap sampler filter modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerAddress">
            <summary>
            MSL sampler address modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerCompareFunc">
            <summary>
            MSL sampler compare function modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerBorderColor">
            <summary>
            MSL sampler border color. Used with a sampler that has an address mode of <see cref="F:SPIRVCross.NET.MSL.SamplerAddress.ClampToBorder"/>. 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.FormatResolution">
            <summary>
            MSL format resolutions.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ChromaLocation">
            <summary>
            MSL chroma location types.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ComponentSwizzle">
            <summary>
            MSL component swizzle types. Used by <see cref="T:SPIRVCross.NET.MSL.SamplerYCBCRConversion"/>. 
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerYCBCRModelConversion">
            <summary>
            MSL Y'CbCr sampler model conversion modes.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerYCBCRRange">
            <summary>
            MSL Y'CbCr sampler ranges.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ArgumentBuffersTier">
            <summary>
            Defines Metal argument buffer tier levels.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.MSLCrossCompiler">
            <summary>
            <inheritdoc/>
            <para>Outputs cross-compiled MSL when calling <see cref="M:SPIRVCross.NET.MSL.MSLCrossCompiler.Compile"/>.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCrossCompiler.metalOptions">
            <summary>
            MSL-specific options to compile with.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.Compile">
            <inheritdoc/>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.IsRasterizationDisabled">
            <summary>
            Provide feedback to calling API to allow runtime to disable pipeline
            rasterization if vertex shader requires rasterization to be disabled.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.NeedsSwizzleBuffer">
            <summary>
            Provide feedback to calling API to allow it to pass an auxiliary
            swizzle buffer if the shader needs it.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.NeedsBufferSizeBuffer">
            <summary>
            Provide feedback to calling API to allow it to pass a buffer
            containing STORAGE_BUFFER buffer sizes to support OpArrayLength.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.NeedsOutputBuffer">
            <summary>
            Provide feedback to calling API to allow it to pass an output
            buffer if the shader needs it.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.NeedsPatchOutputBuffer">
            <summary>
            Provide feedback to calling API to allow it to pass a patch output
            buffer if the shader needs it.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.NeedsInputThreadgroupMem">
            <summary>
            Provide feedback to calling API to allow it to pass an input threadgroup
            buffer if the shader needs it.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddResourceBinding(SPIRVCross.NET.MSL.ResourceBinding@)">
            <summary>
            resource is a resource binding to indicate the MSL buffer,
            texture or sampler index to use for a particular SPIR-V description set
            and binding. If resource bindings are provided,
            IsResourceBindingUsed() will return true after calling compile() if
            the set/binding combination was used by the MSL code.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddShaderInput(SPIRVCross.NET.MSL.ShaderInterfaceVar@)">
            <summary>
            input is a shader interface variable description used to fix up shader input variables.
            If shader inputs are provided, IsShaderInputUsed() will return true after
            calling compile() if the location were used by the MSL code.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddShaderOutput(SPIRVCross.NET.MSL.ShaderInterfaceVar@)">
            <summary>
            output is a shader interface variable description used to fix up shader output variables.
            If shader outputs are provided, IsShaderOutputUsed() will return true after
            calling compile() if the location were used by the MSL code.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddDiscreteDescriptorSet(System.UInt32)">
            <summary>
            When using MSL argument buffers, we can force "classic" MSL 1.0 binding schemes for certain descriptor sets.
            This corresponds to VK_KHR_push_descriptor in Vulkan.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.SetArgumentBufferDeviceAddressSpace(System.UInt32,System.Boolean)">
            <summary>
            If an argument buffer is large enough, it may need to be in the device storage space rather than
            constant. Opt-in to this behavior here on a per set basis.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.IsShaderInputUsed(System.UInt32)">
            <summary>
            Query after compilation is done. This allows you to check if an input location was used by the shader.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.IsShaderOutputUsed(System.UInt32)">
            <summary>
            Query after compilation is done. This allows you to check if an output location were used by the shader.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.IsResourceUsed(SPIRVCross.NET.ExecutionModel,System.UInt32,System.UInt32)">
            <summary>
            NOTE: Only resources which are remapped using AddResourceBinding() will be reported here.
            Constexpr samplers are always assumed to be emitted.
            No specific MSLResourceBinding remapping is required for constexpr samplers as long as they are remapped
            by RemapConstexprSampler(_by_binding).
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.RemapConstexprSampler(SPIRVCross.NET.VariableID,SPIRVCross.NET.MSL.ConstexprSampler@)">
            <summary>
            <para>Remap a sampler with ID to a constexpr sampler.</para>
            <para>Older iOS targets must use constexpr samplers in certain cases (PCF),
            so a static sampler must be used.</para>
            <para>The sampler will not consume a binding, but be declared in the entry point as a constexpr sampler.
            This can be used on both combined image/samplers (sampler2D) or standalone samplers.</para>
            <para>The remapped sampler must not be an array of samplers.</para>
            Prefer RemapConstexprSamplerByBinding unless you're also doing reflection anyways.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.RemapConstexprSamplerByBinding(System.UInt32,System.UInt32,SPIRVCross.NET.MSL.ConstexprSampler@)">
            <summary>
            Same as RemapConstexprSampler, except you provide set/binding, rather than variable ID.
            Remaps based on ID take priority over set/binding remaps.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.RemapConstexprSamplerYCBCR(SPIRVCross.NET.VariableID,SPIRVCross.NET.MSL.ConstexprSampler@,SPIRVCross.NET.MSL.SamplerYCBCRConversion@)">
            <summary>
            Equivalent to RemapConstexprSampler, but performs sampler Y'CbCr conversion beforehand.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.RemapConstexprSamplerByBindingYCBCR(System.UInt32,System.UInt32,SPIRVCross.NET.MSL.ConstexprSampler@,SPIRVCross.NET.MSL.SamplerYCBCRConversion@)">
            <summary>
            Equivalent to RemapConstexprSamplerByBinding, but performs sampler Y'CbCr conversion beforehand.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.SetFragmentOutputComponents(System.UInt32,System.UInt32)">
            <summary>
            If using MSLCompilerOptions.padFragmentOutputComponents, override the number of components we expect
            to use for a particular location. The default is 4 if number of components is not overridden.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.GetAutomaticResourceBinding(SPIRVCross.NET.VariableID)">
            <summary>
            <para>This must only be called after a successful call to Compile().</para>
            <para>For a variable resource ID obtained through reflection API, report the automatically assigned resource index.</para>
            <para>If the descriptor set was part of an argument buffer, report the [[id(N)]],
            or [[buffer/texture/sampler]] binding for other resources.</para>
            <para>If the resource was a combined image sampler, report the image binding here,
            use the _secondary version of this call to query the sampler half of the resource.</para>
            If no binding exists, -1 is returned.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.GetAutomaticResourceBindingSecondary(SPIRVCross.NET.VariableID)">
            <summary>
            Same as GetAutomaticResourceBinding, but should only be used for combined image samplers, in which case the
            sampler's binding is returned instead. For any other resource type, -1 is returned.
            Secondary bindings are also used for the auxillary image atomic buffer.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddDynamicBuffer(System.UInt32,System.UInt32,System.UInt32)">
            <summary>
            <para>descSet and binding are the SPIR-V descriptor set and binding of a buffer resource in this shader.</para>
            <para>index is the index within the dynamic offset buffer to use.</para> 
            This function marks that resource as using a dynamic offset (VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
            or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC). This function only has any effect if argument buffers
            are enabled. If so, the buffer will have its address adjusted at the beginning of the shader with
            an offset taken from the dynamic offset buffer.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.AddInlineUniformBlock(System.UInt32,System.UInt32)">
            <summary>
            descSet and binding are the SPIR-V descriptor set and binding of a buffer resource
            in this shader. This function marks that resource as an inline uniform block
            (VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT). This function only has any effect if argument buffers
            are enabled. If so, the buffer block will be directly embedded into the argument
            buffer, instead of being referenced indirectly via pointer.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.SetCombinedSamplerSuffix(System.String)">
            <summary>
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCrossCompiler.GetCombinedSamplerSuffix">
            <summary>
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.MSLCompilerOptions">
            <summary>
            MSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.MSLCompilerOptions.#ctor">
            <summary>
            MSL specific SPIR-V cross-compilation options
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.platform">
            <summary>
            Target Metal platform.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.msl_version">
            <summary>
            Metal shading language version. Tuple stores version as (major, minor, patch).
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.argumentBuffers">
            <summary>
            Enable use of Metal argument buffers.
            MSL 2.0 must also be enabled.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.argumentBuffersTier">
            <summary>
            <para>When using Metal argument buffers, indicates the Metal argument buffer tier level supported by the Metal platform.</para>
            <para>Ignored when Options::argument_buffers is disabled.</para>
            <para>- Tier1 supports writable images on macOS, but not on iOS.</para>
            <para>- Tier2 supports writable images on macOS and iOS, and higher resource count limits.</para>
            Tier capabilities based on recommendations from Apple engineering.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.enableBaseIndexZero">
            <summary>
            Ensures vertex and instance indices start at zero. This reflects the behavior of HLSL with SV_VertexID and SV_InstanceID.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.padFragmentOutputComponents">
            <summary>
            Fragment output in MSL must have at least as many components as the render pass.
            Adds support to explicitly pad out components.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.IOSSupportBaseVertexInstance">
            <summary>
            Specifies whether the iOS target version supports the [[base_vertex]] and [[base_instance]] attributes.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.useFramebufferFetchSubpasses">
            <summary>
            Use Metal's native frame-buffer fetch API for subpass inputs.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.invariantFloatMath">
            <summary>
            Enables use of "fma" intrinsic for invariant float math
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.emulateCubeArray">
            <summary>
            Emulate texturecube_array with texture2d_array for iOS where this type is not available
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.enableDecorationBinding">
            <summary>
            Allow user to enable decoration binding
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.textureBufferNative">
            <summary>
            Requires MSL 2.1, use the native support for texel buffers.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.forceActiveArgumentBufferResources">
            <summary>
            <para>Forces all resources which are part of an argument buffer to be considered active.</para>
            This ensures ABI compatibility between shaders where some resources might be unused,
            and would otherwise declare a different IAB.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.forceNativeArrays">
            <summary>
            <para>Forces the use of plain arrays, which works around certain driver bugs on certain versions
            of Intel Macbooks. See https://github.com/KhronosGroup/SPIRV-Cross/issues/1210.</para>
            May reduce performance in scenarios where arrays are copied around as value-types.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.enableClipDistanceUserVarying">
            <summary>
            If a shader writes clip distance, also emit user varyings which
            can be read in subsequent stages.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.multiPatchWorkgroup">
            <summary>
            In a tessellation control shader, assume that more than one patch can be processed in a
            single workgroup. This requires changes to the way the InvocationId and PrimitiveId
            builtins are processed, but should result in more efficient usage of the GPU.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.rawBufferTeseInput">
            <summary>
            Use storage buffers instead of vertex-style attributes for tessellation evaluation
            input. This may require conversion of inputs in the generated post-tessellation
            vertex shader, but allows the use of nested arrays.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.vertexForTessellation">
            <summary>
            If set, a vertex shader will be compiled as part of a tessellation pipeline.
            It will be translated as a compute kernel, so it can use the global invocation ID
            to index the output buffer.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.arrayedSubpassInput">
            <summary>
            Assume that SubpassData images have multiple layers. Layered input attachments
            are addressed relative to the Layer output from the vertex pipeline. 
            <para>This option has no effect with multiview, since all input attachments are assumed to be layered
            and will be addressed using the current ViewIndex.</para>
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.IOSUseSimdgroupFunctions">
            <summary>
            Whether to use SIMD-group or quadgroup functions to implement group non-uniform
            operations. Some GPUs on iOS do not support the SIMD-group functions, only the
            quadgroup functions.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.emulateSubgroups">
            <summary>
            If set, the subgroup size will be assumed to be one, and subgroup-related
            builtins and operations will be emitted accordingly. This mode is intended to
            be used by MoltenVK on hardware/software configurations which do not provide
            sufficient support for subgroups.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.fixedSubgroupSize">
            <summary>
            <para>If nonzero, a fixed subgroup size to assume. Metal, similarly to VK_EXT_subgroup_size_control,
            allows the SIMD-group size (aka thread execution width) to vary depending on
            register usage and requirements. In certain circumstances--for example, a pipeline
            in MoltenVK without VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT--
            this is undesirable.</para> 
            This fixes the value of the SubgroupSize builtin, instead of
            mapping it to the Metal builtin [[thread_execution_width]]. If the thread
            execution width is reduced, the extra invocations will appear to be inactive.
            If zero, the SubgroupSize will be allowed to vary, and the builtin will be mapped
            to the Metal [[thread_execution_width]] builtin.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.vertexIndexType">
            <summary>
            The type of index in the index buffer, if present. For a compute shader, Metal
            requires specifying the indexing at pipeline creation, rather than at draw time
            as with graphics pipelines. This means we must create three different pipelines,
            for no indexing, 16-bit indices, and 32-bit indices. Each requires different
            handling for the gl_VertexIndex builtin. We may as well, then, create three
            different shaders for these three scenarios.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.forceSampleRateShading">
            <summary>
            If set, a dummy [[sample_id]] input is added to a fragment shader if none is present.
            This will force the shader to run at sample rate, assuming Metal does not optimize
            the extra threads away.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.manualHelperInvocationUpdates">
            <summary>
            <para>If set, gl_HelperInvocation will be set manually whenever a fragment is discarded.</para>
            Some Metal devices have a bug where simd_is_helper_thread() does not return true
            after a fragment has been discarded. This is a workaround that is only expected to be needed
            until the bug is fixed in Metal; it is provided as an option to allow disabling it when that occurs.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.checkDiscardedFragStores">
            <summary>
            <para>If set, extra checks will be emitted in fragment shaders to prevent writes
            from discarded fragments.</para>
            Some Metal devices have a bug where writes to storage resources
            from discarded fragment threads continue to occur, despite the fragment being
            discarded. This is a workaround that is only expected to be needed until the
            bug is fixed in Metal; it is provided as an option so it can be enabled
            only when the bug is present.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.sampleDrefLodArrayAsGrad">
            <summary>
            <para>If set, Lod operands to OpImageSample*DrefExplicitLod for 1D and 2D array images
            will be implemented using a gradient instead of passing the level operand directly.</para>
            Some Metal devices have a bug where the level() argument to depth2d_array(T)::sample_compare()
            in a fragment shader is biased by some unknown amount, possibly dependent on the
            partial derivatives of the texture coordinates. This is a workaround that is only
            expected to be needed until the bug is fixed in Metal; it is provided as an option
            so it can be enabled only when the bug is present.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.readwriteTextureFences">
            <summary>
            <para>MSL doesn't guarantee coherence between writes and subsequent reads of read_write textures.
            This inserts fences before each read of a read_write texture to ensure coherency.</para>
            <para>If you're sure you never rely on this, you can set this to false for a possible performance improvement.</para>
            Note: Only Apple's GPU compiler takes advantage of the lack of coherency, so make sure to test on Apple GPUs if you disable this.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.replaceRecursiveInputs">
            <summary>
            <para>Metal 3.1 introduced a Metal regression bug which causes infinite recursion during 
            Metal's analysis of an entry point input structure that is itself recursive. Enabling
            this option will replace the recursive input declaration with a alternate variable of
            type void*, and then cast to the correct type at the top of the entry point function.</para>
            The bug has been reported to Apple, and will hopefully be fixed in future releases.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.agxManualCubeGradFixup">
            <summary>
            If set, manual fixups of gradient vectors for cube texture lookups will be performed.
            All released Apple Silicon GPUs to date behave incorrectly when sampling a cube texture
            with explicit gradients. They will ignore one of the three partial derivatives based
            on the selected major axis, and expect the remaining derivatives to be partially
            transformed.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.MSLCompilerOptions.forceFragmentWithSideEffectsExecution">
            <summary>
            <para>Metal will discard fragments with side effects under certain circumstances prematurely.</para>
            <para>Example: CTS test dEQP-VK.fragment_operations.early_fragment.discard_no_early_fragment_tests_depth
            Test will render a full screen quad with varying depth [0,1] for each fragment.</para>
            <para>Each fragment will do an operation with side effects, modify the depth value and
            discard the fragment. The test expects the fragment to be run due to:
            https://registry.khronos.org/vulkan/specs/1.0-extensions/html/vkspec.html#fragops-shader-depthreplacement
            which states that the fragment shader must be run due to replacing the depth in shader.
            However, Metal may prematurely discards fragments without executing them
            (I believe this to be due to a greedy optimization on their end) making the test fail.</para>
            This option enforces fragment execution for such cases where the fragment has operations
            with side effects. Provided as an option hoping Metal will fix this issue in the future.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ShaderInterfaceVar">
            <summary>
            Description for a shader interface variable.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.ShaderInterfaceVar.#ctor">
            <summary>
            Description for a shader interface variable.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.ShaderInterfaceVar.location">
            <summary>
            Variable location.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.ShaderInterfaceVar.format">
            <summary>
            Variable format.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.ShaderInterfaceVar.builtin">
            <summary>
            Variable builtin type.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.ShaderInterfaceVar.vecsize">
            <summary>
            The variable's vector size if applicable.
            </summary>
        </member>
        <member name="F:SPIRVCross.NET.MSL.ShaderInterfaceVar.rate">
            <summary>
            The rate at which a variable changes in value.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ResourceBinding">
            <summary>
            Describes an MSL resource binding.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.ResourceBinding.#ctor">
            <summary>
            Describes an MSL resource binding.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.ConstexprSampler">
            <summary>
            Defines an MSL constant-expression texture sampler.
            </summary>
        </member>
        <member name="M:SPIRVCross.NET.MSL.ConstexprSampler.#ctor">
            <summary>
            Defines an MSL constant-expression texture sampler.
            </summary>
        </member>
        <member name="T:SPIRVCross.NET.MSL.SamplerYCBCRConversion">
            <summary>
            Maps to the sampler Y'CbCr conversion-related portions of ConstexprSampler
            </summary>
        </member>
    </members>
</doc>
