Merge branch 'main' into roberto

This commit is contained in:
PedroEdiaz
2024-11-30 22:22:48 -06:00
11 changed files with 322 additions and 111 deletions

View File

@@ -12,18 +12,22 @@
#include <emscripten.h>
#endif
#ifndef M_PI
#define M_PI 3.14159
#endif
float *generate_data_surface(unsigned int, unsigned char *);
float *generate_normals_surface(float *, unsigned char);
const char *wname = "manigraph: manifold grapher";
struct projection projection = {.x = 0, .y=1, .z=2, .w=3 };
struct projection projection = {.x = 0, .y = 1, .z = 2, .w = 3};
const char *wname = "manigraph: manifold grapher";
unsigned char palette[][4] = {
{0xEB, 0xD3, 0xF8, 0xff},
{0xEB, 0xD4, 0xF8, 0xff},
{0xEB, 0xD5, 0xF8, 0xff},
{0x7A, 0x1C, 0xAC, 0xff},
{0x2F, 0x3C, 0x7E, 0xff},
};
void mlog(char *msg)
@@ -37,6 +41,8 @@ window_t window;
mesh_t m_surface, m_axis;
id_t shader, shader_plain;
extern volatile unsigned char animate_index;
#ifndef EMSCRIPTEN
static inline
#endif
@@ -46,23 +52,52 @@ static inline
quat_t q;
q = poll_input(window);
load_rot_matrix(shader, q);
load_rot_matrix(shader_plain, q);
{
static float angle = 0;
if( angle > M_PI/2 )
{
animate_index=0;
angle = 0;
load_float_to_shader( shader, "angle", angle);
load_float_to_shader( shader_plain, "angle", angle);
set_projection_mesh( projection );
}
if( animate_index )
{
load_uint_to_shader( shader, "i", animate_index-1 );
load_uint_to_shader( shader_plain, "i", animate_index-1 );
angle+=0.01;
load_float_to_shader( shader, "angle", angle);
load_float_to_shader( shader_plain, "angle", angle);
}
}
clean_context();
#ifndef DEBUG
load_mdl_matrix(shader_plain, 0, 0);
draw_mesh(m_axis);
draw_mesh(m_axis, 1);
load_mdl_matrix(shader_plain, 1, 1);
draw_mesh(m_axis);
draw_mesh(m_axis, 1);
load_mdl_matrix(shader_plain, 2, 2);
draw_mesh(m_axis);
load_mdl_matrix(shader, 0, 3);
#else
load_mdl_matrix(shader_plain, 0, 3);
draw_mesh(m_axis, 1);
#endif
draw_mesh(m_surface);
load_mdl_matrix(shader, 0, 3);
draw_mesh(m_surface,0);
load_mdl_matrix(shader_plain, 0, 3);
draw_mesh(m_surface,1);
}
int main(void)
@@ -87,7 +122,7 @@ int main(void)
mlog("[CONTEXT] Error al inicializar...\n");
goto error_context;
}
set_clean_color_context(0x2E, 0x07, 0x3F);
set_clean_color_context(0xFF, 0xFF, 0xFF);
}
mlog("[TEXTURE] Inicializando...\n");
@@ -127,15 +162,16 @@ int main(void)
d_surface = generate_data_surface(16, &m);
n_surface = generate_normals_surface(d_surface, m);
projection.m = m;
if (!(m_surface = create_mesh(d_surface, n_surface, m)))
{
mlog("[MESH] Error al inicializar...\n");
goto error_mesh_surface;
}
projection.m = m;
projection.mesh = m_surface;
set_projection_mesh( projection );
free(n_surface);
free(d_surface);
@@ -152,7 +188,8 @@ int main(void)
mlog("[MAIN LOOP] Inicializando...\n");
#ifdef EMSCRIPTEN
emscripten_set_main_loop(&main_loop, 0, 1);
emscripten_set_main_loop(&main_loop, 60, 1);
return 0;
#else
while (is_open_window(window))
main_loop();