-
Nikitos создал
§12.4 «фильтрация/мипмапы»: фильтрация была (nearest/linear), мипмапов не было вовсе. Без них УМЕНЬШЕННЫЙ спрайт мерцает — сэмплер берёт одну точку из большой картинки. ЧТО СДЕЛАНО: * render.c: r2d__mip_levels (полная пирамида, предел SDL 16), создание текстуры с нужным числом уровней, r2d_texture_load_mipped; * в r2d__upload_pixels после копирования — SDL_GenerateMipmapsForGPUTexture; * engine.loadTexture(path, { mipmaps: true }); * $.resource: поле `mipmaps: true` в описании текстуры. ДВЕ ОШИБКИ SDL, которые поймал тест (обе — ассерты; в сборке с отключёнными ассертами это были бы молча чёрные текстуры, а не отказ): 1. «Cannot generate mipmaps for texture with num_levels <= 1» — я добавил параметр уровней, но замена `num_levels = 1` попала не в ту функцию (в файле две почти одинаковые функции создания текстуры), и уровень остался один; 2. «must be created with SAMPLER and COLOR_TARGET usage flags» — SDL строит уровни, РИСУЯ их, поэтому мипмап-текстуре нужен COLOR_TARGET (`levels > 1` добавляет флаг; одноуровневым он не нужен). УРОК ПРО МОИ ЖЕ ЗАМЕНЫ: `python replace` без проверки результата дважды сработал не туда — сначала в create_texture_usage, потом молча ничего. Теперь после каждой замены проверяю, что она нашлась. ПРОВЕРКА (tests/agent/highlevel_mipmap_test.py, 9 проверок): текстура с мипмапами получает валидный id; кэш по пути возвращает тот же слот; спрайт рисуется в натуральную величину и УМЕНЬШЕННЫМ (1929 точек против 40153 — то есть уменьшение реально); $.resource грузит текстуру с mipmaps: true; textureFromPixels не затронут. ЧЕСТНОЕ ОГРАНИЧЕНИЕ (записано в API.md): кэш идёт по ПУТИ, поэтому если текстура уже загружена без мипмапов, запрос с mipmaps: true вернёт ту же — опции не переприменяются. Загружайте с мипмапами сразу. ДОКИ: API.md (опция, зачем, ограничение кэша), resource.md (поле mipmaps), TASKS §12.4. Осталось из §12.4: Curve/Gradient как ресурсы ($.curve умеет кривые и градиенты, но видов в $.resource нет). Полный qjs, агентские тесты, doc_coverage, doc_claims, duplicate_keys, быстрый набор — зелёные.8813d966