/// <summary> /// Constructs a new ResourceLayoutElementDescription. /// </summary> /// <param name="name">The name of the element.</param> /// <param name="kind">The kind of resource.</param> /// <param name="stages">The <see cref="ShaderStages"/> in which this element is used.</param> public ResourceLayoutElementDescription(string name, ResourceKind kind, ShaderStages stages) { Name = name; Kind = kind; Stages = stages; Options = ResourceLayoutElementOptions.None; }
public static IUniform <T> Create(string name, BufferUsage bufferUsage, ShaderStages shaderStages, ResourceLayoutElementOptions options = ResourceLayoutElementOptions.None) { return(new Uniform <T>(name, bufferUsage, shaderStages, options)); }
internal static VkDescriptorType VdToVkDescriptorType(ResourceKind kind, ResourceLayoutElementOptions options) { bool dynamicBinding = (options & ResourceLayoutElementOptions.DynamicBinding) != 0; switch (kind) { case ResourceKind.UniformBuffer: return(dynamicBinding ? VkDescriptorType.UniformBufferDynamic : VkDescriptorType.UniformBuffer); case ResourceKind.StructuredBufferReadWrite: case ResourceKind.StructuredBufferReadOnly: return(dynamicBinding ? VkDescriptorType.StorageBufferDynamic : VkDescriptorType.StorageBuffer); case ResourceKind.TextureReadOnly: return(VkDescriptorType.SampledImage); case ResourceKind.TextureReadWrite: return(VkDescriptorType.StorageImage); case ResourceKind.Sampler: return(VkDescriptorType.Sampler); default: throw Illegal.Value <ResourceKind>(); } }
/// <summary> /// Constructs a new ResourceLayoutElementDescription. /// </summary> /// <param name="name">The name of the element.</param> /// <param name="kind">The kind of resource.</param> /// <param name="stages">The <see cref="ShaderStages"/> in which this element is used.</param> /// <param name="descCount">The number of descriptors to use.</param> public ResourceLayoutElementDescription(string name, ResourceKind kind, ShaderStages stages, uint descCount) { Name = name; Kind = kind; Stages = stages; Options = ResourceLayoutElementOptions.None; DescriptorCount = descCount; }
/// <summary> /// Constructs a new ResourceLayoutElementDescription. /// </summary> /// <param name="name">The name of the element.</param> /// <param name="kind">The kind of resource.</param> /// <param name="stages">The <see cref="ShaderStages"/> in which this element is used.</param> /// <param name="options">Miscellaneous resource options for this element.</param> public ResourceLayoutElementDescription( string name, ResourceKind kind, ShaderStages stages, ResourceLayoutElementOptions options) { Name = name; Kind = kind; Stages = stages; Options = options; DescriptorCount = 1; }
internal Uniform(string name, BufferUsage bufferUsage, ShaderStages shaderStages, ResourceLayoutElementOptions options) { BufferUsage = bufferUsage; ShaderStages = shaderStages; ResourceLayoutElementDescription = new ResourceLayoutElementDescription( name, ResourceKind.UniformBuffer, ShaderStages, options); }