Ten wątek został zamknięty
MrDionysus 4 kwietnia 2017 o 5:42
Разрывы изображения в играх
Все время горизонтальные разрывы, как это исправить?
< >
Wyświetlanie 16-30 z 36 komentarzy
vadim 4 kwietnia 2017 o 7:58 
На самом деле ни малейшего отношения к "разрывам" ни G-sync, ни Freesync вообще не имеют. Они предназначены для обеспечения более плавной отрисовки картинки. Борьбы с тем, что называют stuttering.
WoRG 4 kwietnia 2017 o 8:00 
http://www.nvidia.ru/object/g-sync-monitor-technology-ru.html
G-SYNC динамически синхронизирует скорость регенерации дисплея с частотой смены кадров на GPU. Это устраняет разрывы экрана, минимизирует дрожание изображения и задержки ввода. Дисплеи с технологией G-SYNC не имеют минимальной частоты обновления и поддерживают максимальную переменную частоту обновления, на которую способна ЖК-панель.

Тоже самое Вы можете прочитать в панеле нвидиа к описанию vsync)

Ну, а что такое разрыв кадра можно найти по картинкам на яндексе
https://yandex.ru/images/search?text=разрыв%20кадра
Ostatnio edytowany przez: WoRG; 4 kwietnia 2017 o 8:02
vadim 4 kwietnia 2017 o 8:02 
К сожалению, это чисто рекламный текст и он, мягко говоря, не соответствует действительности. Чкстное слово. Но меня очень порадовало как они описывают свою технологию. Жаль, что это враньё.
WoRG 4 kwietnia 2017 o 8:04 
Если бы это был маркетинг, я бы видел разрывы, но после этого их нет, у друга моник с амд синхронизацией и повышенной частотой, говорит в кс лучше стало играть и разрывов нет.
Ostatnio edytowany przez: WoRG; 4 kwietnia 2017 o 8:09
MrDionysus 4 kwietnia 2017 o 8:39 
У меня монитор 60 гц без Г синк
vadim 4 kwietnia 2017 o 9:01 
Смотрите. То, что вы называете разрывами изображения происходит в ситуации когда в один момент времени на экран одновременно выводятся части двух разных кадров. Того, который был сформирован видеокартой ранее и последующего.
Это может быть вызвано двумя принципиально разными причинами - либо видеокарта передает монитору кадр состоящий их двух половинок, либо видеокарта передает правильно один кадр за другим, а монитор составляет из них ту картинку, которую вы называете "разорванной".
Причем одно устройство в принципе не может исправить огрехи второго.
Ситуация с "разрывом кадра" монитором была само собой разумеющейся для мониторов с электронно-лучевой трубкой. Они были аналоговыми, не имели собственной памяти и всё, что попадало к ним на вход автоматически сразу отправлялось на отрисовку. В ту же микросекунду. А с учетом того, что частота пикселей у них составляла до 400 МГц, даже в не "микро", а "нано".
Однако у жидкокристаллических мониторов всё иначе. Любой монитор имеет буферную память и полученная с видеокарты (теперь уже цифровая, а не аналоговая) информация отправляется туда, а не на экран. Что дальше? Дальше есть два варианта. Либо можно эту информацию сразу начать отрисовывать и тогда будет разрыв. Или можно подождать пока будет получен полный кадр и отрисовать уже его. Тогда разрыва не будет, но возникнет задержка вывода (input lag). Достаточно значительный, при 60 Гц (причем неважно что это - FPS в игре или частота кадровой развертки) он будет 16.7 мс. Считайте, что на эту величину у Вас вырастет ping.
Производители делают разный выбор для разных мониторов. Либо они соглашаются на разрывы чтобы уменьшить задержку ввода, либо полностью устраняют разрывы по указанной причине за счет того, что изображение выводится на экран с некоторым запозданием. Согласитесь, изображение надо либо отправлять в буфер, либо отрисовывать. Либо одно, либо другое. Третьего не дано и G-sync тут никак не поможет.
С монитором я надеюсь разобрались.
Перейдем ко второй причине - карта отправила монитору разорванное изображение.
Почему такое может произойти? По очень простой причине: Карта имеет процессор, который в процессе рендеринга формирует в некотором участке оперативной памяти образ экрана.
В момент когда должен был быть подан сигнал вертикальной синхронизации (тот самый, оставшийся еще со времен CRT-мониторов, потому что никакой синхронизации у LCD разумеется нет), выходной интерфейс начинает передавать содержимое этого буфера монитору. Это происходит с использованием прямого доступа в память (DMA) и не требует использования ресурсов GPU. Это всё отлично, но при таком доступе нередко возникает коллизия, когда одно устройство читает тот же диапазон адресов, которое второе в этот момент записывает. В результате получаем разорванный кадр.
Как решается эта проблема? Очень простым и известным с незапамятных времен способом - переключением буферов. Графический процессор пишет картинку в одно место, а контроллер интерфейса читает из другого. Включается этот режим выбором пункта "buffer flipping" в панели настройки NVidia.
Имеет ли этот пункт какое-нибудь отношение к G-sync? Да никакого. Точнее, G-sync без buffer flipping просто нельзя включить, но сам по себе G-sync никаким управлением буферами не занимается и поэтому к разрывам отношения и в этом случае не имеет.
Кстати, утверждение производителя о том, что G-sync якобы может работать при любой сколь угодно малой частоте кадров тоже выдумки, но это тема отдельного разговора.
Может возникнуть вопрос, почему же тогда переключение буферов не активно постоянно? Зачем надо делать его отключаемым? Ответ прост - это переключение... да-да, Вы не ошиблись - оно тоже увеличивает задержку вывода. Причем задержка вывода монитора и видеокарты суммируются. Сначала кадр лежит в запасном буфере видеокарты, пока не будет полностью отрисован, потом попадает в буфер монитора и 16.67мс задержки эффективно удваиваются, превращаясь в 33.3мс.
Но и это еще не все неприятности. Допустим у Вас FPS в игре в какой-то момент становится ниже частоты развертки монитора. монитору надо рисовать новый кадр, а его еще нет - он лежит в одном из промежуточных буферов, дожидаясь пока сначала видеокарта его отрисует, потом пока контроллер его передаст...
Что делать монитору? Он повторно рисует тот кадр, который только что выводился. В результате возникает явление получившее название "заикания" (stuttering). Отдельные кадры выводятся повторно в результате чего движение на экране становится неравномерным. Рывками. Видите сколько минусов? Кажется, что проще мириться с "разрывами". Однако технологии адаптивной синхронизации позволяют от этого заикания избавиться путем перехода от фиксированной частоты кадров к плавающей. AMD использует для этого синхросигнал интерфейса Display Port, метод реализации NVidia не раскрывается. Этот же подход позволяет достигнуть еще одного эффекта - уменьшение времени задержки вывода, поскольку буферы видеокарты и монитора синхронизированы.
В целом, технология прекрасная, никто не отрицает. И никто не отрицает, что при её использовании не должны наблюдаться "разрывы" вызванные одной из двух описанных выше причин. Только это не её заслуга. Она работает "поверх" программного переключения буферов и требует от монитора сохранять изображение в буфере, а не выводить его сразу на экран.

Получилось очень длинно, интересно дочитает ктоз-нибудь до этих строк или нет? Можете не читать - просто мне пришлось отвечать на возражение, что G-sync якобы устраняет "разрывы экрана" и пришлось накатать такую вот простыню, чтобы пояснить почему G-sync не занимается предотвращением этих самых разрывов, хотя действительно ни один монитор с этой технологией еще пополам не разорвало...
WoRG 4 kwietnia 2017 o 9:22 
Самое главное это работает. Мы ведь покупаем монитор с гсунком, чтобы не было разрывов и меньше задержек, мы это получаем.
MrDionysus 4 kwietnia 2017 o 9:36 
Początkowo opublikowane przez vadim:
Смотрите. То, что вы называете разрывами изображения происходит в ситуации когда в один момент времени на экран одновременно выводятся части двух разных кадров. Того, который был сформирован видеокартой ранее и последующего.
Это может быть вызвано двумя принципиально разными причинами - либо видеокарта передает монитору кадр состоящий их двух половинок, либо видеокарта передает правильно один кадр за другим, а монитор составляет из них ту картинку, которую вы называете "разорванной".
Причем одно устройство в принципе не может исправить огрехи второго.
Ситуация с "разрывом кадра" монитором была само собой разумеющейся для мониторов с электронно-лучевой трубкой. Они были аналоговыми, не имели собственной памяти и всё, что попадало к ним на вход автоматически сразу отправлялось на отрисовку. В ту же микросекунду. А с учетом того, что частота пикселей у них составляла до 400 МГц, даже в не "микро", а "нано".
Однако у жидкокристаллических мониторов всё иначе. Любой монитор имеет буферную память и полученная с видеокарты (теперь уже цифровая, а не аналоговая) информация отправляется туда, а не на экран. Что дальше? Дальше есть два варианта. Либо можно эту информацию сразу начать отрисовывать и тогда будет разрыв. Или можно подождать пока будет получен полный кадр и отрисовать уже его. Тогда разрыва не будет, но возникнет задержка вывода (input lag). Достаточно значительный, при 60 Гц (причем неважно что это - FPS в игре или частота кадровой развертки) он будет 16.7 мс. Считайте, что на эту величину у Вас вырастет ping.
Производители делают разный выбор для разных мониторов. Либо они соглашаются на разрывы чтобы уменьшить задержку ввода, либо полностью устраняют разрывы по указанной причине за счет того, что изображение выводится на экран с некоторым запозданием. Согласитесь, изображение надо либо отправлять в буфер, либо отрисовывать. Либо одно, либо другое. Третьего не дано и G-sync тут никак не поможет.
С монитором я надеюсь разобрались.
Перейдем ко второй причине - карта отправила монитору разорванное изображение.
Почему такое может произойти? По очень простой причине: Карта имеет процессор, который в процессе рендеринга формирует в некотором участке оперативной памяти образ экрана.
В момент когда должен был быть подан сигнал вертикальной синхронизации (тот самый, оставшийся еще со времен CRT-мониторов, потому что никакой синхронизации у LCD разумеется нет), выходной интерфейс начинает передавать содержимое этого буфера монитору. Это происходит с использованием прямого доступа в память (DMA) и не требует использования ресурсов GPU. Это всё отлично, но при таком доступе нередко возникает коллизия, когда одно устройство читает тот же диапазон адресов, которое второе в этот момент записывает. В результате получаем разорванный кадр.
Как решается эта проблема? Очень простым и известным с незапамятных времен способом - переключением буферов. Графический процессор пишет картинку в одно место, а контроллер интерфейса читает из другого. Включается этот режим выбором пункта "buffer flipping" в панели настройки NVidia.
Имеет ли этот пункт какое-нибудь отношение к G-sync? Да никакого. Точнее, G-sync без buffer flipping просто нельзя включить, но сам по себе G-sync никаким управлением буферами не занимается и поэтому к разрывам отношения и в этом случае не имеет.
Кстати, утверждение производителя о том, что G-sync якобы может работать при любой сколь угодно малой частоте кадров тоже выдумки, но это тема отдельного разговора.
Может возникнуть вопрос, почему же тогда переключение буферов не активно постоянно? Зачем надо делать его отключаемым? Ответ прост - это переключение... да-да, Вы не ошиблись - оно тоже увеличивает задержку вывода. Причем задержка вывода монитора и видеокарты суммируются. Сначала кадр лежит в запасном буфере видеокарты, пока не будет полностью отрисован, потом попадает в буфер монитора и 16.67мс задержки эффективно удваиваются, превращаясь в 33.3мс.
Но и это еще не все неприятности. Допустим у Вас FPS в игре в какой-то момент становится ниже частоты развертки монитора. монитору надо рисовать новый кадр, а его еще нет - он лежит в одном из промежуточных буферов, дожидаясь пока сначала видеокарта его отрисует, потом пока контроллер его передаст...
Что делать монитору? Он повторно рисует тот кадр, который только что выводился. В результате возникает явление получившее название "заикания" (stuttering). Отдельные кадры выводятся повторно в результате чего движение на экране становится неравномерным. Рывками. Видите сколько минусов? Кажется, что проще мириться с "разрывами". Однако технологии адаптивной синхронизации позволяют от этого заикания избавиться путем перехода от фиксированной частоты кадров к плавающей. AMD использует для этого синхросигнал интерфейса Display Port, метод реализации NVidia не раскрывается. Этот же подход позволяет достигнуть еще одного эффекта - уменьшение времени задержки вывода, поскольку буферы видеокарты и монитора синхронизированы.
В целом, технология прекрасная, никто не отрицает. И никто не отрицает, что при её использовании не должны наблюдаться "разрывы" вызванные одной из двух описанных выше причин. Только это не её заслуга. Она работает "поверх" программного переключения буферов и требует от монитора сохранять изображение в буфере, а не выводить его сразу на экран.

Получилось очень длинно, интересно дочитает ктоз-нибудь до этих строк или нет? Можете не читать - просто мне пришлось отвечать на возражение, что G-sync якобы устраняет "разрывы экрана" и пришлось накатать такую вот простыню, чтобы пояснить почему G-sync не занимается предотвращением этих самых разрывов, хотя действительно ни один монитор с этой технологией еще пополам не разорвало...
А где именно включать buffer flipping?
vadim 5 kwietnia 2017 o 9:05 
Początkowo opublikowane przez Jackson:
А где именно включать buffer flipping?
Прошу прощения за задержку с ответом, к сожалению я вчера не появился на форуме чтобы своевременно его написать.
Эта настройка находится во вкладке "Настройки OpenGL" утилиты nvidia-settings для операционной системы Linux. Так что данная информация Вам, увы, бесполезна. Я писал чисто теоретический ответ уважаемому WoRG поскольку у него был действительно очень сильный аргумент в пользу его утверждения - текст с сайта разработчика этой самой технологии G-sync. И пришлось очень подробно расписать именно принцип работы этой технологии чтобы пояснить, что это не более чем маркетинг. Формально правильный но достигнутый не благодаря адаптивной синхронизации, а тому, что она применяется только при определенных условиях. Писал я естественно на примере той ОС которой сам пользуюсь, хотя всё написанное остается верным для графического стека любого 3D API.
Кстати, движки некоторых игр управляют буферами самостоятельно и в них даже при поддержке картой и монитором технологий адаптивной синхронизации могут всё равно наблюдаться "разрывы". G-sync в них просто не включится.
А у Вас почти наверняка Windows и поддержка DirectX Вас волнует куда больше, чем OpenGL.
76561198025695818 5 kwietnia 2017 o 11:09 
Включить вертикальную синхронизацию в драйвере и проблем не будет. И да самое главное что режим должен быть полноэкранным в оконном или безрамочном вертикалка не работает, по крайней мере у меня так.
WoRG 5 kwietnia 2017 o 11:35 
Początkowo opublikowane przez 💣 Fallout 😎:
Включить вертикальную синхронизацию в драйвере и проблем не будет. И да самое главное что режим должен быть полноэкранным в оконном или безрамочном вертикалка не работает, по крайней мере у меня так.
У всех так, однако на мониторах гсунк, можно в любом режиме играть. (не реклама:emofdr:)
Ostatnio edytowany przez: WoRG; 5 kwietnia 2017 o 11:35
vadim 5 kwietnia 2017 o 13:32 
Что такое "rсунк"?
Light 6 kwietnia 2017 o 2:47 
Интересная тема. Поделюсь решением наверное похожей проблемы.
Сложно сказать разрыв изображения на экране это был у меня или нет. Вобщем, играя в игру с видом от третьего лица, когда направляю управляемого мной персонаж вперёд, то при движении появлялась горизонтальная полоса посередине экрана. Изображение по разные стороны от полосы не сдвигалось, полоса как бы мерцала от движения вперёд, то есть движения на экране снизу вверх. Долго искал решение проблемы, пробовал разные советы из интернета, ничего не помогало. Вертикальная синхронизация была включена и в игре и в настройках нвидиа. В итоге решил воспользоваться одним удивительным советом из интернета, который в итоге и помог, но пришлось смириться и с минусами такого решения. Решение: включение в Windows 7 темы оформления Aero. Объяснялось это тем, что нвидиа изменила, что то в драйверах для видеокарт и поэтому не включается вертикальная синхронизация, а Aero принудительно её включает.
Странно всё это. В других играх такой проблемы не возникало, да и драйвера я редко меняю и изменений не замечаю. Хотя в той игре с момента установки эта проблема была. Хотелось бы, что бы проблема решилась без включения Aero, т.к. он мне не нужен, только ресурсы ПК ест. Но, к сожалению это не возможно, так писали в том совете.
MrDionysus 6 kwietnia 2017 o 2:57 
Początkowo opublikowane przez Light:
Интересная тема. Поделюсь решением наверное похожей проблемы.
Сложно сказать разрыв изображения на экране это был у меня или нет. Вобщем, играя в игру с видом от третьего лица, когда направляю управляемого мной персонаж вперёд, то при движении появлялась горизонтальная полоса посередине экрана. Изображение по разные стороны от полосы не сдвигалось, полоса как бы мерцала от движения вперёд, то есть движения на экране снизу вверх. Долго искал решение проблемы, пробовал разные советы из интернета, ничего не помогало. Вертикальная синхронизация была включена и в игре и в настройках нвидиа. В итоге решил воспользоваться одним удивительным советом из интернета, который в итоге и помог, но пришлось смириться и с минусами такого решения. Решение: включение в Windows 7 темы оформления Aero. Объяснялось это тем, что нвидиа изменила, что то в драйверах для видеокарт и поэтому не включается вертикальная синхронизация, а Aero принудительно её включает.
Странно всё это. В других играх такой проблемы не возникало, да и драйвера я редко меняю и изменений не замечаю. Хотя в той игре с момента установки эта проблема была. Хотелось бы, что бы проблема решилась без включения Aero, т.к. он мне не нужен, только ресурсы ПК ест. Но, к сожалению это не возможно, так писали в том совете.
Жаль только, у меня 10 Windows(
Light 6 kwietnia 2017 o 2:59 
Początkowo opublikowane przez Jackson:
Жаль только, у меня 10 Windows(
Возможно в 10 версии есть подобная настройка?
< >
Wyświetlanie 16-30 z 36 komentarzy
Na stronę: 1530 50

Data napisania: 4 kwietnia 2017 o 5:42
Posty: 36