texgen(3G)

texgen - specify automatic generation of texture coordinates

As shipped in IRIX 6.5.5. Unchanged since IRIX 6.5.

NAME
     texgen - specify automatic generation of texture coordinates

FORTRAN SPECIFICATION
     subroutine texgen(coord, mode, params)
     integer*4 coord, mode
     real params()

PARAMETERS
     coord    Expects the name of the texture coordinate whose generation is
              to be defined, enabled, or disabled.  One of:

              TXS:  The s texture coordinate

              TXT:  The t texture coordinate

              TXR:  The r texture coordinate

              TXQ:  The q texture coordinate

     mode     Expects the mode of generation to be specified, or an indication
              that generation is to be either enabled or disabled.  One of the
              symbolic constants:

              TGCONT:  Use the plane equation specified in params to define a
              plane in eye-coordinates.  Generate a texture coordinate that is
              proportional to vertex distance from this plane.

              TGLINE:  Use the plane equation specified in params to define a
              plane in object-coordinates.  Generate a texture coordinate that
              is proportional to vertex distance from this plane.

              TGSPHE:  Generate texture coordinates based on the vertex and
              current normal.  When used with the appropriate texture
              (described below), this gives the appearance of the reflection
              of an environment placed at infinity.  Typically, both TXS or
              TXT are enabled.

              TGON:  Enable the (previously defined) replacement for the
              specified texture coordinate.

              TGOFF:  Disable replacement of the specified texture coordinate
              (the default).

     params   Expects a 4-component plane equation when mode is TGCONT or
              TGLINE.  Array element 1 is plane equation component A, 2 is B,
              3 is C, and 4 is D.  The specified contents of params are
              insignificant when mode is TGON, TGOFF, or TGSPHE.

DESCRIPTION
     Texture coordinates s, t, r, and q can be specified directly using the t
     command.  It is also possible to have texture coordinates generated
     automatically as a function of object geometry.  texgen specifies,
     enables, and disables such automatic generation.  Either or both texture
     coordinates can be generated independently.  Automatic texture coordinate
     generation is disabled by default.

     texgen supports three generation algorithms:  TGLINE, TGCONT, and TGSPHE.
     TGLINE operates directly on object coordinates, and is therefore most
     useful for textures that are locked to objects, such as ground texture
     locked to a terain, or metalic texture locked to a cylinder.  TGCONT
     operates on eye-coordinates.  It supports motion of an object through a
     `field' of texture coordinates.  TGSPHE computes a reflection based on
     the vertex and normal in eye-coordinates.

     Both modes TGLINE and TGCONT define a texture coordinate generation
     function that is a linear function of distance from a plane.  The plane
     equation is specified as a single, 4-component, vector in object
     coordinates.


          Pobject = | a |
     The TGLINE plane equation remains in object-coordinates.  The TGCONT
     plane equation is transformed by the ModelView matrix into eye-
     coordinates when it is defined:

          Peye = MM-1elView Pobject
     When a generation function has been defined for a texture coordinate, and
     texgen has been called with TGON, each vertex presented to the graphics
     system has that texture coordinate value replaced with the distance of
     the vertex from the defined plane.  For example, when texture coordinate
     s is generated by a TGLINE function, the generation function is:


          s = Vobject.Pobject = | xobject, yobject, zobject, wobject|.| a |
     Alternately, when t is generated by a TGCONT function, the generation
     function is:

          t = Veye.Peye
     where

          Veye = Vobject MModelView,
     and

          Peye = MM-1elView Pobject
     Note that the ModelView matrix that modifies the plane equation is the
     ModelView matrix in effect when texgen was called, while the ModelView
     matrix that modifies the vertex coordinates is the matrix used to
     transform that vertex.

     The creation of an appropriate texture for TGSPHE requires some
     explanation.  Consider a unit sphere centered at the viewpoint which
     represents the complete environment.  The mapping of this sphere to a 2D
     texture is captured with a formula, given below.

     Let R be an arbitrary unit vector based at the viewpoint.  s and t are
     texture coordinates in the range 0.0 to 1.0.  The texture value is taken
     from the point of intersection between R and the unit sphere.  The set of
     all possible values of R captures the complete environment.  The mapping
     from R to texture coordinates s and t is:

               mag = 2*sqrt(R.x*R.x+R.y*R.y+(R.z+1)*(R.z+1))

               s = R.x/mag+.5

               t = R.y/mag+.5

     The point in the environment directly behind the viewer maps to s = .5, t
     = .5.  The intersection between the plane z = 0 and the environment maps
     to a circle centered at s = .5, t = .5 with a radius of sqrt(2)/4.  The
     point in the environment directly in front of the viewer maps to a circle
     with a radius of .5.  This circle marks the boundary of the complete
     environment in the texture.  In a reflection, this boundary can be
     approached but not reached.  Since the view direction is fixed for each
     environment texture, a change in the view direction will require a new
     texture to be calculated.

     texgen generation functions remain valid until they are redefined.  They
     are enabled and disabled without redefinition by calls to texgen with
     modes TGON and TGOFF.  texgen definition has no effect on the enable mode
     of the texture generation function.

     When enabled, texgen replaces s, t, or both each time a vertex command is
     received.  A texture coordinate that is not being generated continues to
     be specified by t commands.  Texture coordinate are transformed by the
     Texture matrix (see mmode) following coordinate replacement by texgen.

SEE ALSO
     mmode, n, t, texdef, texbin, tevdef, tevbin, v

NOTES
     IRIS-4D G, GT, and GTX models, and the Personal Iris, do not support
     texture mapping.  texgen is ignored by these machines.  The Iris Indy,
     Indigo Entry, and XL support texture mapping except for lines.  IRIS-4D
     VGX and VGXT models, the Personal Iris, Indy, Indigo Entry, XS, XS24, XZ,
     Elan and Extreme systems do not support TXR and TXQ Use getgde to
     determine whether texture mapping is supported.

     texgen cannot be used while mmode is MSINGL.