Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_EXT_vertex_attribute_divisor - device extension
VK_EXT_vertex_attribute_divisor
- Name String
VK_EXT_vertex_attribute_divisor
- Extension Type
- Device extension
- Registered Extension Number
- 191
- Revision
- 3
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2 or Version 1.1
- Contact
Other Extension Metadata
- Last Modified Date
- 2018-08-03
- IP Status
- No known IP claims.
- Contributors
- Vikram Kushwaha, NVIDIA
- Faith Ekstrand, Intel
Description
This extension allows instance-rate vertex attributes to be repeated for certain number of instances instead of advancing for every instance when instanced rendering is enabled.
New Structures
Extending
PhysicalDeviceFeatures2
,DeviceCreateInfo
:Extending
PhysicalDeviceProperties2
:Extending
PipelineVertexInputStateCreateInfo
:
New Enum Constants
Issues
1) What is the effect of a non-zero value for firstInstance
?
RESOLVED: The Vulkan API should follow the OpenGL convention and
offset attribute fetching by firstInstance
while computing vertex
attribute offsets.
2) Should zero be an allowed divisor?
RESOLVED: Yes. A zero divisor means the vertex attribute is repeated for all instances.
Examples
To create a vertex binding such that the first binding uses instanced rendering and the same attribute is used for every 4 draw instances, an application could use the following set of structures:
const VkVertexInputBindingDivisorDescriptionEXT divisorDesc = { .binding = 0, .divisor = 4 }; const VkPipelineVertexInputDivisorStateCreateInfoEXT divisorInfo = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, .pNext = NULL, .vertexBindingDivisorCount = 1, .pVertexBindingDivisors = &divisorDesc } const VkVertexInputBindingDescription binding = { .binding = 0, .stride = sizeof(Vertex), .inputRate = VK_VERTEX_INPUT_RATE_INSTANCE }; const VkPipelineVertexInputStateCreateInfo viInfo = { .sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO, .pNext = &divisorInfo, ... }; //...
Version History
Revision 1, 2017-12-04 (Vikram Kushwaha)
- First Version
Revision 2, 2018-07-16 (Faith Ekstrand)
- Adjust the interaction between
divisor
andfirstInstance
to match the OpenGL convention. - Disallow divisors of zero.
- Adjust the interaction between
Revision 3, 2018-08-03 (Vikram Kushwaha)
- Allow a zero divisor.
- Add a physical device features structure to query/enable this feature.
See Also
PhysicalDeviceVertexAttributeDivisorFeaturesEXT
,
PhysicalDeviceVertexAttributeDivisorPropertiesEXT
,
PipelineVertexInputDivisorStateCreateInfoEXT
,
VertexInputBindingDivisorDescriptionEXT
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- data VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescriptionEXT {}
- data PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfoEXT {}
- data PhysicalDeviceVertexAttributeDivisorPropertiesEXT = PhysicalDeviceVertexAttributeDivisorPropertiesEXT {}
- data PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeaturesEXT {}
- type EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3
- pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall a. Integral a => a
- type EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor"
- pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data VertexInputBindingDivisorDescriptionEXT Source #
VkVertexInputBindingDivisorDescriptionEXT - Structure specifying a divisor used in instanced rendering
Description
If this structure is not used to define a divisor value for an attribute, then the divisor has a logical default value of 1.
Valid Usage
-
binding
must be less thanPhysicalDeviceLimits
::maxVertexInputBindings
-
If the
vertexAttributeInstanceRateZeroDivisor
feature is not enabled,divisor
must not be0
-
If the
vertexAttributeInstanceRateDivisor
feature is not enabled,divisor
must be1
-
divisor
must be a value between0
andPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive -
VertexInputBindingDescription
::inputRate
must be of typeVERTEX_INPUT_RATE_INSTANCE
for thisbinding
See Also
VK_EXT_vertex_attribute_divisor,
PipelineVertexInputDivisorStateCreateInfoEXT
VertexInputBindingDivisorDescriptionEXT | |
|
Instances
data PipelineVertexInputDivisorStateCreateInfoEXT Source #
VkPipelineVertexInputDivisorStateCreateInfoEXT - Structure specifying vertex attributes assignment during instanced rendering
Valid Usage (Implicit)
See Also
VK_EXT_vertex_attribute_divisor,
StructureType
,
VertexInputBindingDivisorDescriptionEXT
PipelineVertexInputDivisorStateCreateInfoEXT | |
|
Instances
data PhysicalDeviceVertexAttributeDivisorPropertiesEXT Source #
VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - Structure describing max value of vertex attribute divisor that can be supported by an implementation
Description
If the PhysicalDeviceVertexAttributeDivisorPropertiesEXT
structure is
included in the pNext
chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2
,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Instances
data PhysicalDeviceVertexAttributeDivisorFeaturesEXT Source #
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - Structure describing if fetching of vertex attribute may be repeated for instanced rendering
Members
This structure describes the following features:
Description
If the PhysicalDeviceVertexAttributeDivisorFeaturesEXT
structure is
included in the pNext
chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2
,
it is filled in to indicate whether each corresponding feature is
supported. PhysicalDeviceVertexAttributeDivisorFeaturesEXT
can also
be used in the pNext
chain of DeviceCreateInfo
to selectively enable these features.
Valid Usage (Implicit)
See Also
PhysicalDeviceVertexAttributeDivisorFeaturesEXT | |
|
Instances
pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION :: forall a. Integral a => a Source #
type EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" Source #
pattern EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #