glSampleMaskEXT

NAME

glSampleMaskEXT - define mask to modify multisampled pixel fragments

C SPECIFICATION

void glSampleMaskEXT(GLclampf value,
                     GLboolean invert)

PARAMETERS

value Specifies coverage of the modification mask. Clamped to the range [0, 1]; zero implies no coverage, and one implies full coverage.
invert GL_FALSE to use the modification mask implied by value; GL_TRUE to use the bitwise inverse of that mask.

DESCRIPTION

glSampleMaskEXT defines a mask to modify the coverage of multisampled pixel fragments. This capability is used for antialiased screen-door transparency and smooth transitions between two renderings of an object (often for level-of-detail management in simulation systems).

When multisampling is enabled (see glEnable with argument GL_MULTISAMPLE_EXT) a "fragment mask" is computed for each fragment generated by a primitive. This mask reflects the amount of the pixel covered by the fragment, and determines the frame buffer samples that may be affected by the fragment.

If conversion of alpha values to masks is enabled (glEnable with argument GL_SAMPLE_ALPHA_TO_MASK_EXT), the fragment alpha value is used to generate a temporary modification mask which is then ANDed with the fragment mask. One way to interpret this is as a form of dithering: a multivalued alpha (coverage or opacity) for the whole fragment is converted to simple binary values of coverage at many locations (the samples).

After conversion of alpha values to masks, if replacement of alpha values is enabled (glEnable with argument GL_SAMPLE_ALPHA_TO_ONE_EXT), the fragment's alpha is set to the maximum allowable value.

Finally, if fragment mask modification is enabled (glEnable with argument GL_SAMPLE_MASK_EXT), glSampleMaskEXT defines an additional modification mask value which is used to generate a modification mask in much the same way alpha was used above. If invert is GL_TRUE, the modification mask specified by value will be inverted. The final modification mask will then be ANDed with the fragment mask resulting from the previous steps. This can be viewed as an "override" control that selectively fades the effects of multisampled fragments.

Note that glSampleMaskEXT(value, GL_TRUE) is not necessarily equivalent to glSampleMaskEXT(1.0-value, GL_FALSE); due to round-off and other issues, complementing the coverage will not necessarily yield an inverted modification mask.

EXTENSIONS

Some routines and constants for this function are part of an extension, not part of the core GL command set. The following extension names must be present in the string returned by glGetString when called with argument GL_EXTENSIONS to use these routines and constants.
GL_EXT_multisample
glSampleMaskEXT is part of the EXT_multisample extension.

ERRORS

GL_INVALID_OPERATION is generated if glSampleMaskEXT is executed between the execution of glBegin and the corresponding execution of glEnd.

ASSOCIATED GETS

glGet with argument GL_SAMPLE_MASK_VALUE_EXT, or GL_SAMPLE_MASK_INVERT_EXT
glIsEnabled with argument GL_MULTISAMPLE_EXT, GL_SAMPLE_ALPHA_TO_MASK, GL_SAMPLE_ALPHA_TO_ONE_EXT, GL_SAMPLE_MASK_EXT

SEE ALSO

glSamplePatternEXT