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;→BaryCoordKHRin 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_NAMEVK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION- Extending VkStructureType:
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHRVK_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 the shaderSampleRateInterpolationFunctions feature 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