Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Name
VK_NVX_multiview_per_view_attributes - device extension
VK_NVX_multiview_per_view_attributes
- Name String
VK_NVX_multiview_per_view_attributes
- Extension Type
- Device extension
- Registered Extension Number
- 98
- Revision
- 1
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_multiview
- Contact
Other Extension Metadata
- Last Modified Date
- 2017-01-13
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- This extension requires SPV_NVX_multiview_per_view_attributes
- This extension provides API support for GL_NVX_multiview_per_view_attributes
- This extension interacts with
VK_NV_viewport_array2
.
- Contributors
- Jeff Bolz, NVIDIA
- Daniel Koch, NVIDIA
Description
This extension adds a new way to write shaders to be used with multiview
subpasses, where the attributes for all views are written out by a
single invocation of the
pre-rasterization shader stages.
Related SPIR-V and GLSL extensions
SPV_NVX_multiview_per_view_attributes
and
GL_NVX_multiview_per_view_attributes
introduce per-view position and
viewport mask attributes arrays, and this extension defines how those
per-view attribute arrays are interpreted by Vulkan. Pipelines using
per-view attributes may only execute the
pre-rasterization shader stages
once for all views rather than once per-view, which reduces redundant
shading work.
A subpass creation flag controls whether the subpass uses this extension. A subpass must either exclusively use this extension or not use it at all.
Some Vulkan implementations only support the position attribute varying between views in the X component. A subpass can declare via a second creation flag whether all pipelines compiled for this subpass will obey this restriction.
Shaders that use the new per-view outputs (e.g. gl_PositionPerViewNV
)
must also write the non-per-view output (gl_Position
), and the
values written must be such that
gl_Position = gl_PositionPerViewNV[gl_ViewIndex]
for all views in the
subpass. Implementations are free to either use the per-view outputs or
the non-per-view outputs, whichever would be more efficient.
If VK_NV_viewport_array2
is not also supported and enabled, the
per-view viewport mask must not be used.
New Structures
New Enum Constants
NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION
Extending
StructureType
:Extending
SubpassDescriptionFlagBits
:
New Built-In Variables
New SPIR-V Capabilities
Examples
#version 450 core #extension GL_KHX_multiview : enable #extension GL_NVX_multiview_per_view_attributes : enable layout(location = 0) in vec4 position; layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf; void main() { // Output both per-view positions and gl_Position as a function // of gl_ViewIndex gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position; gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position; gl_Position = buf.mvpPerView[gl_ViewIndex] * position; }
Version History
Revision 1, 2017-01-13 (Jeff Bolz)
- Internal revisions
See Also
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
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 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {}
- type NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1
- pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: forall a. Integral a => a
- type NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes"
- pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
Documentation
data PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX Source #
VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - Structure describing multiview limits that can be supported by an implementation
Description
If the PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
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
PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX | |
|
Instances
pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION :: forall a. Integral a => a Source #
type NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" Source #
pattern NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #