--- a/src/sprite.c Sun May 11 14:51:00 2025 +0200 +++ b/src/sprite.c Mon May 12 20:51:57 2025 +0200 @@ -59,10 +59,19 @@ node->scale = asc_vec3f_one; asc_node_update_transform(node); + // calculate texture parameters + asc_vec2f uv_scale; + uv_scale.u = ASC_NONZERO_OR(1.f, args.texture_scale_x); + uv_scale.v = ASC_NONZERO_OR(1.f, args.texture_scale_y); + if (args.texture_scale_mode == ASC_TEXTURE_SCALE_REPEAT) { + uv_scale = asc_texture_calculate_uv_scale(args.texture, + asc_vec2u_new(args.width, args.height), uv_scale); + } + // initialize mesh asc_mesh_plane_2d(&sprite->mesh, .size = asc_vec2f_new(args.width, args.height), - // TODO: support different texture modes + .uv_scale = uv_scale ); return node;