Up to three methods are available to the application to change the fragment shading rate:
Additionally, these rates can all be specified and combined in order to adjust the overall detail in the image at each point.
This functionality can be used to focus shading efforts where higher levels of detail are needed in some parts of a scene compared to others. This can be particularly useful in high resolution rendering, or for XR contexts.
This extension also adds support for the SPV_KHR_fragment_shading_rate extension which enables setting the primitive fragment shading rate, and allows querying the final shading rate from a fragment shader.
VK_KHR_fragment_shading_rateVK_KHR_create_renderpass2 or Version 1.2 and VK_KHR_get_physical_device_properties2 or Version 1.1SPV_KHR_fragment_shading_rate.GL_EXT_fragment_shading_rate| Modifier and Type | Field and Description |
|---|---|
| public static final int | VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
Extends |
| public static final int | VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
Extends |
| public static final long | VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
Extends |
| public static final int | VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
Extends |
| public static final int | VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
|
| public static final int | VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR
VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
|
| public static final int | VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR
VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
|
| public static final int | VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR
VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
|
| public static final int | VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
|
| public static final int | VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
Extends |
| public static final int | VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
Extends |
| public static final String | VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
The extension name. |
| public static final int | VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION
The extension specification version. |
| public static final int | VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
Extends |
| public static final int | VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
Extends |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public static void | nvkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, long pFragmentSize, long combinerOps)
Unsafe version of: |
| public static int | nvkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, long
a pointer to an integer related to the number of fragment shading rates available or queried, as described below. pFragmentShadingRateCount, long pFragmentShadingRates)Unsafe version of: |
| public static void | vkCmdSetFragmentShadingRateKHR(VkCommandBuffer
the command buffer into which the command will be recorded. commandBuffer, VkExtent2D specifies the pipeline fragment shading rate for subsequent drawing commands. pFragmentSize, IntBuffer specifies a combinerOps)VkFragmentShadingRateCombinerOpKHR determining how the pipeline, primitive, and attachment shading rates are combined for fragments generated by subsequent drawing commands.Set pipeline fragment shading rate and combiner operation dynamically for a command buffer. |
| public static void | vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, int[] combinerOps)
Array version of: |
| public static int | vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice
the handle to the physical device whose properties will be queried. physicalDevice, IntBuffer a pointer to an integer related to the number of fragment shading rates available or queried, as described below. pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR.either pFragmentShadingRatesNULL or a pointer to an array of VkPhysicalDeviceFragmentShadingRateKHR structures.Get available shading rates for a physical device. |
| public static int | vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, int[] pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR.
Array version of: |
| VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR | back to summary |
|---|---|
| public static final int VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR Extends | |
| VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR | back to summary |
|---|---|
| public static final int VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR Extends | |
| VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | back to summary |
|---|---|
| public static final long VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR Extends | |
| VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | back to summary |
|---|---|
| public static final int VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR Extends | |
| VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR | back to summary |
|---|---|
| public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
where If These operations are performed in a component-wise fashion. See Also
| |
| VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR | back to summary |
|---|---|
| public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
where If These operations are performed in a component-wise fashion. See Also
| |
| VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR | back to summary |
|---|---|
| public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
where If These operations are performed in a component-wise fashion. See Also
| |
| VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR | back to summary |
|---|---|
| public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
where If These operations are performed in a component-wise fashion. See Also
| |
| VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR | back to summary |
|---|---|
| public static final int VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR VkFragmentShadingRateCombinerOpKHR - Control how fragment shading rates are combined Description
where If These operations are performed in a component-wise fashion. See Also
| |
| VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR | back to summary |
|---|---|
| public static final int VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR Extends | |
| VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | back to summary |
|---|---|
| public static final int VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR Extends | |
| VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME | back to summary |
|---|---|
| public static final String VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME The extension name. | |
| VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION | back to summary |
|---|---|
| public static final int VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION The extension specification version. | |
| VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR | back to summary |
|---|---|
| public static final int VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR Extends | |
| VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR Extends Enum values:
| |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR Extends Enum values:
| |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR Extends Enum values:
| |
| VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR Extends Enum values:
| |
| VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR | back to summary |
|---|---|
| public static final int VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR Extends Enum values:
| |
| KHRFragmentShadingRate | back to summary |
|---|---|
| protected KHRFragmentShadingRate() | |
| nvkCmdSetFragmentShadingRateKHR | back to summary |
|---|---|
| public static void nvkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, long pFragmentSize, long combinerOps) Unsafe version of: | |
| nvkGetPhysicalDeviceFragmentShadingRatesKHR | back to summary |
|---|---|
| public static int nvkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, long pFragmentShadingRateCount, long pFragmentShadingRates) Unsafe version of:
| |
| vkCmdSetFragmentShadingRateKHR | back to summary | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| public static void vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, IntBuffer combinerOps) Set pipeline fragment shading rate and combiner operation dynamically for a command buffer. C SpecificationTo dynamically set the pipeline fragment shading rate and combiner operation, call:
DescriptionThis command sets the pipeline fragment shading rate and combiner operation for subsequent drawing commands when drawing using shader objects, or when the graphics pipeline is created with Valid Usage
Valid Usage (Implicit)
Host Synchronization
Command Properties
See Also
| |||||||||||
| vkCmdSetFragmentShadingRateKHR | back to summary |
|---|---|
| public static void vkCmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer, VkExtent2D pFragmentSize, int[] combinerOps) Array version of: | |
| vkGetPhysicalDeviceFragmentShadingRatesKHR | back to summary | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| public static int vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, IntBuffer pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR. Get available shading rates for a physical device. C SpecificationTo query available shading rates, call:
DescriptionIf The returned array of fragment shading rates must be ordered from largest For any entry in the array, the following rules also apply:
Implementations must support at least the following shading rates:
If NoteIncluding the {1,1} fragment size is done for completeness; it has no actual effect on the support of rendering without setting the fragment size. All sample counts and render pass transforms are supported for this rate. The returned set of fragment shading rates must be returned in the native (rotated) coordinate system. For rasterization using render pass NoteFor example, consider an implementation returning support for 4x2, but not 2x4 in the set of supported fragment shading rates. This means that for transforms Valid Usage (Implicit)
Return Codes
See Also
| |||||||||
| vkGetPhysicalDeviceFragmentShadingRatesKHR | back to summary |
|---|---|
| public static int vkGetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice, int[] pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR. Array version of:
| |