blob: 9becfc01806ef29cc79afb3fc117ea6f45c16de0 [file] [log] [blame]
Name
OES_blend_func_separate
Name Strings
GL_OES_blend_func_separate
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
Specification Update Policy
Khronos-approved extension specifications are updated in response to
issues and bugs prioritized by the Khronos OpenGL ES Working Group. For
extensions which have been promoted to a core Specification, fixes will
first appear in the latest version of that core Specification, and will
eventually be backported to the extension document. This policy is
described in more detail at
https://www.khronos.org/registry/OpenGL/docs/update_policy.php
Status
Ratified by the Khronos BOP, July 31, 2009.
Version
Date: 05/19/2009 Version 1.0
Number
OpenGL ES Extension #2
Dependencies
Written based on the wording of the OpenGL ES 1.1 specification.
Overview
Blending capability is extended by defining a function that allows
independent setting of the RGB and alpha blend factors for blend
operations that require source and destination blend factors. It
is not always desired that the blending used for RGB is also applied
to alpha.
New Procedures and Functions
void BlendFuncSeparateOES(enum sfactorRGB,
enum dfactorRGB,
enum sfactorAlpha,
enum dfactorAlpha);
New Tokens
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, and
GetFloatv:
BLEND_DST_RGB_OES 0x80C8
BLEND_SRC_RGB_OES 0x80C9
BLEND_DST_ALPHA_OES 0x80CA
BLEND_SRC_ALPHA_OES 0x80CB
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 "Blend Equation" discussion in section 4.1.7 (Blending) with
the following:
"The weighting factors used by the blend equation are determined by the
blend functions. Blend functions are specified with the commands
void BlendFuncSeparateOES(enum srcRGB, enum dstRGB, enum srcAlpha, enum dstAlpha);
void BlendFunc(enum src, enum dst);
BlendFuncSeparate arguments <srcRGB and dstRGB determine the source
and destination RGB blend functions, respectively, while <srcAlpha> and
<dstAlpha> determine the source and destination alpha blend functions.
BlendFunc argument <src> determines both the RGB and alpha source
functions, while <dst> determines both RGB and alpha destination functions.
The possible source and destination blend functions and their
corresponding computed blend factors are summarized in table 4.blendfunc.
Function RGB Blend Factors Alpha Blend Factor
(Sr, Sg, Sb) or (Dr, Dg, Db) Sa or Da
------------------ ---------------------------- ------------------
ZERO (0, 0, 0) 0
ONE (1, 1, 1) 1
SRC_COLOR (Rs, Gs, Bs) As
ONE_MINUS_SRC_COLOR (1, 1, 1) - (Rs, Gs, Bs) 1 - As
DST_COLOR (Rd, Gd, Bd) Ad
ONE_MINUS_DST_COLOR (1, 1, 1) - (Rd, Gd, Bd) 1 - Ad
SRC_ALPHA (As, As, As) As
ONE_MINUS_SRC_ALPHA (1, 1, 1) - (As, As, As) 1 - As
DST_ALPHA (Ad, Ad, Ad) Ad
ONE_MINUS_DST_ALPHA (1, 1, 1) - (Ad, Ad, Ad) 1 - Ad
SRC_ALPHA_SATURATE (*1) (f, f, f) (*2) 1
Table 4.blendfunc: RGB and ALPHA source and destination blending functions
and the corresponding blend factors. Addition and subtraction of triplets
is performed component-wise.
*1 SRC_ALPHA_SATURATE is valid only for source RGB and alpha blending
functions.
*2 f = min(As, 1 - Ad)."
In the "Blending State" paragraph, insert the following in place of
existing blend function state:
"The state required for blending is... four integers indicating the source
and destination blend functions for RGB and alpha.... The initial state
for both source functions is ONE. The initial state for both
destination functions is ZERO."
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
GL_INVALID_ENUM is generated if either sfactorRGB, dfactorRGB,
sfactorAlpha, or dfactorAlpha is not an accepted value.
New State
The get values BLEND_SRC and BLEND_DST return the RGB source and
destination factor, respectively.
Initial
Get Value Get Command Type Value
--------- ----------- ---- -------
BLEND_SRC_RGB_OES GetIntegerv Z11 ONE
BLEND_DST_RGB_OES GetIntegerv Z10 ZERO
BLEND_SRC_ALPHA_OES GetIntegerv Z11 ONE
BLEND_DST_ALPHA_OES GetIntegerv Z10 ZERO
New Implementation Dependent State
None
Revision History
2009/05/19 Benj Lipchak First draft of true extension specification