VK_KHR_fragment_shader_barycentric
Other Extension Metadata
Last Modified Date
2022-03-10
IP Status
No known IP claims.
Interactions and External Dependencies
- This extension provides API support for
GL_EXT_fragment_shader_barycentric
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 fragmentBaryCoordKHR
, which indicates that the variable is a three-component floating-point vector holding barycentric weights for the fragment produced using perspective interpolationBaryCoordNoPerspKHR
, 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
- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:
- Extending VkPhysicalDeviceProperties2:
New Enum Constants
VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME
VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION
- Extending VkStructureType:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
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