Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ texgen(3G) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought



texgen(3G)                                                          texgen(3G)



NAME
     texgen - specify automatic generation of texture coordinates

C SPECIFICATION
     void texgen(long coord, long mode, float 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:

              TGCONTOUR:  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.

              TGLINEAR:  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.

              TGSPHEREMAP:  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 and
              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 TGCONTOUR or
              TGLINEAR.  Array element 0 is plane equation component A, 1 is
              B, 2 is C, and 3 is D.  The specified contents of params are
              insignificant when mode is TGON, TGOFF, or TGSPHEREMAP.

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,



                                                                        Page 1





texgen(3G)                                                          texgen(3G)



     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:  TGLINEAR, TGCONTOUR, and
     TGSPHEREMAP.  TGLINEAR 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.  TGCONTOUR operates on eye-coordinates.  It supports motion of
     an object through a `field' of texture coordinates.  TGSPHEREMAP
     computes a reflection based on the vertex and normal in eye-coordinates.

     Both modes TGLINEAR and TGCONTOUR 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.

| a |
| b |
P =
object | c |
| d |
The TGLINEAR plane equation remains in object-coordinates. The TGCONTOUR plane equation is transformed by the ModelView matrix into eye-coordinates when it is defined:
-1
P = M P
eye ModelView object
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 TGLINEAR function, the generation function is:
| a |
. | |.| b |
s = V P = x y z w
object object | object, object, object, object| | c |
| d |
Alternately, when t is generated by a TGCONTOUR function, the generation function is:
.
t = V P
eye eye
where V = V M
eye object ModelView,
and
-1
P = M P
eye ModelView object
Page 2


texgen(3G)                                                          texgen(3G)



     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 TGSPHEREMAP 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, texdef2d, texdef3d, texbind, tevdef, tevbind, 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 getgdesc to
     determine whether texture mapping is supported.



                                                                        Page 3





texgen(3G)                                                          texgen(3G)



     texgen cannot be used while mmode is MSINGLE.






















































                                                                        Page 4



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026