Name

    OES_blend_subtract

Name Strings

    GL_OES_blend_subtract

Contact

    Benj Lipchak, Apple (lipchak 'at' apple.com)

Notice

    Copyright (c) 2009-2013 The Khronos Group Inc. Copyright terms at
        http://www.khronos.org/registry/speccopyright.html

Status

    Ratified by the Khronos BOP, July 31, 2009.

Version

    Date: 05/19/2009  Version 1.0

Number

    OpenGL ES Extension #3

Dependencies

    Written based on the wording of the OpenGL ES 1.1 specification.
    
Overview

    Blending capability is extended by respecifying the entire blend
    equation.  While this document defines only two new equations, the
    BlendEquationOES procedure that it defines will be used by subsequent
    extensions to define additional blending equations.

    In addition to the default blending equation, two new blending equations
    are specified.  These equations are similar to the default blending 
    equation, but produce the difference of its left and right hand sides, 
    rather than the sum.  Image differences are useful in many image 
    processing applications.
    
New Procedures and Functions

    void BlendEquationOES(enum mode);

New Tokens

    Accepted by the <mode> parameter of BlendEquationOES:

        FUNC_ADD_OES                     0x8006
        FUNC_SUBTRACT_OES                0x800A
        FUNC_REVERSE_SUBTRACT_OES        0x800B

    Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
    and GetFloatv:

        BLEND_EQUATION_OES               0x8009

Additions to Chapter 2 of the OpenGL ES 1.1 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the OpenGL ES 1.1 Specification (Rasterization)

    None

Additions to Chapter 4 of the OpenGL ES 1.1 Specification (Per-Fragment Operations
and the Framebuffer)

    Replace the 1st paragraph of the "Blend Equation" discussion in section 
    4.1.7 (Blending) with the following:
    
    "Blending is controlled by the blend equations, defined by the command
    
        void BlendEquationOES(enum mode);
        
    <mode> determines the blend equation.  <mode> must be one of FUNC_ADD_OES,
    FUNC_SUBTRACT_OES, or FUNC_REVERSE_SUBTRACT_OES."
    
    Replace the last paragraph of the "Blend Equation" discussion in section 
    4.1.7 (Blending) with the following:
    
    "Table 4.blendeq provides the corresponding per-component blend equations 
    for each mode.  In the table, the s subscript on a color component 
    abbreviation (R, G, B, or A) refers to the source color component for an 
    incoming fragment and the d subscript on a color component abbreviation 
    refers to the destination color component at the corresponding framebuffer 
    location.  A color component abbreviation without a subscript refers to the
    new color component resulting from blending.  Additionally, Sr, Sg, Sb, and
    Sa are the red, green, blue, and alpha components of the source weighting 
    factors determined by the source blend function, and Dr, Dg , Db, and Da 
    are the red, green, blue, and alpha components of the destination weighting
    factors determined by the destination blend function.  Blend functions are 
    described below.
    
    Mode                       Equation
    -------------------------  ---------------------
    FUNC_ADD_OES               R = Rs * Sr + Rd * Dr
                               G = Gs * Sg + Gd * Dg
                               B = Bs * Sb + Bd * Db
                               A = As * Sa + Ad * Da
    -------------------------  ---------------------
    FUNC_SUBTRACT_OES          R = Rs * Sr - Rd * Dr
                               G = Gs * Sg - Gd * Dg
                               B = Bs * Sb - Bd * Db
                               A = As * Sa - Ad * Da
    -------------------------  ---------------------
    FUNC_REVERSE_SUBTRACT_OES  R = Rd * Dr - Rs * Sr
                               G = Gd * Dg - Gs * Sg
                               B = Bd * Db - Bs * Sb
                               A = Ad * Da - As * Sa
    -------------------------  ---------------------

    Table 4.blendeq:  Blend equations."
    
    In the "Blending State" paragraph, insert the following:

    "The state required for blending is... one integer indicating the
    blend equation...  The initial blending equation is FUNC_ADD_OES."
    
Additions to Chapter 5 of the OpenGL ES 1.1 Specification (Special Functions)

    None

Additions to Chapter 6 of the OpenGL ES 1.1 Specification (State and State Requests)

    None

Errors

    INVALID_ENUM is generated by BlendEquationOES if its single parameter
    is not FUNC_ADD_OES, FUNC_SUBTRACT_OES, or FUNC_REVERSE_SUBTRACT_OES.

New State

    Get Value           Get Command     Type    Initial Value
    ---------           -----------     ----    -------------
    BLEND_EQUATION_OES  GetIntegerv     Z3      FUNC_ADD_OES

New Implementation Dependent State

    None

Revision History

    2009/05/19    Benj Lipchak    First draft of true extension specification
    
