| // Copyright 2016-2021 The Khronos Group, Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_KHR_multiview.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2016-10-28 |
| *IP Status*:: |
| No known IP claims. |
| *Interactions and External Dependencies*:: |
| - Promoted to Vulkan 1.1 Core |
| - This extension requires |
| {spirv}/KHR/SPV_KHR_multiview.html[`SPV_KHR_multiview`] |
| - This extension provides API support for |
| https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_multiview.txt[`GL_EXT_multiview`] |
| *Contributors*:: |
| - Jeff Bolz, NVIDIA |
| |
| === Description |
| |
| This extension has the same goal as the OpenGL ES `GL_OVR_multiview` |
| extension. |
| Multiview is a rendering technique originally designed for VR where it is |
| more efficient to record a single set of commands to be executed with |
| slightly different behavior for each "`view`". |
| |
| It includes a concise way to declare a render pass with multiple views, and |
| gives implementations freedom to render the views in the most efficient way |
| possible. |
| This is done with a multiview configuration specified during <<renderpass, |
| render pass>> creation with the slink:VkRenderPassMultiviewCreateInfo passed |
| into slink:VkRenderPassCreateInfo::pname:pNext. |
| |
| This extension enables the use of the |
| {spirv}/KHR/SPV_KHR_multiview.html[`SPV_KHR_multiview`] shader extension, |
| which adds a new `ViewIndex` built-in type that allows shaders to control |
| what to do for each view. |
| If using GLSL there is also the |
| https://raw.githubusercontent.com/KhronosGroup/GLSL/master/extensions/ext/GL_EXT_multiview.txt[`GL_EXT_multiview`] |
| extension that introduces a `highp int gl_ViewIndex;` built-in variable for |
| vertex, tessellation, geometry, and fragment shaders. |
| |
| === Promotion to Vulkan 1.1 |
| |
| All functionality in this extension is included in core Vulkan 1.1, with the |
| KHR suffix omitted. |
| The original type, enum and command names are still available as aliases of |
| the core functionality. |
| |
| include::{generated}/interfaces/VK_KHR_multiview.txt[] |
| |
| === New Built-In Variables |
| |
| * <<interfaces-builtin-variables-viewindex,code:ViewIndex>> |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-MultiView,code:MultiView>> |
| |
| === Version History |
| |
| * Revision 1, 2016-10-28 (Jeff Bolz) |
| - Internal revisions |
| |
| ifdef::isrefpage[] |
| |
| === Additional Resources |
| |
| * https://devblogs.nvidia.com/turing-multi-view-rendering-vrworks['NVIDIA |
| blog post'] |
| * https://community.arm.com/developer/tools-software/graphics/b/blog/posts/optimizing-virtual-reality-understanding-multiview['ARM |
| blog post'] |
| |
| endif::isrefpage[] |