Улучшение алгоритма компрессии RTV1 в MSI Afterburner
Почти закончены работы по усовершенствованию алгоритма компрессии RTV1 в модуле видеозахвата MSI Afterburner.
И опять приятные новости от Алексея Николайчука a.k.a. Unwinder, цитирую:
Поскольку в основе алгоритма сжатия RTV1 лежит крайне быстрая блочная компрессия DXTC, самым слабым местом этого кодека было качество изображения. Блочные артефакты сжатия RTV1 очень и очень сильно заметны на контрастных цветовых градиентах (например, фиолетовый HUD на скриншоте ниже). Внесённые в алгоритм копмрессии улучшения позволяют значительно поднять качество сжатых изображений ценой степени сжатия, сохранив при этом крайне высокую производительность сжатия (performance hit нового алгоритма на полном кадре 1680x1050 на старичке Q6600 — всего порядка 4 миллисекунд).
Улучшения нового кодека RTV1 основаны на runtime-анализе качества изображения каждого скомпрессированного блока. Если средняя ошибка блока превышает определённый порог, т. е. блок не поддаётся DXTC сжатию без значительных потерь, то блок записывается в файл в несжатом виде. Порог ошибки может регулироваться ползунком качества сжатия.
Разница между старым и новым алгоритмами сжатия видна на скриншоте ниже (слева старый алгоритм, справа новый со стопроцентым качеством).
p.s. SIMD решительно рулит. За пару недель работы с SSE2 cкорость алгоритма сравнения качества блоков удалось поднять более чем в 5 раз.
Следите за новостями!