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 parameter of Enable and Disable, and IsEnabled, and by the parameter of GetBooleanv, GetIntegerv, and GetFloatv: ALPHA_TEST_QCOM 0x0BC0 Accepted by the parameter of GetBooleanv, GetIntegerv, and GetFloatv: ALPHA_TEST_FUNC_QCOM 0x0BC1 ALPHA_TEST_REF_QCOM 0x0BC2 Accepted by the 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); is a symbolic constant indicating the alpha test function; is a reference value. 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.