blob: c724d26b9b44c27b9a177094dae43916e4ae4c5c [file] [log] [blame]
Name
QCOM_alpha_test
Name Strings
GL_QCOM_alpha_test
Contact
Maurice Ribble (mribble 'at' qualcomm.com)
Contributors
Benj Lipchak
Maurice Ribble
Status
Complete.
Version
Last Modified Date: October 11, 2010
Revision: #2
Number
OpenGL ES Extension #89
Dependencies
OpenGL ES 2.0 is required.
This extension is written against the OpenGL ES 2.0 specification.
Overview
This extension reintroduces the alpha test per-fragment operation
from OpenGL ES 1.x. Some hardware has a dedicated unit capable of
performing this operation, and it can save ALU operations in the fragment
shader by avoiding the conditional discard.
New Procedures and Functions
void AlphaFuncQCOM(enum func, clampf ref);
New Tokens
Accepted by the <cap> parameter of Enable and Disable, and IsEnabled, and by
the <pname> parameter of GetBooleanv, GetIntegerv, and GetFloatv:
ALPHA_TEST_QCOM 0x0BC0
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, and
GetFloatv:
ALPHA_TEST_FUNC_QCOM 0x0BC1
ALPHA_TEST_REF_QCOM 0x0BC2
Accepted by the <func> parameter of AlphaFuncQCOM:
NEVER
LESS
EQUAL
LEQUAL
GREATER
NOTEQUAL
GEQUAL
ALWAYS
Additions to Chapter 4 of the OpenGL ES 2.0 Specification (Per-Fragment
Operations)
Add a new section 4.1.4 - Alpha Test
The alpha test discards a fragment conditional on the outcome of a
comparison between the incoming fragment's alpha value and a constant
value. The comparison is enabled or disabled with the generic Enable
and Disable commands using the symbolic constant ALPHA_TEST. When
disabled, it is as if the comparison always passes. The test is
controlled with
void AlphaFuncQCOM(enum func, clampf ref);
<func> is a symbolic constant indicating the alpha test function; <ref>
is a reference value. <ref> is clamped to lie in [0,1], and then
converted to a fixed-point value according to the rules given for an A
component in section 2.12.8. For purposes of the alpha test, the
fragment's alpha value is also rounded to the nearest integer. The
possible constants specifying the test function are NEVER, ALWAYS, LESS,
LEQUAL, EQUAL, GEQUAL, GREATER, or NOTEQUAL, meaning pass the fragment
never, always, if the fragment's alpha value is less than, less than or
equal to, equal to, greater than or equal to, greater than, or not equal
to the reference value, respectively.
The required state consists of the floating-point reference value, an
eight-valued integer indicating the comparison function, and a bit
indicating if the comparison is enabled or disabled. The initial state
is for the reference value to be 0 and the function to be ALWAYS.
Initially, the alpha test is disabled.
Errors
None
New State
(table 6.17, Pixel Operations) add the following entries:
Initial
Get Value Type Get Command Value Description Section
------------------- ---- ----------- ------ ------------------- -------
ALPHA_TEST_QCOM B IsEnabled False Alpha test enabled 4.1.4
ALPHA_TEST_FUNC_QCOM Z8 GetIntegerv ALWAYS Alpha test function 4.1.4
ALPHA_TEST_REF_QCOM R+ GetFloatv 0 Alpha test reference 4.1.4
value
Revision History
#01 11/04/2007 Benj Lipchak Created based on ES 1.1 spec language.
#02 10/11/2010 Maurice Ribble Updated to be QCOM extension and fixed
some wording.