Улучшение алгоритма компрессии RTV1 в MSI Afterburner

Почти закончены работы по усовершенствованию алгоритма компрессии RTV1 в модуле видеозахвата MSI Afterburner.

И опять приятные новости от Алексея Николайчука a.k.a. Unwinder, цитирую:

Поскольку в основе алгоритма сжатия RTV1 лежит крайне быстрая блочная компрессия DXTC, самым слабым местом этого кодека было качество изображения. Блочные артефакты сжатия RTV1 очень и очень сильно заметны на контрастных цветовых градиентах (например, фиолетовый HUD на скриншоте ниже). Внесённые в алгоритм копмрессии улучшения позволяют значительно поднять качество сжатых изображений ценой степени сжатия, сохранив при этом крайне высокую производительность сжатия (performance hit нового алгоритма на полном кадре 1680x1050 на старичке Q6600 — всего порядка 4 миллисекунд).

Улучшения нового кодека RTV1 основаны на runtime-анализе качества изображения каждого скомпрессированного блока. Если средняя ошибка блока превышает определённый порог, т. е. блок не поддаётся DXTC сжатию без значительных потерь, то блок записывается в файл в несжатом виде. Порог ошибки может регулироваться ползунком качества сжатия.

Разница между старым и новым алгоритмами сжатия видна на скриншоте ниже (слева старый алгоритм, справа новый со стопроцентым качеством).

Алгоритм сжатия RTV1

p.s. SIMD решительно рулит. За пару недель работы с SSE2 cкорость алгоритма сравнения качества блоков удалось поднять более чем в 5 раз.

Следите за новостями!