Собственно из написанного ранее можно попытаться понять как же на мониторе который обновляет картинку всего 60 раз в секунду увидеть 100 fps игры.
Действительно, реально мы имеем только 60 обновлений экрана в секунду, но не надо забывать о том, что на отрисовку нового кадра уходит некоторое время... луч (по аналогии с ЭЛТ) сканирует экран сверху-вниз строку за строкой пока не дойдет до конца. После этого начинается новый цикл и так постоянно.
Легко подсчитать что при частоте 60 кадров в секунду на отрисовку полного кадра монитор тратит 1000мс/60=16.7мс.
Это не совсем точная цифра, реально надо вычесть время на обратный ход луча.
Предположим что игра работает полностью синхронно с монитором и не меняет содержимое фреймбуфера на новый кадр пока монитор полностью не отресует предыдущий и не перейдет в фазу обратного хода луча (фреймубер это область памяти видеокарты из которой изображение попиксельно попадает непосредственно на экран монитора).
Это значит что новый, уже отрендереный кадр, начинает копироваться в фреймбуфер только в момент когда не происходит никакой отрисоовки и монитор готовится к рисованию нового кадра.
Это очень маленький интервал времени, но современная память работает много быстрее, так что вполне достаточно на копирование, главное отрендерить кадр заранее.
Данный подход известен со времен досовских игр и дает высокое качество картинки без дефектов.
На сленге это называется VSync (вертикальная синхронизация).
Если VSync включен, то рендерить картинку с частотой больше 60 кадров в секунду нет смысла - ничего не увидем из-за ограничений аппаратуры.
Проблема вертикальной синхронизации в том, что мы не увидем изменений на экране из-за наших действий целых 16.7мс!
Кроме того, быстродвижущиеся объекты будут менять свое положение скачками - раз в 16.7мс.
А теперь предположим что VSync отключен как во всех PC играх по умолчанию (на консоле и в кино это не реально).
В этом случае видеокарта обновляет картинку во фреймбуфере непрерывно с максимально возможной скоростью (например 100 кадров в секунду). Монитор тоже берет данные из фреймубера непрерывно и все изменения отображаются моментально с текущей позиции луча, нет никакого простоя в 16.7 мс.
Игра становится более отзывчивой, но страдает качество картинки. Появляется "волна", т.е. часть изображения на экране осталась от предыдущего кадра, а часть заполняется содержимым нового кадра (со сдвигом если мы двигаемся).
Т.к. процесс рендера и процесс отображения никак не синхронизируется граница постоянно смещается (то выше, то ниже), а из-за инертности зрения мы почти не обращаем на это внимания. Хотя эффект отлично виден глазом.
Т.е. формально мы имеем 60 полных кадров в секунду, но фактически до нас доходят все 100 кадров игры... только частями.
В результате реакция на действия человека проявляется моментально, объекты перемещаются плавнее. Фактически через 60-ти герцовый монитор постоянно прорываются наши 100 кадров в секунду. В принципе суть процесса похожа на черезстрочное видео, та же гребенка только другой конфигурации, зато обходятся ограничения со стороны аппаратуры.
Вместо того, что бы ждать 16.7 мс, изображение постоянно меняется с текущей позиции сканирования, и из-за этого частями.
А если еще и взять новый 100Гц монитор (которые активно появляются в последнее время), то тут 100 полных кадров абсолютная реальность.
Частота развертки монитора никак не зависит от производительности компьютера, значение фиксированное, но обновлять содержимое экрана можно в любой момент.. процес отрисовки постоянен и цикличен.
Глаз отдельные кадры не воспринимает, зато отчетливо воспринимает быстро движущиеся объекты на экране, а тут мозг работает гораздо бстрее 60-ти кадров в секунду. Пулю не заметить, а вот что-то помедленнее запросто. Хотя процесс полета трассирующей пули ночью вполне различим.
И еще момент.. в последних дорогих телевизорах делают 200Hz кадровой развертки и искусственно формируют недостающие кадры путем интерполяции изображения. Производители говорят что спортивные мероприятия выглядят гораздо естественнее и я им полностью верю. При чем речь идет на о каких-то жалких 100 кадрах в секунду, а о целых 200.
Значит мы в состоянии отслеживать объекты двигающиеся настолько быстро что только интервалы между кадрами в 5мс могут передать плавность их движения не вызывая у мозга вопросов. Возможно так много и не надо, но в теории все логично.
Подводим ИТОГИ:
Отдельных кадров не видно, зато они сливаются в непрерывное действие, а тут работают обычные законы жизни - движется быстро значит рывков из-за больших интервалов между кадрами быть не должно, в жизни все плавно.
60 обновлений экрана для глаза считается достаточным, хотя несколько лет назад для ЭЛТ мониторов нормой было 100-120 (тоже прогрессивных), тогда не уставали глаза (повод задуматься). Сейчас с модой на стерео времена возвращаются.
Опытным путем установил для себя что 60 кадров в секунду комфортный минимум для шутеров от первого лица на PC с управлением мышью и без эффекта размытия в движении.
При меньшей частоте теряется ощущение реальности происходящего и контроля над игровым процессом.
При этом 30 кадров в секунду можно считать допустимым минимумом.
Дальнейшее увеличение fps дает положительный результат, но на 80-100 я перестаю что-то замечать.
В случае консолей больше 60 fps не получится в принципе из-за современных ТВ стандартов, так что считаем это максимум.
30 кадров в секунду воспринимаются вполне нормально при условии плавности движения камеры из-за использования геймпада.
Эффект размытия в движении может сгладить недостатки и более низких fps.
Действительно, реально мы имеем только 60 обновлений экрана в секунду, но не надо забывать о том, что на отрисовку нового кадра уходит некоторое время... луч (по аналогии с ЭЛТ) сканирует экран сверху-вниз строку за строкой пока не дойдет до конца. После этого начинается новый цикл и так постоянно.
Легко подсчитать что при частоте 60 кадров в секунду на отрисовку полного кадра монитор тратит 1000мс/60=16.7мс.
Это не совсем точная цифра, реально надо вычесть время на обратный ход луча.
Предположим что игра работает полностью синхронно с монитором и не меняет содержимое фреймбуфера на новый кадр пока монитор полностью не отресует предыдущий и не перейдет в фазу обратного хода луча (фреймубер это область памяти видеокарты из которой изображение попиксельно попадает непосредственно на экран монитора).
Это значит что новый, уже отрендереный кадр, начинает копироваться в фреймбуфер только в момент когда не происходит никакой отрисоовки и монитор готовится к рисованию нового кадра.
Это очень маленький интервал времени, но современная память работает много быстрее, так что вполне достаточно на копирование, главное отрендерить кадр заранее.
Данный подход известен со времен досовских игр и дает высокое качество картинки без дефектов.
На сленге это называется VSync (вертикальная синхронизация).
Если VSync включен, то рендерить картинку с частотой больше 60 кадров в секунду нет смысла - ничего не увидем из-за ограничений аппаратуры.
Проблема вертикальной синхронизации в том, что мы не увидем изменений на экране из-за наших действий целых 16.7мс!
Кроме того, быстродвижущиеся объекты будут менять свое положение скачками - раз в 16.7мс.
А теперь предположим что VSync отключен как во всех PC играх по умолчанию (на консоле и в кино это не реально).
В этом случае видеокарта обновляет картинку во фреймбуфере непрерывно с максимально возможной скоростью (например 100 кадров в секунду). Монитор тоже берет данные из фреймубера непрерывно и все изменения отображаются моментально с текущей позиции луча, нет никакого простоя в 16.7 мс.
Игра становится более отзывчивой, но страдает качество картинки. Появляется "волна", т.е. часть изображения на экране осталась от предыдущего кадра, а часть заполняется содержимым нового кадра (со сдвигом если мы двигаемся).
Т.к. процесс рендера и процесс отображения никак не синхронизируется граница постоянно смещается (то выше, то ниже), а из-за инертности зрения мы почти не обращаем на это внимания. Хотя эффект отлично виден глазом.
Т.е. формально мы имеем 60 полных кадров в секунду, но фактически до нас доходят все 100 кадров игры... только частями.
В результате реакция на действия человека проявляется моментально, объекты перемещаются плавнее. Фактически через 60-ти герцовый монитор постоянно прорываются наши 100 кадров в секунду. В принципе суть процесса похожа на черезстрочное видео, та же гребенка только другой конфигурации, зато обходятся ограничения со стороны аппаратуры.
Вместо того, что бы ждать 16.7 мс, изображение постоянно меняется с текущей позиции сканирования, и из-за этого частями.
А если еще и взять новый 100Гц монитор (которые активно появляются в последнее время), то тут 100 полных кадров абсолютная реальность.
Частота развертки монитора никак не зависит от производительности компьютера, значение фиксированное, но обновлять содержимое экрана можно в любой момент.. процес отрисовки постоянен и цикличен.
Глаз отдельные кадры не воспринимает, зато отчетливо воспринимает быстро движущиеся объекты на экране, а тут мозг работает гораздо бстрее 60-ти кадров в секунду. Пулю не заметить, а вот что-то помедленнее запросто. Хотя процесс полета трассирующей пули ночью вполне различим.
И еще момент.. в последних дорогих телевизорах делают 200Hz кадровой развертки и искусственно формируют недостающие кадры путем интерполяции изображения. Производители говорят что спортивные мероприятия выглядят гораздо естественнее и я им полностью верю. При чем речь идет на о каких-то жалких 100 кадрах в секунду, а о целых 200.
Значит мы в состоянии отслеживать объекты двигающиеся настолько быстро что только интервалы между кадрами в 5мс могут передать плавность их движения не вызывая у мозга вопросов. Возможно так много и не надо, но в теории все логично.
Подводим ИТОГИ:
Отдельных кадров не видно, зато они сливаются в непрерывное действие, а тут работают обычные законы жизни - движется быстро значит рывков из-за больших интервалов между кадрами быть не должно, в жизни все плавно.
60 обновлений экрана для глаза считается достаточным, хотя несколько лет назад для ЭЛТ мониторов нормой было 100-120 (тоже прогрессивных), тогда не уставали глаза (повод задуматься). Сейчас с модой на стерео времена возвращаются.
Опытным путем установил для себя что 60 кадров в секунду комфортный минимум для шутеров от первого лица на PC с управлением мышью и без эффекта размытия в движении.
При меньшей частоте теряется ощущение реальности происходящего и контроля над игровым процессом.
При этом 30 кадров в секунду можно считать допустимым минимумом.
Дальнейшее увеличение fps дает положительный результат, но на 80-100 я перестаю что-то замечать.
В случае консолей больше 60 fps не получится в принципе из-за современных ТВ стандартов, так что считаем это максимум.
30 кадров в секунду воспринимаются вполне нормально при условии плавности движения камеры из-за использования геймпада.
Эффект размытия в движении может сгладить недостатки и более низких fps.