Home | History | Annotate | Download | only in extensions
      1 Name
      2 
      3     EXT_blend_minmax
      4 
      5 Name Strings
      6 
      7     GL_EXT_blend_minmax
      8 
      9 Version
     10 
     11     Last Modified Date: September 17, 2009
     12     Version:            1.5
     13 
     14 Number
     15 
     16     OpenGL Extension #37
     17     OpenGL ES Extension #65
     18 
     19 Dependencies
     20 
     21     There is an interaction with OpenGL ES.
     22 
     23 Overview
     24 
     25     Blending capability is extended by respecifying the entire blend
     26     equation.  While this document defines only two new equations, the
     27     BlendEquationEXT procedure that it defines will be used by subsequent
     28     extensions to define additional blending equations.
     29 
     30     The two new equations defined by this extension produce the minimum
     31     (or maximum) color components of the source and destination colors.
     32     Taking the maximum is useful for applications such as maximum projection
     33     in medical imaging.
     34 
     35 Issues
     36 
     37     *   I've prefixed the ADD token with FUNC, to indicate that the blend
     38         equation includes the parameters specified by BlendFunc.  (The min
     39         and max equations don't.)  Is this necessary?  Is it too ugly?
     40         Is there a better way to accomplish the same thing?
     41     
     42 New Procedures and Functions
     43 
     44     void BlendEquationEXT(enum mode);
     45 
     46 New Tokens
     47 
     48     Accepted by the <mode> parameter of BlendEquationEXT:
     49 
     50         FUNC_ADD_EXT                     0x8006
     51         MIN_EXT                          0x8007
     52         MAX_EXT                          0x8008
     53 
     54     Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
     55     GetFloatv, and GetDoublev:
     56 
     57         BLEND_EQUATION_EXT               0x8009
     58 
     59 Additions to Chapter 2 of the GL Specification (OpenGL Operation)
     60 
     61     None
     62 
     63 Additions to Chapter 3 of the GL Specification (Rasterization)
     64 
     65     None
     66 
     67 Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
     68 and the Framebuffer)
     69 
     70     The GL Specification defines a single blending equation.  This
     71     extension introduces a blend equation mode that is specified by calling
     72     BlendEquationEXT with one of three enumerated values.  The default
     73     value FUNC_ADD_EXT specifies that the blending equation defined in
     74     the GL Specification be used.  This equation is
     75 
     76         C' = (Cs * S) + (Cd * D)
     77 
     78              /  1.0     C' > 1.0
     79         C = (
     80              \   C'     C' <= 1.0
     81 
     82     where Cs and Cd are the source and destination colors, and S and D are
     83     as specified by BlendFunc.
     84 
     85     If BlendEquationEXT is called with <mode> set to MIN_EXT, the
     86     blending equation becomes
     87 
     88         C = min (Cs, Cd)
     89 
     90     Finally, if BlendEquationEXT is called with <mode> set to MAX_EXT, the
     91     blending equation becomes
     92 
     93         C = max (Cs, Cd)
     94 
     95     In all cases the blending equation is evaluated separately for each
     96     color component.
     97 
     98 Additions to Chapter 5 of the GL Specification (Special Functions)
     99 
    100     None
    101 
    102 Additions to Chapter 6 of the GL Specification (State and State Requests)
    103 
    104     None
    105 
    106 Additions to the GLX Specification
    107 
    108     None
    109 
    110 GLX Protocol
    111 
    112     A new GL rendering command is added. The following command is sent to the 
    113     server as part of a glXRender request:
    114 
    115         BlendEquationEXT
    116             2           8               rendering command length
    117             2           4097            rendering command opcode
    118             4           ENUM            mode
    119 
    120 Dependencies on OpenGL ES
    121 
    122     If the GL is OpenGL ES, only the new MIN_EXT and MAX_EXT blend equations
    123     are introduced by this extension.  BlendEquationOES, FUNC_ADD_OES, and
    124     BLEND_EQUATION_OES are introduced by the OES_blend_subtract extension,
    125     which is required for this extension to operate.  Alternatively,
    126     OpenGL ES 2.0 is required, which introduces BlendEquation, FUNC_ADD, and
    127     BLEND_EQUATION without the suffixes.
    128 
    129     MIN_EXT and MAX_EXT should be added to Table 4.blendeq described in the
    130     OES_blend_subtract extension specification, and Table 4.1 of the OpenGL
    131     ES 2.0 specification.
    132 
    133     Mentions of GetDoublev, Begin/End, and GLX in this extension specification
    134     can be ignored for OpenGL ES.  Also, BlendEquationEXT and FUNC_ADD_EXT
    135     instead have the OES suffix courtesy of OES_blend_subtract, or no suffix
    136     courtesy of core OpenGL ES 2.0.
    137 
    138 Errors
    139 
    140     INVALID_ENUM is generated by BlendEquationEXT if its single parameter
    141     is not FUNC_ADD_EXT, MIN_EXT, or MAX_EXT.
    142 
    143     INVALID_OPERATION is generated if BlendEquationEXT is executed between
    144     the execution of Begin and the corresponding execution to End.
    145 
    146 New State
    147 
    148     Get Value           Get Command     Type    Initial Value   Attribute
    149     ---------           -----------     ----    -------------   ---------
    150     BLEND_EQUATION_EXT  GetIntegerv     Z3      FUNC_ADD_EXT    color-buffer
    151 
    152 New Implementation Dependent State
    153 
    154     None
    155 
    156 Revision History
    157 
    158     Version 1.5, September 17, 2009 (Jon Leech) -
    159         Merge into OpenGL Registry version of the extension and assign
    160         OpenGL ES extension number.
    161     Version 1.4, May 19, 2009 (Benj Lipchak) -
    162         Adapted for OpenGL ES.
    163     Version 1.3, May 31, 1995 -
    164         Last SGI revision.
    165