Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
0
 public static IUniform <T> Create(string name,
                                   BufferUsage bufferUsage,
                                   ShaderStages shaderStages,
                                   ResourceLayoutElementOptions options = ResourceLayoutElementOptions.None)
 {
     return(new Uniform <T>(name, bufferUsage, shaderStages, options));
 }
Esempio n. 3
0
        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>();
            }
        }
Esempio n. 4
0
 /// <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;
 }
Esempio n. 5
0
 /// <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;
 }
Esempio n. 6
0
        internal Uniform(string name,
                         BufferUsage bufferUsage,
                         ShaderStages shaderStages,
                         ResourceLayoutElementOptions options)
        {
            BufferUsage  = bufferUsage;
            ShaderStages = shaderStages;

            ResourceLayoutElementDescription = new ResourceLayoutElementDescription(
                name,
                ResourceKind.UniformBuffer,
                ShaderStages,
                options);
        }