"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/docs/specs/OLD/MESA_sprite_point.spec" (16 Sep 2020, 5767 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) RPM Spec source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 Name
    2 
    3     MESA_sprite_point
    4 
    5 Name Strings
    6 
    7     GL_MESA_sprite_point
    8 
    9 Contact
   10 
   11     Brian Paul, VA Linux Systems Inc. (brianp 'at' valinux.com)
   12 
   13 Status
   14 
   15     Obsolete - see GL_ARB_point_sprite.
   16 
   17 Version
   18 
   19 
   20 Number
   21 
   22     ???
   23 
   24 Dependencies
   25 
   26     GL_EXT_point_parameters effects the definition of this extension
   27     GL_ARB_multitexture effects the definition of this extension
   28 
   29 Overview
   30     
   31     This extension modifies the way in which points are rendered,
   32     specifically when they're textured.  When SPRITE_POINT_MESA is enabled
   33     a point is rendered as if it were a quadrilateral with unique texture
   34     coordinates at each vertex.  This extension effectively turns points
   35     into sprites which may be rendered more easily and quickly than using
   36     conventional textured quadrilaterals.
   37 
   38     When using point size > 1 or attenuated points this extension is an
   39     effective way to render many small sprite images for particle systems
   40     or other effects.
   41 
   42 Issues:
   43 
   44     1. How are the texture coordinates computed?
   45 
   46        The lower-left corner has texture coordinate (0,0,r,q).
   47        The lower-right, (1,0,r,q).  The upper-right, (1,1,r,q).
   48        The upper-left, (0,1,r,q).
   49 
   50     2. What about texgen and texture matrices?
   51 
   52        Texgen and the texture matrix have no effect on the point's s and t
   53        texture coordinates.  The r and q coordinates may have been computed
   54        by texgen or the texture matrix.  Note that with a 3D texture and/or
   55        texgen that the r coordinate could be used to select a slice in the
   56        3D texture.
   57 
   58     3. What about point smoothing?
   59 
   60        When point smoothing is enabled, a triangle fan could be rendered
   61        to approximate a circular point.  This could be problematic to
   62        define and implement so POINT_SMOOTH is ignored when drawing sprite
   63        points.
   64 
   65        Smoothed points can be approximated by using an appropriate texture
   66        images, alpha testing and blending.
   67 
   68        POLYGON_SMOOTH does effect the rendering of the quadrilateral, however.
   69 
   70     4. What about sprite rotation?
   71 
   72        There is none.  Sprite points are always rendered as window-aligned
   73        squares.  One could define rotated texture images if desired.  A 3D
   74        texture and appropriate texture r coordinates could be used to
   75        effectively specify image rotation per point.
   76 
   77     5. What about POLYGON_MODE?
   78 
   79        POLYGON_MODE does not effect the rasterization of the quadrilateral.
   80 
   81     6. What about POLYGON_CULL?
   82 
   83        TBD.  Polygon culling is normally specified and implemented in the
   84        transformation stage of OpenGL.  However, some rasterization hardware
   85        implements it later during triangle setup.
   86 
   87        Polygon culling wouldn't be useful for sprite points since the
   88        quadrilaterals are always defined in counter-clockwise order in
   89        window space.  For that reason, polygon culling should probably be
   90        ignored.
   91 
   92     7. Should sprite points be alpha-attenuated if their size is below the
   93        point parameter's threshold size?
   94 
   95     8. Should there be an advertisized maximum sprite point size?
   96 
   97        No.  Since we're rendering the point as a quadrilateral there's no
   98        need to limit the size.
   99 
  100 
  101 New Procedures and Functions
  102 
  103     None.
  104 
  105 New Tokens
  106     
  107     Accepted by the <pname> parameter of Enable, Disable, IsEnabled,
  108     GetIntegerv, GetBooleanv, GetFloatv and GetDoublev:
  109 
  110     SPRITE_POINT_MESA       0x????
  111         MAX_SPRITE_POINT_SIZE_MESA      0x????   (need this?)
  112 
  113 Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
  114 
  115     None
  116 
  117 Additions to Chapter 3 of the 1.1 Specification (Rasterization)
  118 
  119     Section ???.
  120 
  121     When SPRITE_POINT_MESA is enabled points are rasterized as screen-
  122     aligned quadrilaterals.  If the four vertices of the quadrilateral
  123     are labeled A, B, C, and D, starting at the lower-left corner and moving
  124     counter-clockwise around the quadrilateral, then the vertex and
  125     texture coordinates are computed as follows:
  126 
  127       vertex   window coordinate       texture coordinate
  128         A      (x-r, y-r, z, w)          (0, 0, r, q)
  129         B      (x+r, y-r, z, w)          (1, 0, r, q)
  130         C      (x+r, y+r, z, w)          (1, 1, r, q)
  131         D      (x-r, y+r, z, w)          (0, 1, r, q)
  132 
  133     where x, y, z, w are the point's window coordinates, r and q are the
  134     point's 3rd and 4th texture coordinates  and r is half the point's
  135     size.  The other vertex attributes (such as the color and fog coordinate)
  136     are simply duplicated from the original point vertex.
  137 
  138     Point size may either be specified with PointSize or computed
  139     according to the EXT_point_parameters extension.
  140 
  141     The new texture coordinates are not effected by texgen or the texture
  142     matrix.  Note, however, that the texture r and q coordinates are passed
  143     unchanged and may have been computed with texgen and/or the texture
  144     matrix.
  145 
  146     If multiple texture units are present the same texture coordinate is
  147     used for all texture units.
  148 
  149     The point is then rendered as if it were a quadrilateral using the
  150     normal point sampling rules.  POLYGON_MODE does not effect the
  151     rasterization of the quadrilateral but POLYGON_SMOOTH does.
  152 
  153     POINT_SMOOTH has no effect when SPRITE_POINT_MESA is enabled.
  154 
  155 Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations
  156 and the Frame Buffer)
  157 
  158     None.
  159 
  160 Additions to Chapter 5 of the 1.1 Specification (Special Functions)
  161 
  162     None
  163 
  164 Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
  165 
  166     None
  167 
  168 Additions to the GLX Specification
  169 
  170     None
  171 
  172 GLX Protocol
  173 
  174     TBD
  175 
  176 Errors
  177 
  178     None
  179 
  180 New State
  181 
  182     Add boolean variable SPRITE_POINT_MESA to the point attribute group.
  183 
  184 Revision History
  185 
  186     Version 1.0 - 4 Dec 2000
  187         Original draft.
  188 
  189 
  190