PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
libvux.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# (c) 2009 Lion
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16#ifndef __LIBVUX_H__
17#define __LIBVUX_H__
18
19/*
20
21y
22|
23| z
24| /
25| /
260-------x
27
28row major
29*/
30
31
32#define VU_LIGHT_TYPE_FLAT 0x10
33
35typedef struct
36{
37
38 float m[4][4];
39
41
43typedef struct
44{
45 float x;
46 float y;
47 float z;
48 float w;
49
51
53typedef struct
54{
56 unsigned short x;
58 unsigned short y;
59 unsigned int z;
60
61}VU_SXYZ;
62
64typedef struct
65{
67 unsigned short x;
69 unsigned short y;
70 unsigned int z:24;
71 unsigned char f;
72
74
76typedef struct
77{
78 unsigned char r;
79 unsigned char g;
80 unsigned char b;
81 unsigned char a;
82 float q;
83
85
87typedef struct
88{
89 float r;
90 float g;
91 float b;
92 float a;
93
95
96typedef struct
97{
98 VU_VECTOR direction;
99 VU_FCVECTOR color;
100
102
103#ifndef ftoi4
104#define ftoi4(f) ((int)((f)*16.0f))
105#endif
106
107#ifndef deg2radian
108#define deg2radian(angle) ((angle*3.1415926535f)/180)
109#endif
110
111#ifndef radian2deg
112#define radian2deg(radian) ((180.0f / 3.1415926535f) * (radian))
113#endif
114
115#ifdef __cplusplus
116extern "C" {
117#endif
118
119/* common stuff */
120extern void VuInit(void);
121
122extern void VuSetGeometryXYOffset(unsigned short x, unsigned short y);
123extern void VuSetProjection(float z);
124extern void VuSetProjectionMatrix(const VU_MATRIX *projection);
125extern void VuSetProjectionType(unsigned int type);
126extern void VuSetWorldMatrix(const VU_MATRIX *world);
127extern void VuSetViewMatrix(const VU_MATRIX *view);
128extern void VuSetLocalScreenMatrix(const VU_MATRIX *m);
129extern void VuSetProjectionNearPlaneWH(unsigned int w, unsigned int h);
130extern void VuSetAmbientLight(float r, float g, float b);
131
132/* 99% hw(vu0 macro mode) */
133extern void Vu0IdMatrix(VU_MATRIX *m);
134extern void Vu0ResetMatrix(VU_MATRIX *m);
135//extern void VuxRotMatrixX(VU_MATRIX *m, float x);
136//extern void VuxRotMatrixY(VU_MATRIX *m, float y);
137//extern void VuxRotMatrixZ(VU_MATRIX *m, float z);
138//extern void VuxRotMatrixXYZ(VU_MATRIX *m, float x,float y, float z);
139extern void Vu0TransMatrix(VU_MATRIX *m, VU_VECTOR *t);
140extern void Vu0TransMatrixXYZ(VU_MATRIX *m,float x, float y, float z);
141extern void Vu0ScaleMatrix(VU_MATRIX *m, VU_VECTOR *s);
142extern void Vu0ScaleMatrixXYZ(VU_MATRIX *m, float x, float y, float z);
143extern void Vu0MulMatrix(VU_MATRIX *m0, VU_MATRIX *m1, VU_MATRIX *out);
144//extern void Vu0InverseMatrix(VU_MATRIX *in, VU_MATRIX *out);
145extern void Vu0ApplyMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
146extern void Vu0ApplyRotMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
147extern void Vu0CopyMatrix(VU_MATRIX *dest, VU_MATRIX *src);
148extern float Vu0DotProduct(VU_VECTOR *v0, VU_VECTOR *v1);
149
150/* 100% sw */
151extern void VuxIdMatrix(VU_MATRIX *m);
152extern void VuxResetMatrix(VU_MATRIX *m);
153extern void VuxRotMatrix(VU_MATRIX *m, VU_VECTOR *v);
154extern void VuxRotMatrixX(VU_MATRIX *m, float x);
155extern void VuxRotMatrixY(VU_MATRIX *m, float y);
156extern void VuxRotMatrixZ(VU_MATRIX *m, float z);
157extern void VuxRotMatrixXYZ(VU_MATRIX *m, float x,float y, float z);
158extern void VuxTransMatrix(VU_MATRIX *m, VU_VECTOR *v0);
159extern void VuxTransMatrixXYZ(VU_MATRIX *m,float x, float y, float z);
160extern void VuxScaleMatrix(VU_MATRIX *m, VU_VECTOR *s);
161extern void VuxScaleMatrixXYZ(VU_MATRIX *m, float x, float y, float z);
162extern void VuxMulMatrix(VU_MATRIX *m0, VU_MATRIX *m1, VU_MATRIX *out);
163extern void VuxInverseMatrix(VU_MATRIX *in, VU_MATRIX *mat);
164extern void VuxCopyMatrix(VU_MATRIX *dest, VU_MATRIX *src);
165extern void VuxApplyMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
166extern void VuxApplyRotMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
167extern float VuxDotProduct(VU_VECTOR *v0, VU_VECTOR *v1);
168extern VU_VECTOR VuxCrossProduct(VU_VECTOR *v0, VU_VECTOR *v1);
169extern void VuxCrossProduct0(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *out);
170extern void VuxVectorNormal(VU_VECTOR *v);
171extern void VuxVectorNormal0(VU_VECTOR *in, VU_VECTOR *out);
172
173extern void VuxApplyMatrixLS(VU_VECTOR *v0, VU_VECTOR *out);
174extern void VuxApplyRotMatrixLS(VU_VECTOR *v0, VU_VECTOR *out);
175
176extern void VuxMakeLocalScreenMatrix(VU_MATRIX *out, VU_MATRIX *world, VU_MATRIX *view);
177extern void VuxMakeLocalScreenMatrix2(VU_MATRIX *out, VU_MATRIX *world, VU_MATRIX *view, VU_MATRIX *projection);
178
179extern void VuxMakeViewMatrix(VU_MATRIX *out, VU_VECTOR *rot, VU_VECTOR *pos, VU_VECTOR *scale);
180extern void VuxMakeLookAtViewMatrix(VU_MATRIX *out, VU_VECTOR *eye, VU_VECTOR *target, VU_VECTOR *up);
181extern void VuxMakeProjectionMatrix(VU_MATRIX *proj, float near_plane_w, float near_plane_h, float near_plane_z, float far_plane_z);
182
184extern void VuxUpdateLocalScreenMatrix(void);
185
186extern void VuxRotTrans(VU_VECTOR *v0, VU_VECTOR *out);
187extern void VuxRotTrans3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_VECTOR *tv0, VU_VECTOR *tv1, VU_VECTOR *tv2);
188extern void VuxRotTransN(VU_VECTOR *verts, VU_VECTOR *tverts, unsigned int num_verts);
189extern void VuxPers(VU_VECTOR *v0, VU_SXYZ *sxyz0);
190extern void VuxPers3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
191extern void VuxPersN(VU_VECTOR *verts, VU_SXYZ *sxyz, unsigned int num_verts);
192extern int VuxPersClip3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
193extern float VuxRotTransPers(VU_VECTOR *v0, VU_SXYZ *sxyz0);
194extern float VuxRotTransPers3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
195extern void VuxRotTransPersN(VU_VECTOR *verts, VU_SXYZ *sxyz, unsigned int num_verts);
196extern int VuxRotTransPersClip3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
197
198extern int VuxClipSxyz(VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
199
200/*lighting*/
201extern int VuxLightNormal(VU_VECTOR *normal, VU_CVECTOR *col0, void *light, unsigned int light_type, VU_CVECTOR *out0);
202
203extern VU_MATRIX VuWorldMatrix;
204extern VU_MATRIX VuViewMatrix;
205extern VU_MATRIX VuPrjectionMatrix;
206extern VU_MATRIX VuLocalScreenMatrix;
207
208#ifdef __cplusplus
209}
210#endif
211
212#endif /* __LIBVUX_H__ */
typedef __attribute__
Definition tlbfunc.c:60
unsigned short y
Definition libvux.h:69
unsigned short y
Definition libvux.h:58
unsigned short x
Definition libvux.h:56
unsigned short x
Definition libvux.h:67
void VuxUpdateLocalScreenMatrix(void)
Definition vusw.c:634