blob: 5158b321273325d1a8418f3b476ae98b7ef3e98c [file] [log] [blame]
Name
ATI_separate_stencil
Name Strings
GL_ATI_separate_stencil
Contact
Benj Lipchak, AMD (benj.lipchak 'at' amd.com)
Evan Hart, NVIDIA (ehart 'at' nvidia.com)
IP Status
None
Version
Date: 11/04/2006
Revision: 1.1
Number
289
Dependencies
This spec is written against the 1.2.1 version of the GL spec.
This spec requires OpenGL 1.0
Overview
This extension provides the ability to modify the stencil buffer
differently based on the facing direction of the primitive that
generated the fragment.
Issues
New Procedure and Functions
StencilOpSeparateATI( GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass)
StencilFuncSeparateATI( GLenum frontfunc, GLenum backfunc, GLint ref,
GLuint mask)
New Tokens
Accepted by the <fail>, <zfail>, and <zpass> parameters of
StencilOpSeparateATI:
KEEP 0x1E00
ZERO 0x0000
REPLACE 0x1E01
INCR 0x1E02
DECR 0x1E03
INVERT 0x150A
Accepted by the <frontfunc> and <backfunc> parameters of
StencilFuncSeparateATI:
NEVER 0x0200
LESS 0x0201
LEQUAL 0x0203
GREATER 0x0204
GEQUAL 0x0206
EQUAL 0x0202
NOTEQUAL 0x0205
ALWAYS 0x0207
Accepted by the <face> parameter of StencilOpSeparateATI:
FRONT 0x0404
BACK 0x0405
FRONT_AND_BACK 0x0408
Accepted by the <pname> parameter of GetIntegerv:
STENCIL_BACK_FUNC_ATI 0x8800
STENCIL_BACK_FAIL_ATI 0x8801
STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802
STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803
Additions to Chapter 2 of the OpenGL 1.2.1 Specification (Operation)
None
Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization)
Section 3.0
Change the second paragraph on page 57 to read:
"A grid square along with its parameters of assigned color, z
(depth), texture coordinates, and facing direction is called a
fragment; the parameters are collectively dubbed the fragment's
associated data. ..."
New section added after section 3.2
"Facing Direction
A fragment derives its facing direction from the primitive that
generates the fragment. All fragments generated by primitves
other than polygons, triangles, or quadrilaterals are considered
to be front facing. For all other fragments the detemination is
made by examining the sign of the area computed by equation 2.7
of section 2.13.1 (including the possible reversal of this sign
as indicated by the last call to FrontFace). If the sign is
positive then the fragments are front facing; otherwise, they
are back facing."
Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment Operations)
Section 4.1.4
Change the first paragraph of section 4.1.4 to read:
"The stencil test conditionally discards a fragment based on a
comparison between the value in the stencil buffer at location
( xw, yw) and a reference value. The test is controlled with
void StencilFunc( enum func, int ref, uint mask);
void StencilFuncSeparateATI( enum frontfunc, enum backfunc,
int ref, uint mask);
void StencilOp( enum sfail, enum dpfail, enum dppass);
void StencilOpSeparateATI( enum face, enum sfail, enum dpfail,
enum dppass);
The test is enabled or disabled with the Enable and Disable
commands, using the symbolic constant STENCIL_TEST. When disabled,
the stencil test and the associated modifications are not made,
and the fragment is always passed. Additionally, the stencil test
may treat front and back faces separately. The function
StencilFuncSeparateATI sets each independently, while the function
Stencil func sets both front and back to the same test."
Change the third paragraph of section 4.1.4 to read:
"StencilOp and StencilOpSeparateATI take three arguments that indicate
what happens to the stored stencil value if this or certain
subsequent tests fail or pass. StencilOp sets the ops for both front
and back facing fragments, while StencilOpSeparateATI sets the ops for
front facing, back facing, or both types of fragments based on the face
parameter. ..."
Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions)
None
Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and State Requests)
Additions to Table 6.15 Pixel Operations
Initial
Get Value Type Get Cmnd Value Description Sec. Attribute
---------- ------ --------- --------- ------------ ----- -------------
STENCIL_BACK_FUNC_ATI Z8 GetIntegerv ALWAYS 4.1.4 Stencil-buffer
STENCIL_BACK_FAIL_ATI Z6 GetIntegerv KEEP 4.1.4 Stencil-buffer
STENCIL_BACK_PASS_DEPTH_FAIL_ATI Z6 GetIntegerv KEEP 4.1.4 Stencil-buffer
STENCIL_BACK_PASS_DEPTH_PASS_ATI Z6 GetIntegerv KEEP 4.1.4 Stencil-buffer
STENCIL_OP_SEPARATE_FACE_ATI B IsEnabled FALSE 4.1.4 Stencil-buffer