home *** CD-ROM | disk | FTP | other *** search
- Name
-
- SGIX_reference_plane
-
- Name String
-
- GL_SGIX_reference_plane
-
- Version
-
- $Date: 1996/04/01 23:23:11 $ $Revision: 1.1 $
-
- 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.
-
-