Edit

kc3-lang/angle/extensions/EXT_blend_minmax.txt

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2014-02-12 11:33:51
    Hash : 496123fd
    Message : Implement EXT_blend_minmax. BUG=angle:555 Change-Id: I1ae6a9783e718d16ee08bda5463f11cd52ad0967 Reviewed-on: https://chromium-review.googlesource.com/186123 Tested-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shannon Woods <shannonwoods@chromium.org>

  • extensions/EXT_blend_minmax.txt
  • Name
    
        EXT_blend_minmax
    
    Name Strings
    
        GL_EXT_blend_minmax
    
    Version
    
        Last Modified Date: September 17, 2009
        Version:            1.5
    
    Number
    
        OpenGL Extension #37
        OpenGL ES Extension #65
    
    Dependencies
    
        There is an interaction with OpenGL ES.
    
    Overview
    
        Blending capability is extended by respecifying the entire blend
        equation.  While this document defines only two new equations, the
        BlendEquationEXT procedure that it defines will be used by subsequent
        extensions to define additional blending equations.
    
        The two new equations defined by this extension produce the minimum
        (or maximum) color components of the source and destination colors.
        Taking the maximum is useful for applications such as maximum projection
        in medical imaging.
    
    Issues
    
        *   I've prefixed the ADD token with FUNC, to indicate that the blend
            equation includes the parameters specified by BlendFunc.  (The min
            and max equations don't.)  Is this necessary?  Is it too ugly?
            Is there a better way to accomplish the same thing?
        
    New Procedures and Functions
    
        void BlendEquationEXT(enum mode);
    
    New Tokens
    
        Accepted by the <mode> parameter of BlendEquationEXT:
    
            FUNC_ADD_EXT                     0x8006
            MIN_EXT                          0x8007
            MAX_EXT                          0x8008
    
        Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
        GetFloatv, and GetDoublev:
    
            BLEND_EQUATION_EXT               0x8009
    
    Additions to Chapter 2 of the GL Specification (OpenGL Operation)
    
        None
    
    Additions to Chapter 3 of the GL Specification (Rasterization)
    
        None
    
    Additions to Chapter 4 of the GL Specification (Per-Fragment Operations
    and the Framebuffer)
    
        The GL Specification defines a single blending equation.  This
        extension introduces a blend equation mode that is specified by calling
        BlendEquationEXT with one of three enumerated values.  The default
        value FUNC_ADD_EXT specifies that the blending equation defined in
        the GL Specification be used.  This equation is
    
            C' = (Cs * S) + (Cd * D)
    
                 /  1.0     C' > 1.0
            C = (
                 \   C'     C' <= 1.0
    
        where Cs and Cd are the source and destination colors, and S and D are
        as specified by BlendFunc.
    
        If BlendEquationEXT is called with <mode> set to MIN_EXT, the
        blending equation becomes
    
            C = min (Cs, Cd)
    
        Finally, if BlendEquationEXT is called with <mode> set to MAX_EXT, the
        blending equation becomes
    
            C = max (Cs, Cd)
    
        In all cases the blending equation is evaluated separately for each
        color component.
    
    Additions to Chapter 5 of the GL Specification (Special Functions)
    
        None
    
    Additions to Chapter 6 of the GL Specification (State and State Requests)
    
        None
    
    Additions to the GLX Specification
    
        None
    
    GLX Protocol
    
        A new GL rendering command is added. The following command is sent to the 
        server as part of a glXRender request:
    
            BlendEquationEXT
                2           8               rendering command length
                2           4097            rendering command opcode
                4           ENUM            mode
    
    Dependencies on OpenGL ES
    
        If the GL is OpenGL ES, only the new MIN_EXT and MAX_EXT blend equations
        are introduced by this extension.  BlendEquationOES, FUNC_ADD_OES, and
        BLEND_EQUATION_OES are introduced by the OES_blend_subtract extension,
        which is required for this extension to operate.  Alternatively,
        OpenGL ES 2.0 is required, which introduces BlendEquation, FUNC_ADD, and
        BLEND_EQUATION without the suffixes.
    
        MIN_EXT and MAX_EXT should be added to Table 4.blendeq described in the
        OES_blend_subtract extension specification, and Table 4.1 of the OpenGL
        ES 2.0 specification.
    
        Mentions of GetDoublev, Begin/End, and GLX in this extension specification
        can be ignored for OpenGL ES.  Also, BlendEquationEXT and FUNC_ADD_EXT
        instead have the OES suffix courtesy of OES_blend_subtract, or no suffix
        courtesy of core OpenGL ES 2.0.
    
    Errors
    
        INVALID_ENUM is generated by BlendEquationEXT if its single parameter
        is not FUNC_ADD_EXT, MIN_EXT, or MAX_EXT.
    
        INVALID_OPERATION is generated if BlendEquationEXT is executed between
        the execution of Begin and the corresponding execution to End.
    
    New State
    
        Get Value           Get Command     Type    Initial Value   Attribute
        ---------           -----------     ----    -------------   ---------
        BLEND_EQUATION_EXT  GetIntegerv     Z3      FUNC_ADD_EXT    color-buffer
    
    New Implementation Dependent State
    
        None
    
    Revision History
    
        Version 1.5, September 17, 2009 (Jon Leech) -
            Merge into OpenGL Registry version of the extension and assign
            OpenGL ES extension number.
        Version 1.4, May 19, 2009 (Benj Lipchak) -
            Adapted for OpenGL ES.
        Version 1.3, May 31, 1995 -
            Last SGI revision.