The method of stereo rendering supported in OpenGL is currently achieved by rendering to the two eye buffers sequentially. This typically incurs double the application and driver overhead, despite the fact that the command streams and render states are almost identical.
This extension seeks to address the inefficiency of sequential multiview rendering by adding a means to render to multiple elements of a 2D texture
array simultaneously. In multiview rendering, draw calls are instanced into each corresponding element of the texture array. The vertex program uses a
new gl_ViewID_OVR variable to compute per-view values, typically the vertex position and view-dependent variables like reflection.
The formulation of this extension is high level in order to allow implementation freedom. On existing hardware, applications and drivers can realize the benefits of a single scene traversal, even if all GPU work is fully duplicated per-view. But future support could enable simultaneous rendering via multi-GPU, tile-based architectures could sort geometry into tiles for multiple views in a single pass, and the implementation could even choose to interleave at the fragment level for better texture cache utilization and more coherent fragment shader branching.
The most obvious use case in this model is to support two simultaneous views: one view for each eye. However, we also anticipate a usage where two views are rendered per eye, where one has a wide field of view and the other has a narrow one. The nature of wide field of view planar projection is that the sample density can become unacceptably low in the view direction. By rendering two inset eye views per eye, we can get the required sample density in the center of projection without wasting samples, memory, and time by oversampling in the periphery.
Requires OpenGL 3..
| Modifier and Type | Field and Description |
|---|---|
| public static final int | GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR
Accepted by the |
| public static final int | GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR
Accepted by the |
| public static final int | |
| public static final int | GL_MAX_VIEWS_OVR
Accepted by the |
| Access | Constructor and Description |
|---|---|
| protected |
| GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR | back to summary |
|---|---|
| public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR Accepted by the | |
| GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR | back to summary |
|---|---|
| public static final int GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR Accepted by the | |
| GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR | back to summary |
|---|---|
| public static final int GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR Returned by | |
| GL_MAX_VIEWS_OVR | back to summary |
|---|---|
| public static final int GL_MAX_VIEWS_OVR Accepted by the | |
| OVRMultiview | back to summary |
|---|---|
| protected OVRMultiview() | |
| glFramebufferTextureMultiviewOVR | back to summary | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| public static native void glFramebufferTextureMultiviewOVR(int target, int attachment, int texture, int level, int baseViewIndex, int numViews) Operates similarly to the The command
does not exist in the GL, but is used here to describe the multiview functionality in this section. The effect of this hypothetical function is to set
the value of the shader built-in input When multiview rendering is enabled, the
The result is that every drawing command is broadcast into every active view. The shader uses The number of views, as specified by If ErrorsIn addition to the corresponding errors for An
An
| |||||||||||||||||||||||||||||||||||||||
| glNamedFramebufferTextureMultiviewOVR | back to summary | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
public static native void glNamedFramebufferTextureMultiviewOVR(int framebuffer, int attachment, int texture, int level, int baseViewIndex, int numViews)
| ||||||||||||||||||||||||||||||||||||