sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
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
17#ifndef __LIBVUX_H__
18#define __LIBVUX_H__
19
20/*
21
22y
23|
24| z
25| /
26| /
270-------x
28
29row major
30*/
31
32
33#define VU_LIGHT_TYPE_FLAT 0x10
34
36typedef struct
37{
38
39 float m[4][4];
40
41}VU_MATRIX __attribute__((aligned(16)));
42
44typedef struct
45{
46 float x;
47 float y;
48 float z;
49 float w;
50
51}VU_VECTOR __attribute__((aligned(16)));
52
54typedef struct
55{
57 unsigned short x;
59 unsigned short y;
60 unsigned int z;
61
62}VU_SXYZ;
63
65typedef struct
66{
68 unsigned short x;
70 unsigned short y;
71 unsigned int z:24;
72 unsigned char f;
73
75
77typedef struct
78{
79 unsigned char r;
80 unsigned char g;
81 unsigned char b;
82 unsigned char a;
83 float q;
84
86
88typedef struct
89{
90 float r;
91 float g;
92 float b;
93 float a;
94
96
97typedef struct
98{
99 VU_VECTOR direction;
100 VU_FCVECTOR color;
101
103
104#ifndef ftoi4
105#define ftoi4(f) ((int)((f)*16.0f))
106#endif
107
108#ifndef deg2radian
109#define deg2radian(angle) ((angle*3.1415926535f)/180)
110#endif
111
112#ifndef radian2deg
113#define radian2deg(radian) ((180.0f / 3.1415926535f) * (radian))
114#endif
115
116#ifdef __cplusplus
117extern "C" {
118#endif
119
120/* common stuff */
121extern void VuInit(void);
122
123extern void VuSetGeometryXYOffset(unsigned short x, unsigned short y);
124extern void VuSetProjection(float z);
125extern void VuSetProjectionMatrix(const VU_MATRIX *projection);
126extern void VuSetProjectionType(unsigned int type);
127extern void VuSetWorldMatrix(const VU_MATRIX *world);
128extern void VuSetViewMatrix(const VU_MATRIX *view);
129extern void VuSetLocalScreenMatrix(const VU_MATRIX *m);
130extern void VuSetProjectionNearPlaneWH(unsigned int w, unsigned int h);
131extern void VuSetAmbientLight(float r, float g, float b);
132
133/* 99% hw(vu0 macro mode) */
134extern void Vu0IdMatrix(VU_MATRIX *m);
135extern void Vu0ResetMatrix(VU_MATRIX *m);
136//extern void VuxRotMatrixX(VU_MATRIX *m, float x);
137//extern void VuxRotMatrixY(VU_MATRIX *m, float y);
138//extern void VuxRotMatrixZ(VU_MATRIX *m, float z);
139//extern void VuxRotMatrixXYZ(VU_MATRIX *m, float x,float y, float z);
140extern void Vu0TransMatrix(VU_MATRIX *m, VU_VECTOR *t);
141extern void Vu0TransMatrixXYZ(VU_MATRIX *m,float x, float y, float z);
142extern void Vu0ScaleMatrix(VU_MATRIX *m, VU_VECTOR *s);
143extern void Vu0ScaleMatrixXYZ(VU_MATRIX *m, float x, float y, float z);
144extern void Vu0MulMatrix(VU_MATRIX *m0, VU_MATRIX *m1, VU_MATRIX *out);
145//extern void Vu0InverseMatrix(VU_MATRIX *in, VU_MATRIX *out);
146extern void Vu0ApplyMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
147extern void Vu0ApplyRotMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
148extern void Vu0CopyMatrix(VU_MATRIX *dest, VU_MATRIX *src);
149extern float Vu0DotProduct(VU_VECTOR *v0, VU_VECTOR *v1);
150
151/* 100% sw */
152extern void VuxIdMatrix(VU_MATRIX *m);
153extern void VuxResetMatrix(VU_MATRIX *m);
154extern void VuxRotMatrix(VU_MATRIX *m, VU_VECTOR *v);
155extern void VuxRotMatrixX(VU_MATRIX *m, float x);
156extern void VuxRotMatrixY(VU_MATRIX *m, float y);
157extern void VuxRotMatrixZ(VU_MATRIX *m, float z);
158extern void VuxRotMatrixXYZ(VU_MATRIX *m, float x,float y, float z);
159extern void VuxTransMatrix(VU_MATRIX *m, VU_VECTOR *v0);
160extern void VuxTransMatrixXYZ(VU_MATRIX *m,float x, float y, float z);
161extern void VuxScaleMatrix(VU_MATRIX *m, VU_VECTOR *s);
162extern void VuxScaleMatrixXYZ(VU_MATRIX *m, float x, float y, float z);
163extern void VuxMulMatrix(VU_MATRIX *m0, VU_MATRIX *m1, VU_MATRIX *out);
164extern void VuxInverseMatrix(VU_MATRIX *in, VU_MATRIX *mat);
165extern void VuxCopyMatrix(VU_MATRIX *dest, VU_MATRIX *src);
166extern void VuxApplyMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
167extern void VuxApplyRotMatrix(VU_MATRIX *m, VU_VECTOR *v0, VU_VECTOR *out);
168extern float VuxDotProduct(VU_VECTOR *v0, VU_VECTOR *v1);
169extern VU_VECTOR VuxCrossProduct(VU_VECTOR *v0, VU_VECTOR *v1);
170extern void VuxCrossProduct0(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *out);
171extern void VuxVectorNormal(VU_VECTOR *v);
172extern void VuxVectorNormal0(VU_VECTOR *in, VU_VECTOR *out);
173
174extern void VuxApplyMatrixLS(VU_VECTOR *v0, VU_VECTOR *out);
175extern void VuxApplyRotMatrixLS(VU_VECTOR *v0, VU_VECTOR *out);
176
177extern void VuxMakeLocalScreenMatrix(VU_MATRIX *out, VU_MATRIX *world, VU_MATRIX *view);
178extern void VuxMakeLocalScreenMatrix2(VU_MATRIX *out, VU_MATRIX *world, VU_MATRIX *view, VU_MATRIX *projection);
179
180extern void VuxMakeViewMatrix(VU_MATRIX *out, VU_VECTOR *rot, VU_VECTOR *pos, VU_VECTOR *scale);
181extern void VuxMakeLookAtViewMatrix(VU_MATRIX *out, VU_VECTOR *eye, VU_VECTOR *target, VU_VECTOR *up);
182extern void VuxMakeProjectionMatrix(VU_MATRIX *proj, float near_plane_w, float near_plane_h, float near_plane_z, float far_plane_z);
183
185extern void VuxUpdateLocalScreenMatrix(void);
186
187extern void VuxRotTrans(VU_VECTOR *v0, VU_VECTOR *out);
188extern void VuxRotTrans3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_VECTOR *tv0, VU_VECTOR *tv1, VU_VECTOR *tv2);
189extern void VuxRotTransN(VU_VECTOR *verts, VU_VECTOR *tverts, unsigned int num_verts);
190extern void VuxPers(VU_VECTOR *v0, VU_SXYZ *sxyz0);
191extern void VuxPers3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
192extern void VuxPersN(VU_VECTOR *verts, VU_SXYZ *sxyz, unsigned int num_verts);
193extern int VuxPersClip3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
194extern float VuxRotTransPers(VU_VECTOR *v0, VU_SXYZ *sxyz0);
195extern float VuxRotTransPers3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
196extern void VuxRotTransPersN(VU_VECTOR *verts, VU_SXYZ *sxyz, unsigned int num_verts);
197extern int VuxRotTransPersClip3(VU_VECTOR *v0, VU_VECTOR *v1, VU_VECTOR *v2, VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
198
199extern int VuxClipSxyz(VU_SXYZ *sxyz0, VU_SXYZ *sxyz1, VU_SXYZ *sxyz2);
200
201/*lighting*/
202extern int VuxLightNormal(VU_VECTOR *normal, VU_CVECTOR *col0, void *light, unsigned int light_type, VU_CVECTOR *out0);
203
204extern VU_MATRIX VuWorldMatrix;
205extern VU_MATRIX VuViewMatrix;
206extern VU_MATRIX VuPrjectionMatrix;
207extern VU_MATRIX VuLocalScreenMatrix;
208
209#ifdef __cplusplus
210}
211#endif
212
213#endif /* __LIBVUX_H__ */
void VuxUpdateLocalScreenMatrix(void)
Definition vusw.c:634
unsigned short y
Definition libvux.h:70
unsigned short x
Definition libvux.h:68
unsigned short y
Definition libvux.h:59
unsigned short x
Definition libvux.h:57