psx.wiki

libraries/libgte: Difference between revisions

Revision as of 02:58, 23 October 2026
RemmyLee
(Run-time library pages: 20 libraries from the Library Overview and Reference 4.4)
Revision as of 03:05, 23 October 2026
RemmyLee
(File libraries under their SDK: /sdk/psy-q/; Psy-Q page; sidebar SDKs and System software)
Line 1:Line 1:
−---
−title: Basic Geometry Library (libgte)
−type: component
−summary: Provides functions for high-speed geometry operations on the GTE coprocessor.
−category: Libraries
−info: Library = libgte.lib
−info: Header File = libgte.h
−---
−
−## Overview
−
−The Basic Geometry Library (libgte) uses the GTE coprocessor of the CPU to perform geometry operations at high speed. On the PlayStation, polygons are not drawn as soon as they are calculated. The polygons of a screen are first calculated, then sorted, and only then drawn, and libgte performs the first of these steps.[^oxi][^o9-3]
−
−A program that uses libgte links with libgte.lib and includes libgte.h.[^r8-21]
−
−## Geometry Operations
−
−The GTE performs two types of calculation. Coordinate calculation converts three-dimensional coordinates into two-dimensional screen coordinates by coordinate and perspective conversion. Light source calculation finds the color of each vertex from the direction and intensity of the light source and the position of the polygon.[^o9-3]
−
−## Coordinate Calculation
−
−libgte uses three fixed coordinate systems:[^o9-3]
−
−Table: Coordinate systems
−
−| Coordinate system | Contents |
−| --- | --- |
−| Local | The fixed coordinate system of the object |
−| World | The fixed coordinates of the world in which the object is placed |
−| Screen | The fixed coordinates of the screen |
−
−An object consists of several polygons and a screen of several objects, so a screen may have several local coordinate systems. The vertices of a polygon are normally given in local coordinates. They are converted from local to world coordinates by the world/local matrix [WLij] and translating vector, and from world to screen coordinates by the screen/world matrix [SWij] and translating vector.[^o9-3][^o9-4]
−
−The two conversions combine into one rotation matrix (RTM) and one translating vector (TRV). SetRotMatrix() and SetTransMatrix() set these as the constant rotation matrix and constant translating vector of the GTE, and they need not change while the coordinate system and position stay the same. When each object has its own local coordinate system, however, each must be set separately.[^o9-4]
−
−RotTrans() converts a local coordinate to a screen coordinate with the constant rotation matrix and translating vector. The result is a parallel projection. In real vision, however, a distant object appears small, so the coordinate must also be converted for perspective.[^o9-4]
−
−## Perspective Conversion
−
−Perspective conversion multiplies the X and Y components of the screen coordinate by h/Sz, where h is the distance from the eye to the screen. RotTransPers() performs RotTrans() and the perspective conversion together and adds the screen offset (OFX, OFY) to the result. It also calculates the depth cueing interpolation coefficient p at the same time.[^o9-5]
−
−## Light Source Calculation
−
−The GTE uses a parallel light source with complete diffusion reflection. The point of view therefore has no effect, and the lighting is determined by the attributes of the light source and the polygon. Each vertex has a normal line vector, usually in local coordinates, and a vertex color.[^o9-5]
−
−A light source has a light source vector (direction and intensity) and a color, and the ambient color is present at every vertex. Because the light is parallel it has no position, and since it is the same for every object it is given in world coordinates.[^o9-5]
−
−The color of a vertex on the screen is calculated in five steps. The normal is converted to world coordinates, and its inner product with the light source vector gives the light source effect. This effect is multiplied by the light color, the ambient color is added, and the vertex color is multiplied by the sum.[^o9-5][^o9-6]
−
−With three light sources, the first two steps become one product of a 3 x 3 matrix and the local normal. This matrix is the local light matrix (LLM). Consequently, the normal of each polygon need not be converted to world coordinates, and only the LLM is calculated for each object. In the same way the three light colors form the local color matrix (LCM).[^o9-6][^o9-7]
−
−The LLM and LCM are GTE constant matrices like the rotation matrix. The constants are set by the following functions:[^o9-4][^o9-7][^o9-9]
−
−Table: GTE constant matrices and colors
−
−| Name | Set by |
−| --- | --- |
−| Rotation matrix | SetRotMatrix() |
−| Translating vector | SetTransMatrix() |
−| Local light matrix | SetLightMatrix() |
−| Local color matrix | SetColorMatrix() |
−| Back color (BK), the ambient color | SetBackColor() |
−| Far color (FC) | SetFarColor() |
−
−NormalColorCol() performs the whole light source calculation of a vertex in one call. The GTE calls the light source effect the local color (LC).[^o9-7]
−
−The normal line vector of each vertex points from the front of the polygon into the object. The light source vector is the direction of the rays and not the position of the light.[^o9-8]
−
−## GPU Code
−
−The GTE has a register that holds the GPU packet code. The light source functions write the RGB value with the code in the top byte, so the color word of a GPU packet is made with one memory write. If the code register is wrong the packet is not made correctly.[^o9-8]
−
−Intpl(), NormalColor() and NormalColor3() have no input color vector, so SetRGBcd() must set the color and code before they are called. Functions that take a color vector copy the code from the upper 8 bits of that vector. ColorCol(), DpqColor() and NormalColorCol() are among them.[^o9-8]
−
−## Normal Line Clipping
−
−Normal line clipping raises the drawing speed by not drawing polygons that face away from the viewer. The sign of the Z component of the polygon normal in screen coordinates decides which side is visible. It is effective for a closed surface such as a sphere and also reduces the Z sorting problem.[^o9-8]
−
−NormalClip() calculates the two-dimensional vector product of two sides of a triangle from the screen coordinates of its three vertices. With the viewpoint toward negative Z, it returns a positive value when the vertices run clockwise as seen from the viewpoint.[^o9-8]
−
−RotNclip(), RotNclip3(), RotNclip4(), RotAverageNclip3(), RotAverageNclip4(), RotAverageNclipColorDpq3() and RotAverageNclipColorCol3() make the same test. When the vector product is negative or 0 they stop the coordinate calculation and return incorrect sx and sy, so the vertices of each polygon must be modeled clockwise as seen from the front. The four-vertex functions test the first three vertices only.[^o9-9]
−
−## Depth Cueing
−
−Depth cueing makes distant objects appear hazy by blending the polygon color with the far color as a function of the screen Z value. With a white far color distant objects appear in fog, and with a black far color they appear dark. To blend into the background, the far color must match the background (BG) color, which is different from the back color (BK).[^o9-9]
−
−SetFogNear(), SetFogFar() or SetFogNearFar() set the depth range. The RotTransPers() functions then return the interpolation coefficient p, which saturates at 0 for small Z and at 4096 for large Z. The interpolation is ((o x p) + (f x (4096 - p))) / 4096, where o is the original color and f is the far color.[^o9-10]
−
−When the far color equals the background color, a polygon with p = 4096 need not be drawn. otz2p() gives an approximate p for an otz value and p2otz() the reverse. Both functions use division and are relatively expensive.[^o9-10]
−
−Vertex color depth cueing is used for non-textured polygons, and for textured polygons when the far color is black or very dark. The program sets the depth with the SetFog functions and the far color with SetFarColor(), gets p for each vertex from a RotTransPers() function and passes it to NormalColorDpq() or a similar function.[^o9-10]
−
−Texture depth cueing blends the texture or the CLUT with the far color. The data for each value of p is prepared beforehand or made at run time with DpqColor(). The program then changes the CLUT or texture in the frame buffer, so the polygon packets need not change. There are three methods of changing the frame buffer:[^o9-10][^o9-11][^o9-12]
−
−Table: Frame buffer update methods
−
−| Method | Contents |
−| --- | --- |
−| DR_LOAD primitives | DR_LOAD primitives at the otz positions of each range of p write the data during drawing |
−| DR_MOVE primitives | The data for each p sits in free frame buffer areas and moves into place during drawing |
−| LoadImage() | The data is transferred from main memory. This loads the CPU and does not suit several values of p in one frame. |
−
−## Material Quality
−
−Without depth cueing the light source calculation has three steps: LLV = LLM x v0 and LC = BK + LCM x LLV and v2 = v1 x LC. If each element of the local light vector is squared after the first step, the lit portion becomes narrower and the material of the object appears to change. libgte provides RotColorMatDpq() and ColorMatDpq() as functions with material quality, and ColorMatCol() as a third.[^o9-13]
−
−## Functions With Three or Four Vertices
−
−RotTransPers3() and RotTransPers4() convert all the vertices of a triangle or a quadrilateral in one call, and NormalColorCol3() and NormalColorDpq3() calculate the light source for three vertices in one call. With these functions, triangles and quadrilaterals with independent vertices are drawn at high speed.[^o9-13][^o9-14]
−
−## Argument Format
−
−The GTE expresses all numbers in fixed-point notation. A rotation matrix element is a (1, 3, 12) number with 1 sign bit, 3 integer bits and 12 fraction bits. The GTE has a built-in 12-bit shift. Other formats can be calculated but are difficult, so the following formats are recommended:[^o9-14]
−
−Table: Recommended formats
−
−| Constant | Format |
−| --- | --- |
−| Rotation matrix | (1, 3, 12) |
−| Translating vector | (1, 31, 0) |
−| Local light matrix | (1, 3, 12) |
−| Local color matrix | (1, 3, 12) |
−| Back color | (0, 32, 0), 0 to 255 |
−| Far color | (0, 32, 0), 0 to 255 |
−
−With these formats RotTrans() takes v0 in (1, 15, 0) and returns v1 in (1, 31, 0). The result therefore has the format of the translating vector.[^o9-14]
−
−## Flag Variables
−
−The coordinate functions return a flag for clipping, which is cleared again after each transformation. The functions for 3 or 4 vertices return the OR of the flags of all vertices. The 32-bit flag has the following bits:[^o9-15]
−
−Table: Flag bits
−
−| Bit | Contents |
−| --- | --- |
−| 31 | OR of bits 30 to 23 and 18 to 13 |
−| 30 to 28 | Calculation overflow (>= 2^43) |
−| 27 to 25 | Calculation overflow (< -2^43) |
−| 24 to 22 | Output value exceeds (-2^15, 2^15) |
−| 21 to 19 | Output value exceeds (0, 2^8) |
−| 18 | Screen Z exceeds (0, 2^16) |
−| 17 | Z is smaller than h/2 after perspective transformation |
−| 16 | Calculation overflow (>= 2^32) |
−| 15 | Calculation overflow (< -2^32) |
−| 14 | X exceeds (-2^10, 2^10) after perspective transformation |
−| 13 | Y exceeds (-2^10, 2^10) after perspective transformation |
−| 12 | p exceeds (0, 2^12) |
−| 11 to 0 | Not used |
−
−RotTransPersN() and RotTransPers3N() return a 16-bit flag that holds the same conditions in bits 15 to 0.[^o9-15][^o9-16]
−
−## Mesh Functions
−
−libgte supports two kinds of triangle mesh data, which reduce the number of vertex calculations and the volume of data. In a strip mesh the vertices zig-zag, and in a round mesh they surround vertex 0. In both cases the order of the first triangle 0-1-2 decides the front of the following triangles.[^o9-16]
−
−Normal line clipping is not possible when the mesh is lit, so lit meshes are not always faster. Mesh data is effective without shading and depth cueing or with flat shading.[^o9-17]
−
−## Screen Offset
−
−The screen offset can be changed in two ways. SetDefDrawEnv() of [libgpu](/libraries/libgpu/) sets it in the drawing environment, and SetGeomOffset() of libgte sets it in the geometry calculation.[^o9-17]
−
−## PMD Functions
−
−The PMD functions transform data in the PMD format and link its GPU packets into the OT. The packets are preset with their constants, colors and texture values, so only the coordinates are written at run time and drawing is fast.[^o9-17]
−
−Polygons with the same attributes form a primitive group. A group starts with a word that holds the TYPE in its upper bits and the number of packets (NPACKET) in its lower bits. The TYPE bits are the following:[^o9-17]
−
−Table: PMD TYPE bits
−
−| Bit | When 0 | When 1 |
−| --- | --- | --- |
−| 16 | Triangle | Quadrilateral |
−| 17 | Flat | Gouraud |
−| 18 | Texture on | Texture off |
−| 19 | Independent vertex | Shared vertex |
−| 20 | Light source calculation off | Light source calculation on |
−| 21 | With back clip | No back clip |
−| 22 to 31 | Reserved | |
−
−Each packet contains two copies of its primitive for the double buffer, and both must be initialized beforehand. The VERTEX section is an array of SVECTOR structures holding the shared vertices as 16-bit X, Y and Z values.[^o9-17][^o9-18][^o9-19]
−
−The SMD and RMD functions are faster versions of the PMD functions that read the same data format. SMD performs normal clipping and RMD does not.[^o9-20]
−
−## Polygon Division
−
−The PlayStation draws many small polygons efficiently. Dividing large polygons into smaller ones therefore makes clipping more efficient and reduces texture distortion. Division is performed by the automatic division attribute of [libgs](/libraries/libgs/) or by the following functions:[^o9-20]
−
−Table: Polygon division functions
−
−| Function name | Primitive |
−| --- | --- |
−| DivideF3 | Flat triangle |
−| DivideF4 | Flat quadrilateral |
−| DivideFT3 | Flat texture triangle |
−| DivideFT4 | Flat texture quadrilateral |
−| DivideG3 | Gouraud triangle |
−| DivideG4 | Gouraud quadrilateral |
−| DivideGT3 | Gouraud texture triangle |
−| DivideGT4 | Gouraud texture quadrilateral |
−
−## Structures
−
−In the tables below, Introduced is the run-time library version that added the item.[^refs85]
−
−libgte has the following structures:[^refs85]
−
−Table: libgte structures
−
−| Structure | Introduced | Purpose |
−| --- | --- | --- |
−| `CRVECTOR3` | 3.0 | Triangular recursive vector data. |
−| `CRVECTOR4` | 3.0 | Quadrilateral recursive vector data. |
−| `CVECTOR` | 2.x | Character vector. |
−| `DIVPOLYGON3` | 3.0 | Triangular division buffer. |
−| `DIVPOLYGON4` | 3.0 | Quadrilateral recursive vector data. |
−| `DVECTOR` | 3.0 | 2D vector. |
−| `EVECTOR` | 3.0 | Clip vector data. |
−| `MATRIX` | 2.x | Matrix. |
−| `POL3` | 2.x | Triangle polygon. |
−| `POL4` | 2.x | Four-sided polygon. |
−| `QMESH` | 4.3 | Quadrilateral mesh. |
−| `RVECTOR` | 3.0 | Division vertex vector data. |
−| `SPOL` | 2.x | Vertex information. |
−| `SVECTOR` | 2.x | Short vector. |
−| `TMESH` | 2.x | Triangle mesh. |
−| `VECTOR` | 2.x | Vector. |
−
−## Functions
−
−libgte has the following functions:[^reff821]
−
−Table: libgte functions
−
−| Function | Introduced | Purpose |
−| --- | --- | --- |
−| `ApplyMatrix` | 3.0 | Multiply a vector by a matrix. |
−| `ApplyMatrixLV` | 3.0 | Multiply a vector by a matrix. |
−| `ApplyMatrixSV` | 3.0 | Multiply a vector by a matrix. |
−| `ApplyRotMatrix` | 3.0 | Multiply a vector by a constant rotation matrix. |
−| `ApplyRotMatrixLV` | 3.0 | Multiply a vector by a constant rotation matrix. |
−| `ApplyTransposeMatrixLV` | 3.2 | Multiply a vector by a matrix. |
−| `AverageZ3` | 3.0 | Average three values. |
−| `AverageZ4` | 3.0 | Average four values. |
−| `catan` | 3.0 | Compute arctangent of an angle within 180 degrees. |
−| `ccos` | 3.0 | Compute cosine of an angle. |
−| `cln` | 3.0 | C logarithm function. |
−| `ColorCol` | 2.x | Find a local color from a local light vector. |
−| `ColorDpq` | 2.x | Find a local color from a local light vector, and perform depth cueing. |
−| `ColorMatCol` | 2.x | Find a color. |
−| `ColorMatDpq` | 2.x | Find a color and perform depth cueing. |
−| `CompMatrix` | 2.x | Make a composite coordinate transformation matrix. |
−| `CompMatrixLV` | 3.6 | Make a composite coordinate transformation matrix. |
−| `csin` | 3.0 | C sine function. |
−| `csqrt` | 3.0 | C square root function. |
−| `DivideF3`, `DivideF4`, `DivideFT3`, `DivideFT4`, `DivideG3`, `DivideG4`, `DivideGT3`, `DivideGT4` | 3.0 | Polygon division functions. |
−| `DpqColor` | 2.x | Interpolate a primary color vector and far color. |
−| `DpqColor3` | 2.x | Interpolate three primary color vectors and far color. |
−| `DpqColorLight` | 2.x | Interpolate the product from multiplication of a local color vector by primary color vector, and far color. |
−| `EigenMatrix` | 4.1 | Obtain the eigen matrix. |
−| `gteMIMefunc` | 2.x | Add a vertex data array to a differential data array multiplied by a coefficient. |
−| `InitClip` | 3.0 | Initialize clipping parameter. |
−| `InitGeom` | 2.x | Initialize the geometry transform engine. |
−| `Intpl` | 2.x | Interpolate a vector and far color. |
−| `InvSquareRoot` | 2.x | Inverse square root. |
−| `IsIdMatrix` | 4.1 | Judge distance from unit matrix. |
−| `LightColor` | 2.x | Coordinate transformation using the local color matrix. |
−| `LoadAverage0` | 3.0 | Weighted average of two vectors. |
−| `LoadAverage12` | 2.x | Weighted average of two vectors. |
−| `LoadAverageByte` | 3.0 | Find weighted average of two vectors. |
−| `LoadAverageCol` | 3.0 | Find weighted average of two vectors. |
−| `LoadAverageShort0` | 2.x | Weighted average of two vectors. |
−| `LoadAverageShort12` | 2.x | Weighted average of two vectors. |
−| `LocalLight` | 2.x | Coordinate transformation using the local light matrix. |
−| `Lzc` | 2.x | Calculate leading zero count. |
−| `MatrixNormal` | 3.2 | Normalize a matrix. |
−| `MatrixNormal_0` | 3.6 | Orthonormalize a matrix. |
−| `MatrixNormal_1` | 3.2 | Normalize a matrix. |
−| `MatrixNormal_2` | 3.2 | Normalize a matrix. |
−| `MulMatrix` | 2.x | Multiply two matrices. |
−| `MulMatrix0` | 2.x | Multiply two matrices. |
−| `MulMatrix2` | 2.x | Multiply two matrices. |
−| `MulRotMatrix` | 3.0 | Multiply a constant rotation matrix by a matrix. |
−| `MulRotMatrix0` | 3.0 | Multiply a constant rotation matrix by a matrix. |
−| `NormalClip` | 2.x | Outer product of three points. |
−| `NormalColor`, `NormalColor_nom` | 2.x | Find a local color from a normal vector. |
−| `NormalColor3`, `NormalColor3_nom` | 2.x | Find three local colors from three normal vectors. |
−| `NormalColorCol`, `NormalColorCol_nom` | 2.x | Find a local color from a normal vector. |
−| `NormalColorCol3`, `NormalColorCol3_nom` | 2.x | Find a local color from three normal vectors. |
−| `NormalColorDpq`, `NormalColorDpq_nom` | 2.x | Find a local color from a normal vector and perform depth cueing. |
−| `NormalColorDpq3`, `NormalColorDpq3_nom` | 2.x | Find local color from three normal vectors and perform depth cueing. |
−| `otz2p` | 2.x | Get depth cueing interpolation value p from OTZ value. |
−| `OuterProduct0` | 2.x | Outer product of two vectors. |
−| `OuterProduct12` | 2.x | Outer product of two vectors. |
−| `p2otz` | 2.x | Get otz from depth cueing interpolation value. |
−| `pers_map` | 3.2 | Perspective conversion texture mapping. |
−| `PhongLine` | 3.2 | Phong shading. |
−| `PopMatrix` | 2.x | Reset a constant rotation matrix from a stack. |
−| `PushMatrix` | 2.x | Save a constant rotation matrix in a stack. |
−| `ratan2` | 3.0 | Arctan. |
−| `rcos` | 3.0 | Find the cosine of an angle using fixed-point math. |
−| `RCpolyF3`, `RCpolyFT3`, `RCpolyG3`, `RCpolyGT3` | 3.0 | Triangle division functions. |
−| `RCpolyF4`, `RCpolyFT4`, `RCpolyG4`, `RCpolyGT4` | 3.0 | Quadrilateral division functions. |
−| `ReadColorMatrix` | 2.x | Read a local color matrix. |
−| `ReadGeomOffset` | 3.0 | Read GTE offset value. |
−| `ReadGeomScreen` | 3.0 | Read distance from viewpoint to screen. |
−| `ReadLightMatrix` | 2.x | Read a local light matrix. |
−| `ReadRGBfifo` | 2.x | Read RGBcd values. |
−| `ReadRotMatrix` | 2.x | Read a constant rotation matrix. |
−| `ReadSXSYfifo` | 2.x | Read SXSY values. |
−| `ReadSZfifo3` | 2.x | Read SZ values. |
−| `ReadSZfifo4` | 2.x | Read SZ values. |
−| `RotAverage3`, `RotAverage3_nom` | 2.x | Perform coordinate and perspective transformation for 3 points, and get interpolation value and average of Z values for depth cueing. |
−| `RotAverage4` | 2.x | Perform coordinate transformation for 3 points and perspective transformation, and find an interpolation value and an average of Z values for depth cueing. |
−| `RotAverageNclip3` | 2.x | Perform coordinate transformation and perspective transformation for three points, and find an interpolation value, average of Z values, and outer product. |
−| `RotAverageNclip3_nom` | 2.x | Perform coordinate transformation and perspective transformation for three points, and find an interpolation value, average of Z values, and outer product. Results obtained through GTE. |
−| `RotAverageNclip4` | 2.x | Perform a coordinate transformation and perspective transformation for four points; find an interpolation value, average of Z values, and outer product. |
−| `RotAverageNclipColorCol3` | 2.x | Perform a coordinate transformation for three points, perspective transformation, and find a color. |
−| `RotAverageNclipColorCol3_nom` | 2.x | Perform a coordinate transformation for three points, perspective transformation, and find a color. Results obtained through GTE. |
−| `RotAverageNclipColorDpq3` | 2.x | Perform coordinate transformation for three points, perspective transformation, and depth cueing. |
−| `RotAverageNclipColorDpq3_nom` | 2.x | Perform coordinate transformation for three points, perspective transformation, and depth cueing. Results obtained through GTE. |
−| `RotColorDpq` | 2.x | Perform coordinate transformation for one point, perspective transformation, and depth cueing. |
−| `RotColorDpq_nom` | 2.x | Perform coordinate transformation for one point, perspective transformation, and depth cueing. Results obtained through GTE. |
−| `RotColorDpq3` | 2.x | Perform coordinate transformation for three points, perspective transformation, and depth cueing. |
−| `RotColorDpq3_nom` | 2.x | Perform coordinate transformation for three points, perspective transformation, and depth cueing. Results obtained through GTE. |
−| `RotColorMatDpq` | 2.x | Perform oordinate transformation, perspective transformation, and depth cueing. |
−| `RotMatrix...` | 4.3 | Find rotation matrix from a rotation angle. |
−| `RotMatrix_gte` | 4.1 | Find a rotation matrix from a rotation angle. Approximately 2 X faster than RotMatrix(). |
−| `RotMatrixC` | 3.0 | Find a rotation matrix from a rotation angle. |
−| `RotMatrixX` | 3.0 | Find a rotation matrix around the X axis. |
−| `RotMatrixY` | 3.0 | Find a rotation matrix around the Y axis. |
−| `RotMatrixYXZ_gte` | 4.1 | Find a rotation matrix from a rotation angle. Approximately 2 X faster than RotMatrixYXZ(). |
−| `RotMatrixZ` | 3.0 | Find a rotation matrix around the Z axis. |
−| `RotMatrixZYX_gte` | 4.1 | Find a rotation matrix around the z, y, and x axis. Approximately 2 X faster than RotMatrixZYX. |
−| `RotMeshH` | 3.0 | Perform coordinate transformation and perspective transformation. |
−| `RotMeshPrimQ_T` | 3.2 | Two-dimensional mesh. |
−| `RotMeshPrimR_...` | 4.1 | The round mesh series of functions. |
−| `RotMeshPrimS_...` | 4.1 | The strip mesh series of functions. |
−| `RotNclip3` | 2.x | Perform coordinate transformation and perspective transformation for three points, and find an interpolation value and outer product for depth cueing. |
−| `RotNclip3_nom` | 2.x | Perform coordinate and perspective transformation for three points; get interpolation value and outer product for depth cueing. Results obtained through GTE. |
−| `RotNclip4` | 2.x | Perform coordinate transformation and perspective transformation for four points, and find an interpolation value and outer product for depth cueing. |
−| `RotPMD_...` | 4.1 | The independent vertex PMD data series of functions. |
−| `RotPMD_SV_...` | 4.1 | The shared vertex PMD data series of functions. |
−| `RotRMD_...` | 4.1 | The independent vertex RMD data series of functions. |
−| `RotRMD_SV_...` | 4.1 | The shared vertex RMD data series of functions. |
−| `RotSMD_...` | 4.1 | The independent vertex SMD data series of functions. |
−| `RotSMD_SV_...` | 4.1 | The shared vertex SMD data series of functions. |
−| `RotTrans` | 2.x | Perform coordinate transformation using a rotation matrix. |
−| `RotTrans_nom` | 2.x | Perform coordinate transformation using a rotation matrix. Results obtained through GTE. |
−| `RotTransPers` | 2.x | Perform coordinate and perspective transformation for one vertex. |
−| `RotTransPers_nom` | 2.x | Perform coordinate and perspective transformation for one vertex. Results obtained through GTE. |
−| `RotTransPers3` | 2.x | Perform coordinate and perspective transformation of three vertices. |
−| `RotTransPers3_nom` | 2.x | Perform coordinate and perspective transformation of three vertices. Results obtained through GTE. |
−| `RotTransPers3N` | 3.0 | Perform coordinate and perspective transformation for multiple triangles. |
−| `RotTransPers4` | 2.x | Perform coordinate and perspective transformation for 4 vertices. |
−| `RotTransPers4_nom` | 2.x | Perform coordinate and perspective transformation for 4 vertices. Results obtained through GTE. |
−| `RotTransPersN` | 3.0 | Perform coordinate and perspective transformation. |
−| `RotTransSV` | 3.2 | Perform coordinate translation with rotation matrix. |
−| `rsin` | 3.0 | Sine. |
−| `ScaleMatrix` | 2.x | Scale a matrix. |
−| `ScaleMatrixL` | 3.0 | Scale a matrix. |
−| `SetBackColor` | 2.x | Set back color vector. |
−| `SetColorMatrix` | 2.x | Set a local color matrix. |
−| `SetFarColor` | 2.x | Set far color vectors. |
−| `SetFogFar` | 2.x | Set a fog parameter. |
−| `SetFogNear` | 2.x | Set a fog parameter. |
−| `SetFogNearFar` | 3.2 | Set the fog parameters. |
−| `SetGeomOffset` | 2.x | Set offset values. |
−| `SetGeomScreen` | 2.x | Set the projection. |
−| `SetLightMatrix` | 2.x | Set a local light matrix. |
−| `SetMulMatrix` | 3.0 | Multiply two matrices and set one rotation matrix. |
−| `SetMulRotMatrix` | 3.6 | Multiply constant rotation matrix by a matrix and set one constant rotation matrix. |
−| `SetRGBcd` | 2.x | Set primary color vector and GPU code. |
−| `SetRotMatrix` | 2.x | Set a constant rotation matrix. |
−| `SetTransMatrix` | 2.x | Set a constant parallel transfer vector. |
−| `Square0` | 2.x | Square a vector. |
−| `Square12` | 2.x | Square a vector. |
−| `SquareRoot0` | 2.x | Square root. |
−| `SquareRoot12` | 2.x | Square root. |
−| `SquareSL0` | 4.0 | Square a short vector. |
−| `SquareSL12` | 4.0 | Square a short vector. |
−| `SquareSS0` | 4.0 | Square a short vector. |
−| `SquareSS12` | 4.0 | Square a short vector. |
−| `SubPol3` | 2.x | Subdivide a triangle. |
−| `SubPol4` | 2.x | Subdivide a quadrilateral. |
−| `TransMatrix` | 2.x | Set the amount of parallel transfer. |
−| `TransposeMatrix` | 2.x | Transpose a matrix. |
−| `TransRotPers` | 3.2 | Inversely perform rotation parallel move of RotTransPers(). |
−| `TransRotPers3` | 3.2 | Inversely perform rotation parallel move of RotTransPers3(). |
−| `TransRot_32` | 3.2 | Inversely perform rotation parallel move of RotTrans(). |
−| `VectorNormal` | 2.x | Normalize a vector. |
−| `VectorNormalS` | 3.0 | Normalize a vector. |
−| `VectorNormalSS` | 2.x | Normalize a vector. |
−
−## References
−
−[^oxi]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page xi.
−[^o9-3]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-3.
−[^o9-4]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-4.
−[^o9-5]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-5.
−[^o9-6]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-6.
−[^o9-7]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-7.
−[^o9-8]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-8.
−[^o9-9]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-9.
−[^o9-10]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-10.
−[^o9-11]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-11.
−[^o9-12]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-12.
−[^o9-13]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-13.
−[^o9-14]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-14.
−[^o9-15]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-15.
−[^o9-16]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-16.
−[^o9-17]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-17.
−[^o9-18]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-18.
−[^o9-19]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-19.
−[^o9-20]: Sony Computer Entertainment Inc. Run-Time Library Overview. Run-Time Library 4.4. January 1999. Page 9-20.
−[^r8-21]: Sony Computer Entertainment Inc. Run-Time Library Reference. Run-Time Library 4.4. January 1999. Page 8-21.
−[^refs85]: Sony Computer Entertainment Inc. Run-Time Library Reference. Run-Time Library 4.4. January 1999. Pages 8-5 to 8-20.
−[^reff821]: Sony Computer Entertainment Inc. Run-Time Library Reference. Run-Time Library 4.4. January 1999. Pages 8-21 to 8-183.