Name

    3DFX_tbuffer

Name Strings

    GL_3DFX_tbuffer

Contact

    Paula Womack, 3dfx Interactive (paulaw 'at' 3dfx.com)

Status

    Complete

Version

    Date: April 13, 2000; Revision: 1.0

Number

    208

Dependencies

    OpenGL 1.1 is required.
    Either SGIS_multisample or 3DFX_multisample is required.
    This specification is written against OpenGL 1.2.

Overview

    This extension allows a write mask to be defined for the fragment
    mask which is created during multisample rendering. This can be used
    to create effects such as motion blur and depth of field.

IP Status

    3DFX has filed for patent protection for some of the techniques
    described in this extension document.

Issues

    None.

New Procedures and Functions

    void TbufferMask3DFX(uint mask);

New Tokens

    None.

Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)

    None

Additions to Chapter 3 of the 1.2 Specification (Rasterization)

    The value of TBUFFER_WRITE_MASK_3DFX is specified by calling
    TbufferMask3DFX, with mask set to the desired mask value. If
    multisample rendering is enabled then the n least significant bits
    of TBUFFER_WRITE_MASK_3DFX are bitwise ANDed with the fragment
    sample mask, where n is equal to SAMPLES_3DFX.

Additions to 3.3.2 Point Multisample Rasterization:

    Following the sentence "Mask bits that correspond to sample points
    that intersect the circular region are 1, other mask bits are 0."
    add "The fragment mask thus computed, is then bitwise ANDed with the
    SAMPLES_3DFX least significant bits of TBUFFER_WRITE_MASK_3DFX.

Additions to 3.4.4 Line Multisample Rasterization:

    Following the sentence "Mask bits that correspond to sample points
    that intersect a retained rectangle are 1, other mask bits are 0."
    add "The fragment mask thus computed, is then bitwise ANDed with the
    SAMPLES_3DFX least significant bits of TBUFFER_WRITE_MASK_3DFX.

Additions to 3.5.6 Polygon Multisample Rasterization:

    Following the sentence "Mask bits that correspond to sample points
    that satisfy the point sampling criteria are 1, other mask bits are
    0." add "The fragment mask thus computed, is then bitwise ANDed with
    the SAMPLES_3DFX least significant bits of TBUFFER_WRITE_MASK_3DFX.

Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations and
the Frame Buffer)

    None

Additions to Chapter 5 of the 1.2 Specification (Special Functions)

    None

Additions to Chapter 6 of the 1.2 Specification (State and State Requests)

    An additional group of multisample state variables is defined by the
    SGIS_multitexture and 3DFX_multitexture extensions. When PushAttrib
    is called with bit MULTISAMPLE_BIT_SGIS or MULTISAMPLE_BIT_3DFX set,
    the multisample group of state variables is pushed onto the
    attribute stack. When PopAttrib is called, these state variables are
    restored to their previous values if they were pushed. This
    extension adds state to the multisample group of state variables.

Additions to the GLX Specification

    None.

Errors

    INVALID_OPERATION is generated if TbufferWriteMask3DFX is called
    between the execution of Begin and the execution of the
    corresponding End.

New State

    Get Value		    Get Command Type	Initial Value	Attribute
    ---------		    ----------- ----	-------------	---------
    TBUFFER_WRITE_MASK_3DFX GetIntegerv Z+	1's		multisample

Revision History
