Name ATI_texture_env_combine3 Name Strings GL_ATI_texture_env_combine3 Contact Dan Ginsburg, AMD (dan.ginsburg 'at' amd.com) Evan Hart, NVIDIA (ehart 'at' nvidia.com) Notice Copyright ATI Corporation, 2002. IP Status None. Version Date: 11/04/2006 Revision: 1.02 Number None. Dependencies ARB_texture_env_combine is required and is modified by this extension ARB_multitexture affects the definition of this extension Overview Adds new set of operations to the texture combiner operations. MODULATE_ADD_ATI Arg0 * Arg2 + Arg1 MODULATE_SIGNED_ADD_ATI Arg0 * Arg2 + Arg1 - 0.5 MODULATE_SUBTRACT_ATI Arg0 * Arg2 - Arg1 where Arg0, Arg1 and Arg2 are derived from PRIMARY_COLOR_ARB primary color of incoming fragment TEXTURE texture color of corresponding texture unit CONSTANT_ARB texture environment constant color PREVIOUS_ARB result of previous texture environment; on texture unit 0, this maps to PRIMARY_COLOR_ARB In addition, the result may be scaled by 1.0, 2.0 or 4.0. Note that in addition to providing more flexible equations new source inputs have been added for zero and one. Issues None New Procedures and Functions None New Tokens Accepted by the parameter of TexEnvf, TexEnvi, TexEnvfv, and TexEnviv when the parameter value is COMBINE_RGB_ARB or COMBINE_ALPHA_ARB MODULATE_ADD_ATI 0x8744 MODULATE_SIGNED_ADD_ATI 0x8745 MODULATE_SUBTRACT_ATI 0x8746 Accepted by the parameter of TexEnvf, TexEnvi, TexEnvfv, and TexEnviv when the parameter value is SOURCE0_RGB_ARB, SOURCE1_RGB_ARB, SOURCE2_RGB_ARB, SOURCE0_ALPHA_ARB, SOURCE1_ALPHA_ARB, or SOURCE2_ALPHA_ARB ZERO ONE Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation) None Additions to Chapter 3 of the OpenGL 1.2 Specification (Rasterization) Added to subsection 3.8.9, before the paragraph describing the state requirements: If the value of TEXTURE_ENV_MODE is COMBINE_ARB, the form of the texture function depends on the values of COMBINE_RGB_ARB and COMBINE_ALPHA_ARB, according to table 3.20. The RGB and ALPHA results of the texture function are then multiplied by the values of RGB_SCALE_ARB and ALPHA_SCALE, respectively. The results are clamped to [0,1]. COMBINE_RGB_ARB Texture Function ------------------ ---------------- REPLACE Arg0 MODULATE Arg0 * Arg1 ADD Arg0 + Arg1 SIGNED_ADD_ARB Arg0 + Arg1 - 0.5 INTERPOLATE_ARB Arg0 * (Arg2) + Arg1 * (1-Arg2) SUBTRACT_ARB Arg0 - Arg1 MODULATE_ADD_ATI Arg0 * Arg2 + Arg1 MODULATE_SIGNED_ADD_ATI Arg0 * Arg2 + Arg1 - 0.5 MODULATE_SUBTRACT_ATI Arg0 * Arg2 - Arg1 COMBINE_ALPHA_ARB Texture Function ------------------ ---------------- REPLACE Arg0 MODULATE Arg0 * Arg1 ADD Arg0 + Arg1 SIGNED_ADD_ARB Arg0 + Arg1 - 0.5 INTERPOLATE_ARB Arg0 * (Arg2) + Arg1 * (1-Arg2) SUBTRACT_ARB Arg0 - Arg1 MODULATE_ADD_ATI Arg0 * Arg2 + Arg1 MODULATE_SIGNED_ADD_ATI Arg0 * Arg2 + Arg1 - 0.5 MODULATE_SUBTRACT_ATI Arg0 * Arg2 - Arg1 The arguments Arg0, Arg1 and Arg2 are determined by the values of SOURCE_RGB_ARB, SOURCE_ALPHA_ARB, OPERAND_RGB_ARB and OPERAND_ALPHA_ARB. In the following two tables, Ct and At are the filtered texture RGB and alpha values; Cc and Ac are the texture environment RGB and alpha values; Cf and Af are the RGB and alpha of the primary color of the incoming fragment; and Cp and Ap are the RGB and alpha values resulting from the previous texture environment. On texture environment 0, Cp and Ap are identical to Cf and Af, respectively. The relationship is described in tables 3.21 and 3.22. SOURCE_RGB_ARB OPERAND_RGB_ARB Argument ----------------- -------------- -------- TEXTURE SRC_COLOR Ct ONE_MINUS_SRC_COLOR (1-Ct) SRC_ALPHA At ONE_MINUS_SRC_ALPHA (1-At) CONSTANT_ARB SRC_COLOR Cc ONE_MINUS_SRC_COLOR (1-Cc) SRC_ALPHA Ac ONE_MINUS_SRC_ALPHA (1-Ac) PRIMARY_COLOR_ARB SRC_COLOR Cf ONE_MINUS_SRC_COLOR (1-Cf) SRC_ALPHA Af ONE_MINUS_SRC_ALPHA (1-Af) PREVIOUS_ARB SRC_COLOR Cp ONE_MINUS_SRC_COLOR (1-Cp) SRC_ALPHA Ap ONE_MINUS_SRC_ALPHA (1-Ap) ZERO SRC_COLOR 0 ONE_MINUS_SRC_COLOR 1 SRC_ALPHA 0 ONE_MINUS_SRC_ALPHA 1 ONE SRC_COLOR 1 ONE_MINUS_SRC_COLOR 0 SRC_ALPHA 1 ONE_MINUS_SRC_ALPHA 0 Table 3.21: Arguments for COMBINE_RGB_ARB functions SOURCE_ALPHA_ARB OPERAND_ALPHA_ARB Argument ----------------- -------------- -------- TEXTURE SRC_ALPHA At ONE_MINUS_SRC_ALPHA (1-At) CONSTANT_ARB SRC_ALPHA Ac ONE_MINUS_SRC_ALPHA (1-Ac) PRIMARY_COLOR_ARB SRC_ALPHA Af ONE_MINUS_SRC_ALPHA (1-Af) PREVIOUS_ARB SRC_ALPHA Ap ONE_MINUS_SRC_ALPHA (1-Ap) ZERO SRC_ALPHA 0 ONE_MINUS_SRC_ALPHA 1 ONE SRC_ALPHA 1 ONE_MINUS_SRC_ALPHA 0 Table 3.22: Arguments for COMBINE_ALPHA_ARB functions Additions to Chapter 4 of the OpenGL 1.2 Specification (Per-Fragment Operations and the Framebuffer) None Additions to Chapter 5 of the OpenGL 1.2 Specification (Special Functions) None Additions to Chapter 6 of the OpenGL 1.2 Specification (State and State Requests) None New State None New Implementation Dependent State None Revision History Date: 3/29/2010 Revision: 1.03 - (pbrown @ NVIDIA) Fix the "Name Strings" section to include a "GL" prefix. Date: 11/4/2006 Revision: 1.02 - Updated contact info after ATI/AMD merger. Date: 8/02/2002 Revision: 1.01 - Changed constant MODULATE_ADD_SIGNED_ATI to MODULATE_SIGNED_ADD_ATI. Date: 8/01/2002 Revision: 1.0 - First release based on ATIX version.