Войти
ПрограммированиеФорумГрафика

Что лучше VSYNC или неограниченное ФПС (7 стр)

Страницы: 14 5 6 7 8 9 Следующая »
#90
14:15, 9 ноя. 2011

Mikle
>1/64 секунды, как Sleep(16).
хм, вынужден извинится, ситуацию с нулём Sleep(0) обрабатывает иначе.

Lamer007
>Почему тогда gkv311 считает, что
>> планировщик Linux по-дефолту имеет большую чувствительность.
ну в технические дебри я не влезал, я просто к тому, что там нет такого сюрприза, что Sleep(1) будет длится 15 миллисекунд.
Разумеется обратного никто и не гарантирует, но если этого не учитывать, то можно и незаметно обжечься. Причём в обоих случаях:
- если думать что Sleep(1) проходит быстро (а на самом деле не факт и программа может терять в производительности);
- если НЕ думать вообще, сколько на самом деле Sleep(1) длится, а эмпирическим путём вставить их в программу (тогда запущенный в трее Skype может магическим образом разогнать ваше приложение).
На больших временах этого едва ли заметишь...

>Серверный линукс должен иметь планировщик менее отзывчивый, чем виндовый настольный комп. То есть таймслайс в линухе должен быть больше виндового
Речь идёт о десктопном Linux. Собираются ли они с разными опциями - не в курсе.


#91
14:37, 9 ноя. 2011

gkv311
> я просто к тому, что там нет такого сюрприза, что Sleep(1) будет длится 15 миллисекунд.
Это довольно неожиданно. Linux, все же, не ОС реального времени.

>ситуацию с нулём Sleep(0) обрабатывает иначе.
Да, просто отдаёт остаток таймслайса.

#92
15:08, 9 ноя. 2011

Lamer007
>Это довольно неожиданно. Linux, все же, не ОС реального времени.
Linux не ОС, а только ядро. Кроме того есть вариация и для 'реального времени'.
Только я вовсе не об этом толкую, а о том что 15 миллисекунд - это в некоторых случаях очень большая погрешность.

В конце концов если звать Sleep(1) хотя бы один раз в цикле рендеринга, то при VSync и 60 Hz мониторе,
мы получаем крохотные 16,6 - 15 = 1,6 миллисекунды, чтобы успеть подготовить кадр до следующей презентации
(или наоборот, подготовив кадр и уйдя ненадолго в спячку пока GPU рисует очень легко выйти из спячки слишком поздно).

#93
15:29, 9 ноя. 2011

warchief
> Вот давно замечаю что в играх ставят ограничение в 60 фпс (и я обычно его
> отключаю - люблю скорость)
терд не читал, но тема интересная.
выскажусь.
во-первых - синхронизация с кадровой разверткой - это то, что просто необходимо игроку. без этого никакой настоящей плавности не будет.
во-вторых - это экономит электроэнергию (да, вот так вот. сейчас процессоры и видеокарты жрут уже по 100-200 вт). а если отрисовывать с максимальным фпс - мы имеем нагрузку на процессор и видеокарту близкую к 100%.
в-третьих - это бережет ваше железо. параметры полупроводниковых приборов таковы, что при температуре выше всего на несколько градусов срок службы прибора может падать в два раза. а центральный и видео процессоры (особенно по последним технологиям 32нм или сколько-то там очень мало) - очень нежные устройства)

вобщем, зачем нам лишние кадры, если мы их не видим.
сейчас максимум для мониторов - 120 (современные 3д мониторы), 60 - обычные.
больше скорости жидкие кристаллы не дают - либо плазма (она жрет много и ее запретили), либо светодиоды (сейчас это дорого и недоступно и неизвестно когда будет). да и глаз человеческий 25 и 50 хорошо отличает, 50 и 100.. уже сомнительно ) а дальше - вообще нецелесообразно.

ну и выводы - разрабатывайте ваши программы с отключенным vsync (нам нужно контролировать производительность).
в релизе обязательно должен быть включен по умолчанию.. а делать или не делать опцию - это уже ваше решение.
может получится так, что фпс на несколько меньше, чем 60, а реально будет в результате только 30... изза того, что мы не укладываемся в кадр по расчетам, и приходится ждать следующего... вобщем, производительность теряется впустую даже когда ее не хватает...

#94
16:26, 9 ноя. 2011

мне не нравиться vsync из-за ограничения в 60 фпс.
Я ооочень много играл в CS и чтото чувствуеться при ограничении фпс. Хотя глаз воспринимает 24(25?)  кадра в сек. всёравно при юзании мышки(при движении некая заторможенность) ощущается различие между 25 фпс и 100 фпс например.


У меня мощный компьютер дома, и в играх я всё равно не включаю синхронизацию.

#95
16:49, 9 ноя. 2011

LeeSwagger
> мне не нравиться vsync из-за ограничения в 60 фпс.
существует другая проблема. это проблема кода.
я не видел ни одного движка, который бы правильно работал со временем, правильно выполнял синхронизацию.
на данный момент таких движков не существует.
я сам пытаюсь это сделать и чем дальше - тем больше убеждаюсь в том, что нужно искуственно ограничивать
фпс апдейта в 120, а физики в 60 + интерполяция.
правильнее способа для ленивых не существует.
если же делать все правильно в отношении времени - приходится много думать и не всегда получается на 100% гарантировать правильную работу приложения.

#96
17:17, 9 ноя. 2011

EvilSpirit
> вобщем, зачем нам лишние кадры, если мы их не видим.
Вот все хотел отписаться, но тред слишком быстро вырос.
Так ведь  проблема не в том - видим или не видим. Проблема в скорости отклика... (гм играл когда-то в принца персии: воин чего-то там на старом компе - 30 фпс - играбельно, но все движется медленно. Сейчас запустил на новом - игра на очень большой скорости - драйв)

#97
17:27, 9 ноя. 2011

warchief
> Проблема в скорости отклика... (гм играл когда-то в принца персии: воин
> чего-то там на старом компе - 30 фпс - играбельно, но все движется медленно.
> Сейчас запустил на новом - игра на очень большой скорости - драйв)
скорость отклика равна частоте смены кадров )
а вообще - тоже задача нетривиальная... опять целая наука)

#98
17:28, 9 ноя. 2011

В задержке отклика виновато кеширование кадров.

#99
17:28, 9 ноя. 2011

warchief
> но все движется медленно. Сейчас запустил на новом - игра на очень большой
> скорости - драйв)
это другое. там скорость изменяется относительно реального времени... а должна сохраняться )

#100
19:16, 9 ноя. 2011

gkv311
>Linux не ОС, а только ядро. Кроме того есть вариация и для 'реального времени'.
Спасибо, Капитан ОмерикоОчевидность. :)

> В конце концов если звать Sleep(1) хотя бы один раз в цикле рендеринга, то при VSync и 60 Hz мониторе, мы получаем крохотные 16,6 - 15 = 1,6 миллисекунды
В документации к этой функции так и написано, что она не подходит для измерения времени с погрешностью до 0.1 секунды, так что если человек не умеет читать, то это его проблемы, а не майкрософта. Настольная виндовс - не система реального времени, так что Sleep работает правильно. То есть, об этом можно было догадаться даже не читая документацию.

В игры очень полезно добавлять возможность в настройках отключать TripleBuffering и ограничивать очередь рендеринга (та, что накапливает несколько кадров, прежде чем начать рендерить). Это позволит получить более быстрый отклик на ввод пользователя. Особенно полезно на компах с низким фпс. Конечно, это можно настроить через всякие тулзы от производителя видяхи, но не все это знают.

#101
19:23, 9 ноя. 2011

Lamer007
> В документации к этой функции так и написано, что она не подходит для измерения
> времени с погрешностью до 0.1 секунды
я вот лично сразу прочитал ) но меня интересует вопрос - как организовать sleep хотябы с точностью 1 мс?

#102
19:32, 9 ноя. 2011

>как организовать sleep хотябы с точностью 1 мс?
1)timeBeginPeriod/timeEndPeriod
2)Такой sleep не нужен. Можно и нужно обходится другими средствами. Это не средство измерения времени. А как средство экономии ЦПУ - от него толку мало, если использовать его после форсирования точного режима в 1 мс. Да и после форсирования нечего ожидать, что управление через 1 мс вернется, тк оно может уйти к кому-то другому. Тем более форсирование к точному режиму приводит к потере производительности. И вообще, это не система реального времени, чтобы ждать от Sleep точности.

#103
19:38, 9 ноя. 2011

Lamer007
> Такой sleep не нужен
а я хочу! )))))
не хочу просирать время в пустом цикле.

#104
19:54, 9 ноя. 2011

EvilSpirit
> не хочу просирать время в пустом цикле.
Это называется SpinWait. Не нужно им особо пользоваться. Ожиданий и без того хватит.

> не хочу просирать время в пустом цикле.
А где хотите? В "полном цикле" планировщика задач?


Во время работы потока, если он правильно устроен, и так много ожиданий:  ожидание своего таймслайса, файловый IO, IO в видеокарту, ожидание событий и тд.

Страницы: 14 5 6 7 8 9 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.