static void create_platonic_scene(char const* name) { START_SCENE; shape = par_shapes_create_dodecahedron(); par_shapes_translate(shape, 0, 0.934, 0); par_shapes_merge(scene, shape); par_shapes_free_mesh(shape); shape = par_shapes_create_tetrahedron(); par_shapes_translate(shape, 1, 0, 3.5); par_shapes_merge(scene, shape); par_shapes_free_mesh(shape); shape = par_shapes_create_octohedron(); par_shapes_translate(shape, -2.25, 0.9, -.5); par_shapes_merge(scene, shape); par_shapes_free_mesh(shape); shape = par_shapes_create_icosahedron(); par_shapes_translate(shape, -1, 0.8, 3.5); par_shapes_merge(scene, shape); par_shapes_free_mesh(shape); shape = par_shapes_create_cube(); par_shapes_rotate(shape, PAR_PI / 5.0, (float[]) {0, 1, 0});
void init(float winwidth, float winheight, float pixratio) { resolution = pixratio * winwidth; par_shapes_mesh* shape; shape = par_shapes_create_cylinder(30, 3); float axis[3] = {1, 0, 0}; par_shapes_rotate(shape, PARG_PI * 0.5, axis); cylinder = parg_mesh_from_shape(shape); par_shapes_free_mesh(shape); shape = par_shapes_create_plane(3, 3); par_shapes_scale(shape, 4, 4, 1); par_shapes_translate(shape, -2, -2, -1); backdrop = parg_mesh_from_shape(shape); par_shapes_free_mesh(shape); kleingeo = parg_mesh_from_asset(M_KLEIN); parg_mesh_send_to_gpu(kleingeo); kleintex = parg_texture_from_asset_linear(T_KLEIN); abstract = parg_texture_from_asset(T_ABSTRACT); logo = parg_texture_from_asset(T_LOGO); rust = parg_texture_from_asset(T_RUST); billboard = parg_mesh_rectangle(1, 1); reflection = parg_framebuffer_create_empty( 512, 512, PARG_FBO_LINEAR | PARG_FBO_ALPHA | PARG_FBO_DEPTH); const Vector4 transparent = {0, 0, 0, 0}; parg_state_clearcolor(transparent); parg_state_depthtest(1); parg_state_cullfaces(1); parg_shader_load_from_asset(S_SIMPLE); const float h = 1.0f; const float w = h * winwidth / winheight; const float znear = 4; const float zfar = 20; projection = M4MakeFrustum(-w, w, -h, h, znear, zfar); Point3 eye = {0, 1.8, 5}; Point3 target = {0, 0.7, 0}; Vector3 up = {0, 1, 0}; view = M4MakeLookAt(eye, target, up); model = M4MakeIdentity(); }