68 lines
2.7 KiB
Plaintext
68 lines
2.7 KiB
Plaintext
////
|
|
- Copyright (c) 2023, Mobica Limited
|
|
-
|
|
- SPDX-License-Identifier: Apache-2.0
|
|
-
|
|
- Licensed under the Apache License, Version 2.0 the "License";
|
|
- you may not use this file except in compliance with the License.
|
|
- You may obtain a copy of the License at
|
|
-
|
|
- http://www.apache.org/licenses/LICENSE-2.0
|
|
-
|
|
- Unless required by applicable law or agreed to in writing, software
|
|
- distributed under the License is distributed on an "AS IS" BASIS,
|
|
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
- See the License for the specific language governing permissions and
|
|
- limitations under the License.
|
|
-
|
|
////
|
|
|
|
= Dynamic blending
|
|
|
|
== Overview
|
|
|
|
This sample demonstrates the functionality of VK_EXT_extended_dynamic_state3 related to blending. It includes the
|
|
following features:
|
|
|
|
* `vkCmdSetColorBlendEnableEXT`: toggles blending on and off.
|
|
* `vkCmdSetColorBlendEquationEXT`: modifies blending operators and factors.
|
|
* `vkCmdSetColorBlendAdvancedEXT`: utilizes more complex blending operators.
|
|
* `vkCmdSetColorWriteMaskEXT`: toggles individual channels on and off.
|
|
|
|
== How to use in Vulkan
|
|
|
|
To utilize this feature, the device extension `VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME` need to be enabled.
|
|
The extension `VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME` is required for the advanced blend equations.
|
|
All presented functions take an array of objects defining their action for subsequent color attachments:
|
|
|
|
* The `vkCmdSetColorBlendEnableEXT`
|
|
function expects an array of booleans to toggle blending.
|
|
* The `vkCmdSetColorBlendEquationEXT` function expects an array of
|
|
`VkColorBlendEquationEXT` objects which determine operators and factors for
|
|
color and alpha blending.
|
|
* The `VkCmdSetColorBlendAdvancedEXT` function expects an array of `VkColorBlendAdvancedEXT` objects, which determine
|
|
blending operators and premultiplication for color blending.
|
|
* The `vkCmdSetColorWriteMaskEXT` function expects an array of
|
|
`VkColorComponentFlags` objects. These objects can be created by combining
|
|
the desired color bit flags using bitwise oring.
|
|
|
|
== The sample
|
|
|
|
The sample demonstrates how to set up an application to work with this
|
|
extension:
|
|
|
|
* Enabling the extension.
|
|
* Setting parameters for the presented methods.
|
|
|
|
The sample demonstrates how the use of each operator affects color blending.
|
|
|
|
== Documentation links
|
|
|
|
https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorBlendEnableEXT.html
|
|
|
|
https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorBlendEquationEXT.html
|
|
|
|
https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorBlendAdvancedEXT.html
|
|
|
|
https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetColorWriteMaskEXT.html
|