sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
math3d.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# (c) 2005 Naomi Peori <naomi@peori.ca>
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17#ifndef __MATH3D_H__
18#define __MATH3D_H__
19
20#include <tamtypes.h>
21
22typedef float VECTOR[4] __attribute__((__aligned__(16)));
23
24typedef float MATRIX[16] __attribute__((__aligned__(16)));
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/* VECTOR FUNCTIONS */
32extern void vector_apply(VECTOR output, VECTOR input0, MATRIX input1);
33
35extern void vector_clamp(VECTOR output, VECTOR input0, float min, float max);
36
38extern void vector_copy(VECTOR output, VECTOR input0);
39
41extern float vector_innerproduct(VECTOR input0, VECTOR input1);
42
44extern void vector_multiply(VECTOR output, VECTOR input0, VECTOR input1);
45
47extern void vector_normalize(VECTOR output, VECTOR input0);
48
50extern void vector_outerproduct(VECTOR output, VECTOR input0, VECTOR input1);
51
53extern void vector_add(VECTOR sum, VECTOR addend, VECTOR summand);
54
56extern void vector_cross_product(VECTOR product, VECTOR multiplicand, VECTOR multiplier);
57
59extern void vector_triangle_normal(VECTOR output, VECTOR a, VECTOR b, VECTOR c);
60
61/* MATRIX FUNCTIONS */
63extern void matrix_copy(MATRIX output, MATRIX input0);
64
66extern void matrix_inverse(MATRIX output, MATRIX input0);
67
69extern void matrix_multiply(MATRIX output, MATRIX input0, MATRIX input1);
70
72extern void matrix_rotate(MATRIX output, MATRIX input0, VECTOR input1);
73
75extern void matrix_scale(MATRIX output, MATRIX input0, VECTOR input1);
76
78extern void matrix_translate(MATRIX output, MATRIX input0, VECTOR input1);
79
81extern void matrix_transpose(MATRIX output, MATRIX input0);
82
84extern void matrix_unit(MATRIX output);
85
86/* CREATE FUNCTIONS */
87
91extern void create_local_world(MATRIX local_world, VECTOR translation, VECTOR rotation);
92
96extern void create_local_light(MATRIX local_light, VECTOR rotation);
97
101extern void create_world_view(MATRIX world_view, VECTOR translation, VECTOR rotation);
102
106extern void create_view_screen(MATRIX view_screen, float aspect, float left, float right, float bottom, float top, float near, float far);
107
111extern void create_local_screen(MATRIX local_screen, MATRIX local_world, MATRIX world_view, MATRIX view_screen);
112
113/* CALCULATE FUNCTIONS */
114
116#define LIGHT_AMBIENT 0
118#define LIGHT_DIRECTIONAL 1
119
121extern void calculate_normals(VECTOR *output, int count, VECTOR *normals, MATRIX local_light);
122
124extern void calculate_lights(VECTOR *output, int count, VECTOR *normals, VECTOR *light_directions, VECTOR *light_colours, const int *light_types, int light_count);
125
127extern void calculate_colours(VECTOR *output, int count, VECTOR *colours, VECTOR *lights);
128
130extern void calculate_vertices(VECTOR *output, int count, VECTOR *vertices, MATRIX local_screen);
131
132#ifdef __cplusplus
133}
134#endif
135
136#endif /* __MATH3D_H__ */
void vector_normalize(VECTOR output, VECTOR input0)
Definition math3d.c:138
void vector_cross_product(VECTOR product, VECTOR multiplicand, VECTOR multiplier)
Definition math3d.c:215
void create_local_screen(MATRIX local_screen, MATRIX local_world, MATRIX world_view, MATRIX view_screen)
Definition math3d.c:520
void matrix_multiply(MATRIX output, MATRIX input0, MATRIX input1)
Definition math3d.c:288
void vector_copy(VECTOR output, VECTOR input0)
Definition math3d.c:86
void vector_multiply(VECTOR output, VECTOR input0, VECTOR input1)
Definition math3d.c:124
void vector_clamp(VECTOR output, VECTOR input0, float min, float max)
Definition math3d.c:63
void create_local_world(MATRIX local_world, VECTOR translation, VECTOR rotation)
Definition math3d.c:463
void matrix_copy(MATRIX output, MATRIX input0)
Definition math3d.c:240
float vector_innerproduct(VECTOR input0, VECTOR input1)
Definition math3d.c:104
void matrix_inverse(MATRIX output, MATRIX input0)
Definition math3d.c:270
void calculate_lights(VECTOR *output, int count, VECTOR *normals, VECTOR *light_directions, VECTOR *light_colours, const int *light_types, int light_count)
Definition math3d.c:599
void vector_triangle_normal(VECTOR output, VECTOR a, VECTOR b, VECTOR c)
Definition math3d.c:224
void calculate_vertices(VECTOR *output, int count, VECTOR *vertices, MATRIX local_screen)
Definition math3d.c:664
void matrix_scale(MATRIX output, MATRIX input0, VECTOR input1)
Definition math3d.c:400
void matrix_rotate(MATRIX output, MATRIX input0, VECTOR input1)
Definition math3d.c:371
void vector_add(VECTOR sum, VECTOR addend, VECTOR summand)
Definition math3d.c:206
void matrix_unit(MATRIX output)
Definition math3d.c:450
void create_world_view(MATRIX world_view, VECTOR translation, VECTOR rotation)
Definition math3d.c:480
void vector_outerproduct(VECTOR output, VECTOR input0, VECTOR input1)
Definition math3d.c:177
void create_view_screen(MATRIX view_screen, float aspect, float left, float right, float bottom, float top, float near, float far)
Definition math3d.c:502
void calculate_normals(VECTOR *output, int count, VECTOR *normals, MATRIX local_light)
Definition math3d.c:532
void vector_apply(VECTOR output, VECTOR input0, MATRIX input1)
Definition math3d.c:20
void matrix_translate(MATRIX output, MATRIX input0, VECTOR input1)
Definition math3d.c:412
void calculate_colours(VECTOR *output, int count, VECTOR *colours, VECTOR *lights)
Definition math3d.c:646
void create_local_light(MATRIX local_light, VECTOR rotation)
Definition math3d.c:472
void matrix_transpose(MATRIX output, MATRIX input0)
Definition math3d.c:424
u32 count
start sector of fragmented bd/file