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

Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Description

Name

VK_KHR_fragment_shader_barycentric - device extension

VK_KHR_fragment_shader_barycentric

Name String
VK_KHR_fragment_shader_barycentric
Extension Type
Device extension
Registered Extension Number
323
Revision
1
Extension and Version Dependencies
  • Requires support for Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2 to be enabled for any device-level functionality
Contact
  • Stu Smith
Extension Proposal
VK_KHR_fragment_shader_barycentric

Other Extension Metadata

Last Modified Date
2022-03-10
IP Status
No known IP claims.
Interactions and External Dependencies
Contributors
  • Stu Smith, AMD
  • Tobias Hector, AMD
  • Graeme Leese, Broadcom
  • Jan-Harald Fredriksen, Arm
  • Slawek Grajewski, Intel
  • Pat Brown, NVIDIA
  • Hans-Kristian Arntzen, Valve
  • Contributors to the VK_NV_fragment_shader_barycentric specification

Description

This extension is based on the VK_NV_fragment_shader_barycentric extension, and adds support for the following SPIR-V extension in Vulkan:

The extension provides access to three additional fragment shader variable decorations in SPIR-V:

  • PerVertexKHR, which indicates that a fragment shader input will not have interpolated values, but instead must be accessed with an extra array index that identifies one of the vertices of the primitive producing the fragment
  • BaryCoordKHR, which indicates that the variable is a three-component floating-point vector holding barycentric weights for the fragment produced using perspective interpolation
  • BaryCoordNoPerspKHR, which indicates that the variable is a three-component floating-point vector holding barycentric weights for the fragment produced using linear interpolation

When using GLSL source-based shader languages, the following variables from GL_EXT_fragment_shader_barycentric map to these SPIR-V built-in decorations:

  • in vec3 gl_BaryCoordEXT;BaryCoordKHR
  • in vec3 gl_BaryCoordNoPerspEXT;BaryCoordNoPerspKHR

GLSL variables declared using the pervertexEXT GLSL qualifier are expected to be decorated with PerVertexKHR in SPIR-V.

New Structures

New Enum Constants

New Built-In Variables

New SPIR-V Decorations

New SPIR-V Capabilities

Issues

1) What are the interactions with MSAA and how are BaryCoordKHR and BaryCoordNoPerspKHR interpolated?

RESOLVED: The inputs decorated with BaryCoordKHR or BaryCoordNoPerspKHR may also be decorated with the Centroid or Sample qualifiers to specify interpolation, like any other fragment shader input. If shaderSampleRateInterpolationFunctions is enabled, the extended instructions InterpolateAtCentroid, InterpolateAtOffset, and InterpolateAtSample from the GLSL.std.450 may also be used with inputs decorated with BaryCoordKHR or BaryCoordNoPerspKHR.

Version History

  • Revision 1, 2022-03-10 (Stu Smith)

    • Initial revision

See Also

PhysicalDeviceFragmentShaderBarycentricFeaturesKHR, PhysicalDeviceFragmentShaderBarycentricPropertiesKHR

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

data PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source #

VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR - Structure describing barycentric support in fragment shaders that can be supported by an implementation

Members

This structure describes the following feature:

Description

See Barycentric Interpolation for more information.

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

Valid Usage (Implicit)

See Also

VK_KHR_fragment_shader_barycentric, Bool32, StructureType

Constructors

PhysicalDeviceFragmentShaderBarycentricFeaturesKHR 

Fields

  • fragmentShaderBarycentric :: Bool

    fragmentShaderBarycentric indicates that the implementation supports the BaryCoordKHR and BaryCoordNoPerspKHR SPIR-V fragment shader built-ins and supports the PerVertexKHR SPIR-V decoration on fragment shader input variables.

Instances

Instances details
Storable PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Show PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Eq PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

FromCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

ToCStruct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Zero PhysicalDeviceFragmentShaderBarycentricFeaturesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

data PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source #

VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR - Structure describing fragment shader barycentric limits of an implementation

Description

If the PhysicalDeviceFragmentShaderBarycentricPropertiesKHR 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_KHR_fragment_shader_barycentric, Bool32, StructureType

Constructors

PhysicalDeviceFragmentShaderBarycentricPropertiesKHR 

Fields

Instances

Instances details
Storable PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Show PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Eq PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

FromCStruct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

ToCStruct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

Zero PhysicalDeviceFragmentShaderBarycentricPropertiesKHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_fragment_shader_barycentric

type KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_KHR_fragment_shader_barycentric" Source #