Back to the OpenGL extension cross reference

GLX_SGIS_blended_overlay


Name


    SGIS_blended_overlay

Name Strings


    GLX_SGIS_blended_overlay

Version


    $Date: 1997/10/29 20:56:43 $ $Revision: 1.5 $

Number


    142

Dependencies


    EXT_visual_info is required
GLX_SGI_color_range affects the definition of this extension

Overview


    This extension augments the set of transparency types for GLX
visuals (defined by the EXT_visual_info GLX extension). A new
transparency type designated BLENDED_RGBA_SGIS is defined for
overlay windows supporting an alpha color component. Instead of
using a particular transparent pixel or color value to indicate
transparency, a window created with a BLENDED_RGBA_SGIS
transparency type visual blends with the lower frame buffer layers
based on the overlay window's per-pixel alpha component.

The overlay blend function is:

if ( Cu is color index pixel type ) then

if ( Ao > 0.0 ) then
Cd = Co /* Non-zero overlay alpha simply uses overlay color */
else
Cd = Cu /* Note: later CI cmap turns Cd index into true color */
endif

else /* Cu is an RGBA, RGB, L, or LA pixel type */

/* blend overlay color with normal color based on overlay alpha */
Cd = Co * (Ao,Ao,Ao,Ao) + Cu * ( (1,1,1,1) - (Ao,Ao,Ao,Ao) )

endif

where Cd is the resulting displayed color. Co is the RGBA
quadruplet for the overlay RGBA components of the overlay window
pixel. Ao is the alpha component for the overlay alpha component
of the overlay window pixel. Cu is the RGBA quadruplet for the
RGBA components of the displayed pixel if no overlay where present
in the overlay window's layer (or any higher level). Think of Cu
as the displayable color "under" the BLENDED_RGBA_SGIS overlay
pixel.

In the case of extended range frame buffer formats, the overlay
blend function is applied post-clamping to the [0,1] range.

Here are some of the uses for blended RGBA overlays:

Render antialiased lines, points, and polygons in the overlays
with GL_LINE_SMOOTH, GL_POINT_SMOOTH, and GL_POLYGON_SMOOTH.

Alpha blended antiliasing could be used on the overlay boundaries
of overlay control panels and boat hulls.

Clean blending of overlaid mattes for live video. Live video
stream could be overlaid by computer generated overlaid
graphics.

Swank user interface support for sweeping out irregular screen
regions by painiting the region in the overlay with a fractional
alpha to blend the sweeped region with some constant color in the
overlay.

Swank brush shapes for 3D painting that let you see the blended
pixels underneather the overlay brush shape.

Really smooth (ie, subpixel positioned), full-color, antialiased
cursors (application drawn into a blended RGBA overlay).

IP Status


    Silicon Graphics has filed for patent protection for some of the
techniques described in this extension document.

Issues


    *  Are any other blending functions interesting?  NO.

* Rather unlikely but you could have multiple layers of blended
overlays and/or normal overlays. If two layers of blended overlays
were present, the upper layer should be blended with the resulting
blend of the lower overlay with the normal plane. YES.

(Warning, be careful about multiple blending using
non-premultiplied alpha. See Porter & Duff SIGGRAPH paper.)

* X does not all rendering in the alpha bitplanes. X rendering
should be assumed to always draw an alpha of 1.0. This means that
an BLENDED_RGBA_SGIS overlay will act as an overlay with no
transparent pixel when it comes to X rendering. Blended overlays
overlays will only be usable for transparency via OpenGL
rendering. The SEVER_OVERLAY_VISUALS (SOV) X convention will
therefore advertise the visual as having transparency type None (no
new transparency type will be added to SOV). YES.

* If the alpha component of the frame buffer is displayable (ie, sent
out with the video signal), what alpha value should be generated
when blended overlays are present? Is the resulting blended alpha
what you would want? Perhaps merely sending the normal plane alpha
is better. Unresolved.

* Should frame buffer layers that supporte extended precision (via
the GLX_SGI_color_range extension) be blended before clamping
the color components to [0,1]? NO.

Both the overlay and normal layer must both be clamped to [0,1]
before the overlay blend function is performed.

* Does the overlay's full alpha component precision need to be
used for the overlay blend function? NO.

For example, if the overlay had 8 bits of alpha, the overlay
blend function might "get away with" only blending with the 4
most significant bits of the alpha component. This might allow
cheaper multipliers for the bandwidth-intensive overlay blend
function. There is no direct way to query what alpha precision
the overlay blend uses. Obviously, implementations are
encouraged to use as much overlay precision as is available.

* How does a blended overlay interact when it covers a color index
window? If the overlay alpha is zero, use the color index
pixel. A non-zero alpha simply uses the overlay color as is.

* How does a blended overlay interact when it covers an X
DirectColor visual? DirectColor has RGB components that are
then passed through (generally as part of video scan-out) a
per-component colormap (ie, look-up tables). (The DirectColor
colormap is often implemented by overloading the gamma tables).

Arguably, the blending should use the post-DirectColor colormap
color values (same for color index, PseudoColor, etc), but in
practice, this is a colormap lookup that typically happens
within the video display subsystem so it is not reasonable to
expect the overlay blending be put off so long.

RESOLUTION: DirectColor visual color components should overlay
blended pre-DirectColor colormap conversion. In practice, this
means that DirectColor will be treated no differently from
TrueColor visuals.

* What is the relationship between blended overlays and channel
compositing? None, they are independent and orthogonal
features. Channel compositing happens well after blended
overlays.

New Procedures and Functions


    None

New Tokens


    Returned by glXGetConfig, and accepted by the <attrib_list>
parameter of glXChooseVisual (following the GLX_TRANSPARENT_TYPE_EXT
token):

GLX_BLENDED_RGBA_SGIS 0x8025

(EXT_visual_info previously defined GLX_NONE_EXT,
GLX_TRANSPARENT_RGB_EXT, and GLX_TRANSPARENT_INDEX_EXT.)

Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)


    None

Additions to Chapter 3 of the 1.0 Specification (Rasterization)


    None

Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and the Framebuffer)



Additions to Chapter 5 of the 1.0 Specification (Special Functions)


    None

Additions to Chapter 6 of the 1.0 Specification (State and State Requests)


    None

Additions to the GLX Specification


    Changed beginning of the paragraph from the EXT_visual_info
specification:

The visual attribute GLX_TRANSPARENT_TYPE_EXT indicates whether
or not the visual supports transparency, and if it does support
transparency, what type of transparency is available. If the
attribute is set to GLX_NONE_EXT then windows created with the
visual will not have any transparent pixels. If the attribute is
GLX_TRANSPARENT_RGB_EXT, GLX_TRANSPARENT_INDEX_EXT, or
GLX_BLENDED_RGBA_SGIS then the visual supports transparency. ...

Add the following paragraph after the discussion of paragraph from
the EXT_visual_info specification addition beginning "The visual
attribute GLX_TRANSPARENT_TYPE_EXT indicates..."

GLX_BLENDED_RGBA_SGIS is applicable to TrueColor and DirectColor
visuals. There is no particular transparent pixel value for this
visual. Instead, the alpha component of pixels belonging to the
overlay window are used to blend the overlay color with the
displayable color of the frame buffer layers below the
GLX_BLENDED_RGBA_SGIS overlay pixels.

The GLX_BLENDED_RGBA_SGIS overlay blend function is:

if ( Cu is color index pixel type ) then

if ( Ao > 0.0 ) then
Cd = Co /* Non-zero overlay alpha simply uses overlay color */
else
Cd = Cu /* Note: later CI colormap turns Cd index into true color */
endif

else /* Cu is an RGBA, RGB, L, or LA pixel type */

/* blend overlay color with normal color based on overlay alpha */
Cd = Co * (Ao,Ao,Ao,Ao) + Cu * ( (1,1,1,1) - (Ao,Ao,Ao,Ao) )

endif

where Cd is the resulting displayed color. Co is the RGBA
quadruplet for the overlay RGBA components of the overlay window
pixel. Ao is the alpha component for the overlay alpha component
of the overlay window pixel. Cu is the RGBA quadruplet for the
RGBA components of the displayed pixel if no overlay where present
in the overlay window's layer (or any higher level). Think of Cu
as the displayable color "under" the BLENDED_RGBA_SGIS overlay
pixel.

In the case of extended range frame buffer formats (from the
GLX_SGI_color_range spec), the overlay blend function is applied
post-clamping to the [0,1] range during display scan out.

Changed paragraph from the EXT_visual_info specification:

If GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT,
GLX_TRANSPARENT_RGB_EXT, or GLX_BLENDED_RGBA_SGIS, then the value
returned for GLX_TRANSPARENT_INDEX_VALUE_EXT is undefined. If
GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT,
GLX_TRANSPARENT_INDEX_EXT, or GLX_BLENDED_RGBA_SGIS, then the
values returned for GLX_TRANSPARENT_RED_VALUE_EXT,
GLX_TRANSPARENT_GREEN_VALUE_EXT, and
GLX_TRANSPARENT_BLUE_VALUE_EXT are undefined.

Change line in Table 1 to the following:

Attribute Type Notes
--------- ---- -----
GLX_TRANSPARENT_TYPE_EXT enum None, TRANSPARENT_RGB_EXT, TRANSPARENT_INDEX_EXT,
or BLENDED_RGBA_SGIS

Table 1: Configuration attributes

GLX Protocol


    One property type/property value pair is augmented with a new
proprty value. The augmented property type/property value pair is
now encoded as

4 ENUM property type
0x23 GLX_TRANSPARENT_TYPE_EXT
4 ENUM property value
0x8000 GLX_NONE_EXT
0x8008 GLX_TRANSPARENT_RGB_EXT
0x8009 GLX_TRANSPARENT_INDEX_EXT
0x8025 GLX_BLENDED_RGBA_SGIS

Errors


    None

New State


    None

New Implementation Dependent State


    None.

Implementation Support


   List of OpenGL implementations supporting the GLX_SGIS_blended_overlay extension

Original File


   Original text file for the GLX_SGIS_blended_overlay extension


Page generated on Sun Nov 20 18:38:31 2005