Правильный выбор индексов DXT1 / DXT1A / BC1 - PullRequest
0 голосов
/ 21 января 2019

Итак, я нашел алгоритм сжатия текстур, который действительно хорош здесь: http://lspiroengine.com/?p=312,, но я не уверен, как выбрать подходящие индексы для моей текстуры, учитывая c0 и c1 (мин / макс).

Я использую код ryg в библиотеке STB Шона Баррета здесь https://github.com/nothings/stb/blob/e6afb9cbae4064da8c3e69af3ff5c4629579c1d2/stb_dxt.h#L215. Не уверен, что строки 227 и 230 означают вычисляемые значения.

это точечная проверка по сравнению с c0 и c3.

for(I = 0; I < 16; I++) {
    dots[I] = color[0].r 
}

for(I = 0; I < 16; I++)
    int dot = dots[I];
    mask <<= 2;
    if(dot < halfpoint) {
        mask |= (dot < c0point) ? 1 : 3;
    } else {
        mask |= (dot < c3point) ? 2 : 0;
    }

Мне интересно, правильно ли это в смысле евклидова расстояния. Источник предполагает, что это не так. Я хочу, чтобы текстура была максимально правильной, прежде чем я запустил на ней стандартный бэкэнд, такой как LMZA. Если бы мне нужно было сделать разные компромиссы, я бы хотя бы использовал правильный алгоритм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...