Когда мне следует оптимизировать шейдеры OpenGL ES для старых мобильных устройств, использующих одномерные таблицы поиска? - PullRequest
2 голосов
/ 06 февраля 2020

Я пытаюсь оптимизировать скорость шейдера для старых устройств на Android и iOS. Очевидно, что я мог проверить это на отдельных устройствах, но меня больше интересует общая производительность моей игры на всех платформах. У меня есть две функции, которые используются для получения оценочного значения в спектре, основанного на процентах.

float wave(float pos)
{
    float frac = mod(pos, 1.0);  
    float val1 = mod(floor(pos), 6.0);
    float val2 = mod(val1 + 1.0, 6.0);

    return floor(val1 / 3.0) * (1.0 - frac) + floor(val2 / 3.0) * frac;
}

vec3 spectrum(float percent)
{
    float wave_pos = percent * 6.;
    float r = wave(wave_pos);
    float g = wave(wave_pos + 2.);
    float b = wave(wave_pos + 4.);
    return vec3(r,g,b);
}

Я подумывал заменить его на 1D-текстуру поиска. Это будет обрабатывать и линейную интерполяцию. Я знаю, что поиск текстуры случайного местоположения не всегда оптимизирован на старых устройствах. Как видите, он заменит около 18 вызовов встроенных функций, а также 13 умножений. Это обычно считается хорошей практикой?

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