Name | |
EXT_multiview_texture_multisample | |
Name Strings | |
GL_EXT_multiview_texture_multisample | |
Contact | |
Robert Menzel, NVIDIA Corporation (rmenzel 'at' nvidia.com) | |
Contributors | |
Pat Brown, NVIDIA Corporation | |
James Helferty, NVIDIA Corporation | |
Kedarnath Thangudu, NVIDIA Corporation | |
Status | |
Complete. | |
Version | |
Last Modified Date: May 13, 2019 | |
Author Revision: 1 | |
Number | |
OpenGL Extension #537 | |
OpenGL ES Extension #318 | |
Dependencies | |
OpenGL 4.0 or OpenGL ES 3.2 are required. | |
This extension is written against the OpenGL 4.6 specification | |
(Core Profile) (February 2, 2019) and OpenGL ES 3.2 specification | |
(February 2, 2019). | |
OVR_multiview is required. | |
Overview | |
OVR_multiview introduced multiview rendering to OpenGL and OpenGL ES. | |
This extension removes one of the limitations of the OVR_multiview | |
extension by allowing the use of multisample textures during multiview rendering. | |
This is one of two extensions that allow multisampling when using | |
OVR_multiview. Each supports one of the two different approaches to | |
multisampling in OpenGL and OpenGL ES: | |
Core OpenGL and OpenGL ES 3.1+ have explicit support for multisample | |
texture types, such as TEXTURE_2D_MULTISAMPLE. Applications can access | |
the values of individual samples and can explicitly "resolve" the | |
samples of each pixel down to a single color. | |
The extension EXT_multisampled_render_to_texture provides support for | |
multisampled rendering to non-multisample texture types, such as | |
TEXTURE_2D. The individual samples for each pixel are maintained | |
internally by the implementation and can not be accessed directly | |
by applications. These samples are eventually resolved implicitly to | |
a single color for each pixel. | |
This extension supports the first multisampling style with multiview | |
rendering; the OVR_multiview_multisampled_render_to_texture extension | |
supports the second style. Note that support for one of these multiview | |
extensions does not imply support for the other. | |
New Tokens | |
None. | |
New Procedures and Functions | |
None. | |
Modifications to Chapter 9 of the OpenGL ES 3.2 Specification as well as | |
Chapter 9 of the OpenGL 4.6 Specification (Framebuffers and Framebuffer | |
Objects) | |
Modifications to all sections added and/or modified by OVR_multiview | |
Where OVR_multiview references a "two-dimensional array texture", replace | |
this with "two-dimensional array texture or two-dimensional multisample | |
array texture" to explicitly allow rendering to multisampled textures. | |
The following is an explicit list of these changes: | |
In subsection 9.2.2.2 (introduced by OVR_multiview) replace | |
"Finally, multiple layers of two-dimensional array textures can be | |
attached to an attachment point." | |
with | |
"Finally, multiple layers of two-dimensional array textures or | |
two-dimensional multisample array textures can be | |
attached to an attachment point." | |
In the additions to section 9.2.3 (Framebuffer Object Queries) replace | |
"If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value | |
of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture..." | |
with | |
"If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR and the value | |
of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array texture | |
or a two-dimensional multisample array texture..." | |
Also replace | |
"If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the | |
value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array | |
texture..." | |
with | |
"If <pname> is FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR and the | |
value of FRAMEBUFFER_ATTACHMENT_OBJECT_NAME is a two-dimensional array | |
texture or a two-dimensional multisample array texture..." | |
In the addition to the end of section 9.2.8 (Attaching Textures to a Framebuffer) | |
replace | |
"Multiple layers of a two-dimensional array texture can be | |
attached as one of the logical buffers of a framebuffer object with the | |
commands" | |
with | |
"Multiple layers of a two-dimensional array texture or a two-dimensional | |
multisample array texture can be | |
attached as one of the logical buffers of a framebuffer object with the | |
commands" | |
Later in that section under "Errors" replace | |
"An INVALID_VALUE error is generated if: | |
- <texture> is a two-dimensional array texture and <baseViewIndex> + | |
<numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS." | |
with | |
"An INVALID_VALUE error is generated if: | |
- <texture> is a two-dimensional array texture or a two-dimensional | |
multisample array texture and <baseViewIndex> + | |
<numViews> is larger than the value of MAX_ARRAY_TEXTURE_LAYERS." | |
Also replace | |
"An INVALID_OPERATION error is generated if texture is non-zero and is not | |
the name of a two-dimensional array texture." | |
with | |
"An INVALID_OPERATION error is generated if texture is non-zero and is not | |
the name of a two-dimensional array texture or a two-dimensional | |
multisample array texture." | |
Issues | |
(1) This extension is based on an OVR extension, why call it EXT? | |
While started as a single vendor extension, OVR_multiview and OVR_multiview2 | |
are already supported by multiple vendors. This new extension also has the | |
support from multiple vendors to be specified as EXT. | |
(2) Can this extension be used together with | |
OVR_multiview_multisampled_render_to_texture if both are supported? | |
The two extensions can be used together in the same application, but not in | |
the same framebuffer. OVR_multiview_multisampled_render_to_texture is based | |
on EXT_multisampled_render_to_texture, which explicitly does not permit a | |
single framebuffer to contain explicit multisample texture types (from | |
OpenGL ES 3.1 and core OpenGL) and "multisampled" bindings of non-multisample | |
texture types. | |
Revision History | |
Rev. Date Author Changes | |
---- -------- -------- ----------------------------------------- | |
1 05/13/19 rmenzel Initial version. |