Зависимость коэффициента motion blur от времени кадра.
Автор: Николай Сосновиков
Многие программисты сталкиваются с тем, что фиксированный коэффициент для эффекта motion blur не подходит.
Потому что в такой ситуации при высокой производительности системы размытие становится слишком слабым,
а при низкой производительности, наоборот, слишком сильным.
Часто используют также экспоненциальную зависимость, но и она не даёт должного эффекта.
Наиболее правильно рассчитывать коэффициент как экспоненту из корня:
blur = exp ( - sqrt (frameTime) * K);
Где K - это некий коэффициент, который чем больше, тем слабее размытие,
а frameTime - время текущего кадра.
Пример использования:
.... float blur = exp (- sqrt ( frameTime) * 2.0f); glDisable( GL_DEPTH_TEST), glEnable( GL_BLEND), glBlendFunc( GL_ONE, GL_SRC_ALPHA), glColor4f ( blur, blur, blur, 1.0f - blur); // выводим на экран текстуру с изображением предыдущего кадра ....
16 октября 2009
Комментарии [1]