guLookAtReflectF
Creates the viewing matrix (floating point) and sets the LookAt structure
#include <ultra64.h> /* gu.h */
void guLookAtReflectF(
float mf[4][4],
LookAt *l,
float xEye,
float yEye,
float zEye,
float xAt,
float yAt,
float zAt,
float xUp,
float yUp,
float zUp);
None
This function returns a viewing matrix to mf. It also sets the x,y screen coordinate directions in the LookAt structure for reflection mapping. Fixed point is handled with the guLookAtReflect function.
Use gSPLookAt to set the texture settings (LookAt structure) for reflection mapping.
For details, see Section 11.7.5 "Reflection Mapping" in the N64 Programming Manual.
The LookAt structure looks like this:
typedef struct {
unsigned char col[3]; /* Diffuse light value (RGBA) */
char pad1;
unsigned char colc[3]; /* Copy of diffuse light value (RGBA)*/
char pad2;
signed char dir[3]; /* Direction toward light source (normalized) */
char pad3; /* IMPORTANT: dir must be smaller than 127 */
} Light_t;
typedef union {
Light_t l;
long long int force_structure_alignment[2];
} Light;
typedef struct {
Light l[2];
} LookAt;
* Note that here the Light structure is not utilized in the normal way: l[0].dir is for the x,y,z components of the viewing space in the x direction of the screen space, while l[1].dir is for the x,y,z components of the viewing space in the y direction of the screen space.
gSPMatrix, guLookAt, guLookAtF, guLookAtHilite, guLookAtHiliteF, and guLookAtReflect
03/01/99 Completely rewritten.