Enum
VkSamplerYcbcrModelConversion
Color model component of a color space
VkSamplerYcbcrModelConversion defines the conversion from the source color model to the shader color model. Possible values are:
typedef enum VkSamplerYcbcrModelConversion {
VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
} VkSamplerYcbcrModelConversion;
or the equivalent
#define VkSamplerYcbcrModelConversionKHR VkSamplerYcbcrModelConversion
VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITYspecifies that the input values to the conversion are unmodified.VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITYspecifies no model conversion but the inputs are range expanded as for Y′CBCR.VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709specifies the color model conversion from Y′CBCR to R′G′B′ defined in BT.709 and described in the BT.709 Y′CBCR conversion section of the Khronos Data Format Specification.VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601specifies the color model conversion from Y′CBCR to R′G′B′ defined in BT.601 and described in the BT.601 Y′CBCR conversion section of the Khronos Data Format Specification.VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020specifies the color model conversion from Y′CBCR to R′G′B′ defined in BT.2020 and described in the BT.2020 Y′CBCR conversion section of the Khronos Data Format Specification.
In the VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_* color models, for the
input to the sampler Y′CBCR range expansion and model conversion:
- the Y (Y′ luma) component corresponds to the G component of an RGB image.
- the CB (CB or
Ublue color difference) component corresponds to the B component of an RGB image. - the CR (CR or
Vred color difference) component corresponds to the R component of an RGB image. - the alpha component, if present, is not modified by color model conversion.
These rules reflect the mapping of components after the component swizzle
operation (controlled by
VkSamplerYcbcrConversionCreateInfo::components).
For example, an YUVA 32-bit format comprising four 8-bit components can
be implemented as VK_FORMAT_R8G8B8A8_UNORM with a component mapping:
components.a=VK_COMPONENT_SWIZZLE_IDENTITYcomponents.r=VK_COMPONENT_SWIZZLE_Bcomponents.g=VK_COMPONENT_SWIZZLE_Rcomponents.b=VK_COMPONENT_SWIZZLE_G