SkiaSharp 4.0 выходит стабильной: рендеринг на GPU на 24% быстрее и очищенный API
SkiaSharp 4.148.0 - это первый стабильный релиз v4. Интерфейсы с нагрузкой на GPU рендерятся до 24% быстрее, шейдеры на CPU работают примерно в 6 раз быстрее, а устаревшая поверхность API наконец удалена. Вот во что реально обходится обновление.
Мэттью Лейбовиц объявил о первом стабильном релизе SkiaSharp 4.0 29 июня 2026 года, выпущенном как пакет NuGet SkiaSharp 4.148.0. Это релиз, который сводит каждую предварительную версию v4 в один пакет, пригодный для продакшена, и если вы откладывали предварительные версии (мы разбирали их здесь в SkiaSharp 4.0 Preview 1), ожидая, пока API устоится, то теперь API устоялся.
Прирост производительности реален
Заголовок - это не функция, а число. На аппаратно-ускоренном GPU-бэкенде работа, которая доминирует в современных интерфейсах приложений (приподнятые карточки, тени, слоистые поверхности), рендерится до 24% быстрее, чем в предыдущем стабильном релизе. Собственные цифры Microsoft, измеренные на Windows 11 с .NET 10 поверх OpenGL: панель карточек с тенями поднялась с 65 до 80 FPS, а прокручиваемая лента активности - с 47 до 58 FPS.
Работа, ограниченная CPU, улучшилась ещё сильнее. Процедурные шейдеры шума Перлина, из тех, что вы бы применяли для эффектов текстуры или тумана, работают примерно в 6 раз быстрее. Для приложений на MAUI, Avalonia и Uno, которые опираются на SkiaSharp для пользовательской отрисовки, это бесплатное улучшение бюджета кадров без изменений кода на горячем пути.
Что на самом деле привносит 4.148.0
Три конкретных дополнения попадают в стабильный API:
- Полное управление осями переменных шрифтов OpenType в SkiaSharp и HarfBuzzSharp, так что вы задаёте
wght,wdthили любую пользовательскую ось из управляемого кода вместо спуска к нативным дескрипторам HarfBuzz. - Цветовые палитры для шрифтов эмодзи и иконок.
- Кодирование анимированного WebP.
Путь через переменные шрифты - тот, к которому большинство приложений обратится в первую очередь:
using var blob = SKData.Create("Inter.ttf");
using var typeface = SKTypeface.FromData(blob);
var variation = new SKFontVariation
{
{ "wght", 650 },
{ "wdth", 110 },
};
using var variant = typeface.CreateVariant(variation);
using var font = new SKFont(variant, size: 24);
canvas.DrawText("One font file, every weight", 0, 0, font, paint);
То, что анонс преуменьшает
“Более чистый и корректный API” - это дипломатичная формулировка. Практический перевод: v4 завершает долгую миграцию, и устаревшая поверхность API удаляется. Если ваш код всё ещё вызывает устаревшие члены 3.x или вы построили собственную библиотеку элементов управления на изменяемой модели SKPath, компиляция - это место, где вы об этом узнаете. Неизменяемый паттерн SKPath плюс SKPathBuilder, введённый в предварительных версиях, теперь является стандартом, поэтому любой цикл отрисовки, который изменял кэшированный путь, должен перейти на builder.
Для большинства потребителей обновление - это изменение в одну строку:
<PackageReference Include="SkiaSharp" Version="4.148.0" />
Сделайте это в ветке, соберите проект и прочитайте предупреждения прежде, чем читать примечания к релизу. Зелёная сборка означает, что вы уже были чисты. Красная - это короткий механический список удалённых вызовов, а не переписывание. В любом случае FPS стоят потраченного вечера.
Полные подробности - в релизе SkiaSharp 4.148.0 на GitHub.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.