Back to the OpenGL extension cross reference

GL_SGIX_reference_plane


Name


    SGIX_reference_plane

Name String


    GL_SGIX_reference_plane

Version


    $Date: 1996/03/08 00:11:51 $ $Revision: 1.5 $

Number


    60

Dependencies


    None

Overview


    This extension allows a group of coplanar primitives to be rendered
without depth-buffering artifacts. This is accomplished by generating
the depth values for all the primitives from a single ``reference plane''
rather than from the primitives themselves. This ensures that all the
primitives in the group have exactly the same depth value at any given
sample point, no matter what imprecision may exist in the original
specifications of the primitives or in the GL's coordinate transformation
process.

The reference plane is defined by a four-component plane equation.
When glReferencePlaneSGIX is called, equation is transformed by the
transpose-adjoint of a matrix that is the complete object-coordinate
to clip-coordinate transformation. The resulting clip-coordinate
coefficients are transformed by the current viewport when the reference
plane is enabled.

The reference plane is enabled and disabled with glEnable and glDisable.

If the reference plane is enabled, a fragment (xf,yf,zf) will have a
new z coordinate generated from (xf,yf) by giving it the same z value
that the reference plane would have at (xf,yf).

Issues


    * What should the default reference plane be?
- (0,0,1,0) in window coords seems good

* What happens if the reference plane does not intersect the view frustum?
- can disallow enabling of the plane, or substitute the default plane.

* Should it be possible to query the validity of the reference plane just
like RasterPos?
- could be useful

New Procedures and Functions


    void glReferencePlaneSGIX(const GLdouble *equation);

New Tokens


    Accepted by the <pname> parameter of glGet, and the <cap> parameter
of glEnable, glDisable, and glIsEnabled:

REFERENCE_PLANE_SGIX

Accepted by the <pname> parameter of glGet:

REFERENCE_PLANE_EQUATION_SGIX

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


    None

additions to Chapter 3 of the 1.0 Specification (Rasterization)

If enabled, the reference plane is used to calculate the fragment's z
value based on the fragment's x and y values and the reference plane
itself.

Let the reference plane be defined by a four-component plane equation
in window coordinates.

a*x + b*y + c*z + d = 0.0

then if the incoming fragment has an x value of xf and a y value of yf,
the fragment's z value zf will be:

zf = -(d + a*xf + b*yf) / c;

The generated zf is undefined if it falls outside the valid zbuffer range.
(That is what KONA does).

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


    None

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


    None

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


    None

Additions to the GLX Specification


    A new GL rendering command is needed to support
ReferencePlaneSGIX(). The following command is sent to the
server as part of a glXRender request:

ReferencePlaneSGIX
2 20 rendering command length
2 TBD rendering command opcode
4 FLOAT32 a (x coefficient) of plane equation
4 FLOAT32 b (y coefficient) of plane equation
4 FLOAT32 c (z coefficient) of plane equation
4 FLOAT32 d (constant term) of plane equation

No new protocol is required to handle state retrieval.

Errors


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

New State


    Get Value                       Get Command  Type  Initial Value     Attrib
--------- ----------- ---- ------------- ------
REFERENCE_PLANE_SGIX IsEnabled B FALSE transform/enable
REFERENCE_PLANE_EQUATION_SGIX GetFloatv V ??? transform

The plane coefficiants returned by Get() are in clip coordinates.

Implementation Support


   List of OpenGL implementations supporting the GL_SGIX_reference_plane extension

Original File


   Original text file for the GL_SGIX_reference_plane extension


Page generated on Sun Nov 20 18:38:41 2005