vulkan-3.26.1: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_line_rasterization

Description

Name

VK_EXT_line_rasterization - device extension

VK_EXT_line_rasterization

Name String
VK_EXT_line_rasterization
Extension Type
Device extension
Registered Extension Number
260
Revision
1
Ratification Status
Not ratified
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 or Version 1.1
Special Use
Contact

Other Extension Metadata

Last Modified Date
2019-05-09
IP Status
No known IP claims.
Contributors
  • Jeff Bolz, NVIDIA
  • Allen Jensen, NVIDIA
  • Faith Ekstrand, Intel

Description

This extension adds some line rasterization features that are commonly used in CAD applications and supported in other APIs like OpenGL. Bresenham-style line rasterization is supported, smooth rectangular lines (coverage to alpha) are supported, and stippled lines are supported for all three line rasterization modes.

New Commands

New Structures

New Enums

New Enum Constants

Issues

1) Do we need to support Bresenham-style and smooth lines with more than one rasterization sample? i.e. the equivalent of glDisable(GL_MULTISAMPLE) in OpenGL when the framebuffer has more than one sample?

RESOLVED: Yes. For simplicity, Bresenham line rasterization carries forward a few restrictions from OpenGL, such as not supporting per-sample shading, alpha to coverage, or alpha to one.

Version History

  • Revision 1, 2019-05-09 (Jeff Bolz)

    • Initial draft

See Also

LineRasterizationModeEXT, PhysicalDeviceLineRasterizationFeaturesEXT, PhysicalDeviceLineRasterizationPropertiesEXT, PipelineRasterizationLineStateCreateInfoEXT, cmdSetLineStippleEXT

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

Documentation

cmdSetLineStippleEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> ("lineStippleFactor" ::: Word32)

lineStippleFactor is the repeat factor used in stippled line rasterization.

-> ("lineStipplePattern" ::: Word16)

lineStipplePattern is the bit pattern used in stippled line rasterization.

-> io () 

vkCmdSetLineStippleEXT - Set line stipple dynamically for a command buffer

Description

This command sets the line stipple state for subsequent drawing commands when drawing using shader objects, or when the graphics pipeline is created with DYNAMIC_STATE_LINE_STIPPLE_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates. Otherwise, this state is specified by the PipelineRasterizationLineStateCreateInfoEXT::lineStippleFactor and PipelineRasterizationLineStateCreateInfoEXT::lineStipplePattern values used to create the currently active pipeline.

Valid Usage

  • lineStippleFactor must be in the range [1,256]

Valid Usage (Implicit)

  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_line_rasterization, CommandBuffer

data PhysicalDeviceLineRasterizationFeaturesEXT Source #

VkPhysicalDeviceLineRasterizationFeaturesEXT - Structure describing the line rasterization features that can be supported by an implementation

Members

This structure describes the following features:

Description

If the PhysicalDeviceLineRasterizationFeaturesEXT 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. PhysicalDeviceLineRasterizationFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_line_rasterization, Bool32, StructureType

Constructors

PhysicalDeviceLineRasterizationFeaturesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Show PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Eq PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

FromCStruct PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

ToCStruct PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Zero PhysicalDeviceLineRasterizationFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

data PhysicalDeviceLineRasterizationPropertiesEXT Source #

VkPhysicalDeviceLineRasterizationPropertiesEXT - Structure describing line rasterization properties supported by an implementation

Description

If the PhysicalDeviceLineRasterizationPropertiesEXT 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

VK_EXT_line_rasterization, StructureType

Constructors

PhysicalDeviceLineRasterizationPropertiesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Show PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Eq PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

FromCStruct PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

ToCStruct PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Zero PhysicalDeviceLineRasterizationPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

data PipelineRasterizationLineStateCreateInfoEXT Source #

VkPipelineRasterizationLineStateCreateInfoEXT - Structure specifying parameters of a newly created pipeline line rasterization state

Description

If stippledLineEnable is FALSE, the values of lineStippleFactor and lineStipplePattern are ignored.

Valid Usage

Valid Usage (Implicit)

See Also

VK_EXT_line_rasterization, Bool32, LineRasterizationModeEXT, StructureType

Constructors

PipelineRasterizationLineStateCreateInfoEXT 

Fields

Instances

Instances details
Storable PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Show PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Eq PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

FromCStruct PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

ToCStruct PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Zero PipelineRasterizationLineStateCreateInfoEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

newtype LineRasterizationModeEXT Source #

Bundled Patterns

pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_DEFAULT_EXT is equivalent to LINE_RASTERIZATION_MODE_RECTANGULAR_EXT if PhysicalDeviceLimits::strictLines is TRUE, otherwise lines are drawn as non-strictLines parallelograms. Both of these modes are defined in Basic Line Segment Rasterization.

pattern LINE_RASTERIZATION_MODE_RECTANGULAR_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_RECTANGULAR_EXT specifies lines drawn as if they were rectangles extruded from the line

pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_BRESENHAM_EXT specifies lines drawn by determining which pixel diamonds the line intersects and exits, as defined in Bresenham Line Segment Rasterization.

pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT :: LineRasterizationModeEXT

LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT specifies lines drawn if they were rectangles extruded from the line, with alpha falloff, as defined in Smooth Lines.

Instances

Instances details
Storable LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Read LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Show LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Eq LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Ord LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

Zero LineRasterizationModeEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_line_rasterization

type EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" Source #

pattern EXT_LINE_RASTERIZATION_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #