Какво означава vsync в игрите. Графични настройки в игрите: какво влияят? Свързване на вертикалната синхронизация

Какво е вертикална синхронизация в игрите? Тази функция отговаря за правилното показване на игри на стандартни LCD монитори с честота 60 Hz. Когато е активирана, кадровата честота е ограничена до 60Hz и на екрана не се показват прекъсвания. Деактивирането му ще увеличи честотата на кадрите, но в същото време ще има ефект на разкъсване на екрана.

V-sync е доста противоречива тема в игрите.От една страна за визуален комфорт играизглежда много необходимо, ако приемем, че имате стандартен LCD монитор.

Благодарение на него не се появяват грешки на екрана по време на игра, картината е стабилна и няма пропуски. Недостатъкът е, че честотата на кадрите е ограничена до 60Hz, така че по-взискателните играчи може да изпитат забавяне на въвеждането, тоест леко забавяне при движение в играта с мишката (може да се приравни на изкуствено изглаждане на движението на мишката).

Деактивирането на вертикалната синхронизация също има своите плюсове и минуси. На първо място, предоставя се неограничена кадрова честота на FPS и по този начин напълно премахва споменатото забавяне на входа. Удобен е за игри. Тип Counter-Strikeкъдето отзивчивостта и точността са важни. Движението и прицелването е много ясно, динамично, всяко движение на мишката се извършва с висока точност. В някои случаи можем да получим повече Скорост на FPS, тъй като V-Sync, в зависимост от видеокартата, може леко да намали производителността на хардуера (разликата е около 3-5 FPS). За съжаление, недостатъкът е, че без вертикална синхронизация получаваме ефект на разкъсване на екрана. При завъртане или промяна на движението в играта забелязваме, че изображението е разкъсано на две или три хоризонтални части.

Активиране или деактивиране на V-Sync?

Необходима ли е вертикална синхронизация? Всичко зависи от нашите индивидуални предпочитания и това, което искаме да получим. В FPS игри с много играчи се препоръчва да деактивирате вертикалната синхронизация, за да подобрите точността на прицелването. Ефектът на разкъсване на екрана по правило не е толкова забележим и когато свикнем с него, дори няма да го забележим.

На свой ред в сюжетни игриМожете безопасно да активирате V-Sync. Тук високата точност не е толкова важна, първата цигулка е средата, визуалният комфорт, така че трябва да заложите на доброто качество.

Вертикалната синхронизация обикновено може да се включи или изключи в графичните настройки на играта. Но ако не намерим такава функция там, тогава можете ръчно да я изключите ръчно в настройките на видеокартата - както за всички, така и само за избрани приложения.

Вертикална синхронизация на графични карти NVIDIA

При графичните карти GeForce функцията се намира в контролния панел на Nvidia. Кликнете Кликнете с десния бутонмишката върху работния плот на Windows 10 и след това изберете Контролен панел на Nvidia.

В страничната лента изберете раздела Контроли за 3D настройки под 3D настройки. Наличните настройки ще се покажат вдясно.

Настройките са разделени на два раздела - глобални и програмни. В първия раздел можете да зададете опции за всички игри и например дали да активирате или деактивирате вертикалната синхронизация във всяка. Докато във втория раздел можете да зададете същите параметри, но индивидуално за всяка игра поотделно.

Изберете глобалния или програмния раздел и след това потърсете опцията „Вертикална синхронизация“ в списъка. До него има падащо поле - избираме принудително изключване или включване на вертикалната синхронизация.

V-Sync на AMD графики

В случая с графичните карти на AMD изглежда точно както в Nvidia. Щракнете с десния бутон върху работния плот и след това отидете на Panel Catalyst Control Center.

След това отворете раздела „Игри“ вляво и изберете „Настройки за 3D приложения“. Вдясно ще се покаже списък с налични опции, които могат да бъдат активирани принудително от позицията на графичните настройки на AMD Radeon. Когато сме в раздела „Системни настройки“, избираме за всички.

Ако трябва да зададете параметрите поотделно за всяка игра поотделно, тогава трябва да кликнете върху бутона "Добавяне" и да посочите EXE файла. Той ще бъде добавен към списъка като нов маркер и когато превключите към него, можете да задавате параметри само за тази игра.

Когато сте избрали раздела с добавеното приложение или системни параметри (общи), намерете в списъка опцията „Изчакайте вертикална актуализация“. Ще се появи поле за избор, където можем принудително да активираме или деактивираме тази опция.

V-Sync на интегрирана Intel HD Graphics

Ако използвате интегриран Intel HD Graphics чип, е наличен и контролен панел. Тя трябва да бъде достъпна чрез щракване с десния бутон върху работния плот или чрез клавишната комбинация Ctrl+Alt+F12.

В панела на Intel отидете в раздела Режим на настройки - Контролен панел - 3D графика и след това в потребителските настройки.

Тук намираме поле с вертикална синхронизация Vertical Sync. Можете да го активирате принудително, като зададете стойността на „Enabled“ или я зададете на „Application Settings“. За съжаление, няма функция за принудително деактивиране в опциите на Intel HD картата - можете да активирате само V-Sync. Тъй като не е възможно да деактивирате вертикалната синхронизация във видеокартата, това може да стане само в настройките на самата игра.

Почти във всички модерни игрив настройките на графиката можете да видите колоната "вертикална синхронизация". И все повече и повече играчи имат въпроси Полезна ли е тази синхронизация?, неговото въздействие и защо изобщо съществува, как да го използвате на различни платформи. Нека разберем в тази статия.

Относно вертикалната синхронизация

Преди да пристъпим директно към обяснение на природата на вертикалната синхронизация, е необходимо да се задълбочим малко в историята на формирането на вертикалната синхронизация. Ще се опитам да бъда възможно най-ясен. Първите компютърни монитори представляваха фиксирано изображение, обслужвано от един кадър сканиращ сигнал.

По времето, когато се появи ново поколение дисплеи, рязко възникна въпросът за промяна на разделителната способност, което изискваше няколко режима на работа, тези дисплеи представиха картина, използвайки полярността на сигналите синхронно с вертикалата.

Необходима е VGA резолюция още фина настройкапомете и му бяха дадени два сигнала хоризонтално и вертикално. В днешните дисплеи вграденият контролер отговаря за настройката на сканирането.

Но ако контролерът, според драйвера, задава необходимия брой кадри, защо ви е необходима вертикална синхронизация за зададената резолюция? Не е толкова просто. Доста често има ситуации, когато честотата на кадрите при генериране на видеокарта е много висока, но мониторите, поради техническите си ограничения, не може да покаже този брой кадри правилнокогато честотата на опресняване на монитора е значително по-ниска от честотата на опресняване на графичната карта. Това води до резки движения на изображението, артефакти и ивици.

Нямайки време да покажат кадри от файла с паметта с активирано "тройно буфериране", те бързо се заменят, наслагвайки следващите кадри. И тук технологията на тройното буфериране е почти неефективна.

Технологията за вертикална синхронизация предназначени да коригират тези недостатъци..

Тя се обръща към монитора с включена анкета стандартни функцииактуализиране на честотата и честотата на кадрите, предотвратявайки преместването на кадри от вторичната памет в основната, точно до момента на актуализиране на изображението.

Свързване на вертикалната синхронизация

По-голямата част от игрите имат тази функция директно в своите графични настройки. Но това се случва, когато няма такава колона или се наблюдават определени дефекти при работа с графики на приложения, които не включват настройки за такива параметри.

В настройките на всяка видеокарта можете да активирате технологията за вертикална синхронизация за всички приложения или избирателно.

Как да активирам за NVidia?

Както повечето манипулации с NVidia карти, това се извършва през конзолата за управление на NVidia. Там, в графиката за управление на 3D параметри, ще има параметър за синхронизиращ импулс.

Трябва да се премести във включено положение. Но в зависимост от видеокартата редът ще бъде различен.

Така че в по-старите видеокарти параметърът за вертикална синхронизация е в главата глобални параметрив същата контролна графика на 3D настройките.

Видео карти от ATI

За да конфигурирате, използвайте контролния център за вашата графична карта. А именно Catalyst Control Center работи с .NET Framework 1.1. Ако го нямате, тогава контролният център няма да стартира. Но не се безпокойте. В такива случаи има алтернатива на центъра, просто работа с класическия контролен панел.

За достъп до настройките отидете на елемента 3D, намиращ се в менюто вляво. Ще има раздел Изчакване за вертикално опресняване. Първоначално в приложението се използва стандартната технология за вертикална синхронизация.

Преместването на бутона наляво напълно ще деактивира тази функция, а преместването му надясно ще я включи принудително. Опцията по подразбиране е тук най-разумното, тъй като дава възможност за конфигуриране на синхронизиране директно през настройките на играта.

Обобщаване

Вертикалната синхронизация е функция, която помага да се отървете от резки движения в картината, в някои случаи ви позволява да се отървете от артефакти и ивици в изображението. И това се постига чрез двойно буфериране на получената честота на кадрите, когато честотата на кадрите на монитора и видеокартата не съвпадат.

V-sync присъства в повечето игри в наши дни. Работи почти по същия начин като тройното буфериране, но струва много по-малко ресурси, поради което тройното буфериране в настройките на играта може да се види по-рядко.

Като избира да активира или деактивира вертикалната синхронизация, потребителят прави избор между качество и производителност. Като го включите, получава по-плавна картина, но по-малко кадри в секунда.

Изключвайки го, той получава Повече ▼рамки, но не е имунизиран от остротата и небрежността на картината. По-специално това се отнася интензивни и ресурсоемки сцени, където липсата на вертикална синхронизация или тройно буфериране е особено забележима.

Тази мистериозна графика в параметрите на много игри не беше толкова проста, колкото изглеждаше. И сега изборът да го използвате или не, остава само за вас и вашите цели в игрите.

Сигурен съм, че много фенове компютърни игриизправен пред препоръката да деактивирате така наречената "вертикална синхронизация" или VSync в настройките на видеокартата в игрите.

В много тестове за производителност на графичен контролер се подчертава, че тестването е извършено с деактивиран VSync.
Какво е това и защо е необходимо, ако много "напреднали експерти" съветват да деактивирате тази функция?
За да разберете значението на вертикалната синхронизация, трябва да направите кратко отклонение в историята.

Първите компютърни монитори работеха с фиксирани разделителни способности и фиксирани честоти на опресняване.
С появата на мониторите EGA стана необходимо да се избират различни разделителни способности, което беше осигурено от два режима на работа, които бяха зададени от полярността на сигналите за синхронизиране на изображението по вертикалата.

Монитори, които поддържат VGA резолюция и по-висока изискват фина настройка на честотите на сканиране.
За това вече са използвани два сигнала, които са отговорни за синхронизирането на изображението както хоризонтално, така и вертикално.
В съвременните монитори специален контролен чип отговаря за регулирането на сканирането в съответствие с зададената разделителна способност.

Защо елементът „вертикална синхронизация“ се запазва в настройките на видеокартите, ако мониторът може автоматично да се настройва в съответствие с режима, зададен в драйвера?
Факт е, че въпреки факта, че видеокартите са в състояние да генерират много голям брой кадри в секунда, мониторите не могат да го показват с високо качество, в резултат на което се появяват различни артефакти: ленти и „разкъсано“ изображение.

За да се избегне това, видеокартите предвиждат режим на предварително запитване на монитора за вертикалното му сканиране, с което се синхронизира броят на кадрите в секунда - познатите fps.
С други думи, при вертикална честота от 85 Hz, броят на кадрите в секунда във всяка игра няма да надвишава осемдесет и пет.

Вертикалната честота на опресняване на монитора се отнася до броя пъти, когато екран с изображение се опреснява за секунда.
В случай на дисплей с електронно-лъчева тръба, независимо колко кадъра в секунда графичният ускорител позволява да „изстиска“ от играта, честотата на опресняване физически не може да бъде по-висока от зададената.

При LCD мониторите няма физическо опресняване на целия екран: тук отделните пиксели могат или не могат да светят.
Въпреки това, самата технология за предаване на данни през видео интерфейса предвижда, че кадрите се предават на монитора от видеокартата с определена скорост.
Следователно, с известна степен на условност, концепцията за "почистване" е приложима за LCD дисплея.

Откъде идват артефактите на изображението?
Във всяка игра броят на генерираните кадри в секунда постоянно се променя в зависимост от сложността на картината.
Тъй като честотата на опресняване на монитора е постоянна, десинхронизацията между кадрите в секунда, предавани от видеокартата, и честотата на опресняване на монитора води до изкривяване на изображението, което изглежда разделено на няколко произволни ленти: едната част от тях има време да се актуализира, докато другата не.

Например мониторът работи с честота на опресняване 75 Hz, а видеокартата в игра генерира сто кадъра в секунда.
С други думи, графичният ускорител е с около една трета по-бърз от системата за опресняване на монитора.
По време на обновяването на един екран, картата генерира 1 кадър и една трета от следващия - в резултат на това две трети от текущия кадър се рисуват на дисплея, а неговата трета се заменя с третия кадър на следващия.

При следващия ъпдейт картата успява да генерира две трети от кадъра и две трети от следващия и т.н.
На монитора във всеки два от три цикъла на сканиране наблюдаваме една трета от изображението от друг кадър - картината губи своята гладкост и „потрепва“.
Този дефект е особено забележим в динамични сцени или, например, когато вашият герой в играта се оглежда.

Въпреки това би било фундаментално погрешно да се предположи, че ако на видеокартата е забранено да генерира повече от 75 кадъра в секунда, тогава всичко ще бъде наред с показването на изображението на дисплея с вертикална честота от 75 Hz.
Факт е, че в случай на обичайното, така нареченото "двойно буфериране", кадрите на монитора идват от основния буфер на кадрите (преден буфер), а самото изобразяване се извършва във вторичния буфер (заден буфер) .

Тъй като вторичният буфер се запълва, кадрите влизат в основния, но тъй като операцията по копиране между буферите отнема определено време, ако сканирането на монитора се актуализира в този момент, потрепването на изображението все още няма да бъде избегнато.

Вертикалната синхронизация просто решава тези проблеми: мониторът се запитва за честотата на опресняване и копирането на кадри от вторичния буфер в основния е забранено, докато изображението не бъде актуализирано.
Тази технология работи чудесно, когато честотата на кадрите в секунда надвишава вертикалната честота.
Но какво ще стане, ако честотата на кадрите падне под честотата на опресняване?
Например, в някои сцени нашите fps падат от 100 на 50.

В този случай се случва следното.
Изображението на монитора се актуализира, първият кадър се копира в основния буфер, а две трети от втория се "рендират" във вторичния буфер, последвано от ново обновяване на изображението на дисплея.
По това време видеокартата завършва обработката на втория кадър, който все още не може да изпрати към основния буфер, и следващата актуализация на изображението се извършва със същия кадър, който все още се съхранява в основния буфер.

След това всичко това се повтаря и в резултат на това имаме ситуация, при която честотата на кадрите в секунда на екрана е два пъти по-ниска от честотата на сканиране и една трета по-ниска от потенциалната скорост на изобразяване: видеокартата първо „не поддържа ” с монитора и след това, напротив, трябва да изчакате, докато дисплеят вземе отново кадъра, съхранен в първичния буфер, и докато има място във вторичния буфер за изчисляване на нов кадър.

Оказва се, че в случай на вертикална синхронизация и двойно буфериране, можем да получим висококачествено изображение само ако броят на кадрите в секунда е равен на една от дискретна последователност от стойности, изчислена като съотношение на честотата на сканиране до някакво положително цяло число.
Например при честота на опресняване 60 Hz, броят на кадрите в секунда трябва да бъде 60 или 30 или 15 или 12 или 10 и т.н.

Ако потенциалните възможности на картата ви позволяват да генерирате по-малко от 60 и повече от 30 кадъра в секунда, тогава реалната скорост на изобразяване ще падне до 30 fps.

Превеждам... Превеждам китайски (опростен) китайски (традиционен) английски френски немски италиански португалски руски испански турски

За съжаление не можем да преведем тази информация в момента - моля, опитайте отново по-късно.

Научете как да използвате прост алгоритъм, за да синхронизирате изображението с честотата на опресняване на дисплея и да подобрите качеството на възпроизвеждане на видео.

Въведение

Нашата визия за „дигитален дом“ постепенно се превръща в реалност. През последните години все повече устройства за „дигиталния дом“ се предлагат в търговската мрежа. Гамата от предлагана електроника е много голяма - от мултимедийни декодери, които поддържат музикално и видео излъчване, до пълномащабни развлекателни системи в конвенционален компютърен корпус.

Домашните медийни центрове се превръщат в стандартен артикул в ценовите листи на компютърните магазини, позволявайки ви да гледате и записвате телевизионни предавания, да запазвате и възпроизвеждате цифрови снимки и музика и т.н. Освен това някои доставчици предлагат специални комплекти, с които потребителят може да превърне компютъра си в домашен медиен център.

За съжаление, такива медийни центрове не винаги поддържат висококачествено възпроизвеждане на видео. Недостатъчното качество на видеото обикновено се причинява от фактори като неправилно буфериране и изобразяване на поточно съдържание, липса на алгоритми за деинтерлейсинг при обработка на презредово видео и неправилна синхронизация на видео-аудио потоци. Повечето от тези проблеми са добре проучени и имат решения, които се вземат предвид в достатъчна степен от производителите. Има обаче друг, по-малко известен и по-малко очевиден проблем, който може да доведе до незначително, но все пак забележимо изкривяване при гледане на видеоклипове. Нашата статия предоставя подробно описание на този проблем и разглежда един от начините за решаването му.

С нарастващите продажби на домашни медийни центрове все повече потребители гледат телевизия на компютри. Тъй като този сегмент, който в момента е търсен от любителите ентусиасти, се разширява, търсенето на висококачествено видео също ще се увеличи.

Има редица техники, които могат да подобрят качеството на възпроизвеждане на видео на компютър и много производители на видео софтуер са ги използвали успешно. В същото време понякога фактът, че софтуерът за възпроизвеждане на видео трябва да вземе предвид и да гарантира, че видеото е синхронизирано с честотата на опресняване на дисплея. Факт е, че телевизорите първоначално са предвидени за синхронизация с видеосигнала, идващ от студиото за излъчване. За разлика от телевизорите, компютърните монитори опресняват екрана с фиксирана честота, която се задава от графичния адаптер и няма нищо общо с видео сигнала. Тази значителна разлика може да причини много проблеми, ако искате да сте сигурни, че видеото е правилно синхронизирано с дисплея на компютъра. По-долу ще се опитаме да Подробно описаниетози проблем и предложете решение. Преди това обаче бихме искали да запознаем читателя с някои основни понятия, които ще бъдат разгледани в статията.

Цикъл на опресняване на дисплея

Честотата на опресняване на екрана на компютъра (честота на опресняване на екрана) се синхронизира с честотата на графичния адаптер (видеокарта). Помислете за най-често срещания пример - когато видеокартата и мониторът поддържат честота от 60Hz. Тази комбинация е възможна поради факта, че мониторът е синхронизиран с 60Hz сигнал, идващ от видеокартата. Всъщност мониторът поддържа синхронизация дори при леко отклонение в изходната честота на графичния адаптер (например 60,06 Hz вместо стандартните 60 Hz).

По време на цикъла на опресняване изображението на екрана се преначертава от буфера на дисплея (адресируема памет на графичния адаптер). Всяка хоризонтална линия на дисплея се актуализира последователно в съответствие с новите данни, съдържащи се в буфера на видео паметта. актуализиран в този моментвремевата линия се нарича сканираща линия. В случай на 60 Hz графичен адаптер, процесът на опресняване на екрана се извършва 60 пъти в секунда, така че изображението на компютърния монитор също се актуализира 60 пъти в секунда.

Фигура 1 - Актуализация на дисплея

Артефакти за разкъсване на изображението

Бъдете наясно с потенциалния проблем с нееднородното опресняване на буфера на графиката. Ако съдържанието на буфера на видео паметта се е променило в момент, когато изображението на монитора все още не е напълно изчертано (цикълът на опресняване не е завършен), тогава ще се покаже само част от новото изображение след линията за сканиране на екрана (вижте фиг. Ориз. 2). Този артефакт на изображението, който показва старото изображение в горната част на екрана и новото изображение в долната част, се нарича разкъсване. Всъщност този термин е много описателен, тъй като полученото изображение изглежда като „разкъсано“ наполовина.

Фигура 2 - Артефакти на "празнината" на изображението

Отборно обръщане

Един от начините за предотвратяване на "разкъсвания" е да се уверите, че се извършва актуализиране на съдържанието на видео паметта след товакак завършва цикълът на опресняване на дисплея и преди товакогато започне следващият цикъл. С други думи, актуализацията трябва да се извърши по време на обратното почистване. Този метод обаче изисква съответните промени в софтуера, който трябва да изчисли реда на промяна на изображението с достатъчна точност.

Поради тази причина е предложен алгоритъм за синхронизиране на превключване на буфер (Flip). Командата Flip е много проста по своята същност - тя позволява на програмата да актуализира изображението по всяко време по време на цикъла на опресняване на екрана, но нейният резултат всъщност не се прехвърля във видео паметта, докато не приключи текущият цикъл. По този начин актуализирането на изображението на монитора се извършва в интервала след изпълнението на командата Flip. С метода за синхронизиране на буфера "разкъсванията" в изображението се елиминират, тъй като командата Flip гарантира, че напълно ново изображение е готово за всеки цикъл на опресняване (вижте по-долу). Ориз. 3). В следващия раздел обаче ще демонстрираме, че използването само на командата Flip не гарантира, че всички проблеми ще бъдат решени.

Фигура 3 - Последователност от команди за обръщане

Потенциални проблеми

Използването на алгоритъм за синхронизация има големи предимства и помага за елиминирането на артефактите на разкъсване, но остава един значителен проблем.

Когато използвате командата Обръщане, условията за визуализация на софтуера за видеото се променят. За да изпълни Flip, софтуерът трябва да коригира интервала за актуализиране на буфера на кадрите (честота на кадрите) според определена скорост на кадрите. Единствената тактова честота, при която кадрите могат да се синхронизират, е честотата на опресняване на дисплея (или многократно). С други думи, нов кадър може да се покаже само в началото на цикъла на опресняване - всъщност интервалите на кадрите са обвързани със скоростта на опресняване на дисплея.

Фигура 4 - Несъответствие на скоростта на кадрите и честотата на дисплея

Този факт предполага, че ако честотата на опресняване на дисплея не е същата като скоростта на кадрите на възпроизвежданото съдържание или не е кратно на нея, съдържанието на дисплея не може да бъде напълно възпроизведено. На Ориз. четирипоказан е специален случай на този проблем. В този сценарий честотата на кадрите на съдържанието е по-бавна от честотата на опресняване на дисплея. Поради фазовото изместване между тези две честоти, интервалите на командата Flip за два кадъра в крайна сметка ще се разтегнат през пълен цикъл на опресняване (обърнете внимание на времето на кадри 3 и 4). В резултат на това рамка 3 ще бъде показана почти два пъти по-дълго от необходимото. Затова трябва да се стремите да съответствате на честотата на кадрите и честотата на опресняване на дисплея, въпреки че това не винаги е възможно.

Разглежданата ситуация се влошава само ако разликата между кадровата честота и честотата на опресняване на дисплея е малка. Когато времената на кадрите са близки до интервалите на цикъла на актуализиране, дори малки неточности в изчисленията на софтуерния таймер могат да доведат до спъване на няколко последователни команди Flip спрямо началото на актуализирането. Това означава, че някои команди за обръщане ще се изпълняват твърде рано, а други твърде късно, което води до „дублирани“ и „пропуснати“ рамки. Този случай е илюстриран в Ориз. 5– таймерът не работи правилно (на неравномерни интервали), в резултат на което кадри 2 и 4 не се показват, а кадри 3 и 5 се показват два пъти.

Фигура 5 - Резултатът от използването на повреди на таймера за обръщане

Това явление може да възникне дори когато кадровата честота на съдържанието и честотата на опресняване на дисплея са еднакви. Очевидно използването само на таймер и командата Flip не е достатъчно, за да се осигури висококачествено възпроизвеждане на видео. Както е обяснено в следващия раздел, за да могат командите Flip да се изпълняват правилно, софтуерът трябва да поддържа интелигентна синхронизация с циклите на опресняване на дисплея.

Команди за обръщане на времето

Както бе споменато по-горе, използването на командата Flip ви позволява да вземете предвид циклите на опресняване на екрана, когато изобразявате видео кадри. Всеки новоизлъчен кадър се показва само за един пълен цикъл на опресняване на дисплея. По този начин, когато използвате командата Flip, софтуерът трябва точно да изчисли не само кога всеки кадър трябва да бъде показан, но също така да определи конкретния цикъл на опресняване, за да синхронизира оптимално изхода на кадрите.

Най-добре е да извикате командата Flip в самото начало на цикъла на опресняване, точно преди началото на съответния интервал за опресняване на рамката (вижте примера на Ориз. 3). Това дава най-голяма вероятност за действително изпълнение на командата преди началото на съответния цикъл на актуализиране и гарантира, че рамката се извежда в точното време. Обърнете внимание, че в случаите, когато кадровата честота на видео и честотата на опресняване на дисплея не съвпадат, оптимизацията на цикъла на опресняване на рамката на Flip не е достатъчна, за да осигури приемливо качество на видеото. Има някои начини за рамкиране или модифициране на рамки за съдържание, които решават тези проблеми, но те са извън обхвата на тази публикация.

някои Операционна системапредоставят интерфейси за програмиране, чрез които приложенията могат да поддържат синхрон с цикъла на опресняване на дисплея. По-специално, средата на Microsoft DirectX 9.0 включва няколко процедури, които могат да бъдат много полезни в нашия случай. След това ще разгледаме стандартните процедури на DirectX като примерни методи за решаване на проблема, който се изследва. Читателите могат да използват тези примери, за да проучат предложените методи и да намерят подобни решения на други операционни системи.

WaitForVerticalBlank()е стандартна процедура в библиотеката DirectDraw (в рамките на интерфейса IDirectDraw), която блокира достъпа на нишката до интерфейса до началото на следващия цикъл на актуализиране. Тази процедура може да се използва за синхронизация, но трябва да се извършва еднократно или през значителен интервал, тъй като отнема време за достъп. Тази процедура обаче е полезна, когато извършвате първоначалната синхронизация с цикъл на актуализиране.

GetScanLine()е стандартна процедура, която може да се използва за получаване на информация за това кой сканиращ ред се актуализира в момента на дисплея. Ако общият брой редове и текущата сканирана линия са известни, не е трудно да се определи състоянието на цикъла на опресняване на дисплея. Например, ако общият брой редове на дисплея е 1024 и процедурата GetScanLine()връща 100, текущият цикъл на опресняване в момента е от 100 до 1024, което е около 10 процента завършен. Приложение GetScanLine()позволява на приложението да следи състоянието на цикъла на актуализиране и въз основа на него да определи към кой цикъл да обвърже следващия изобразен кадър и да зададе таймер за желаното време за превключване на буфера. Следва примерен алгоритъм:

Фигура 6

Времето за промяна на рамката се избира не само въз основа на изчисляването на новите рамки на изображението, но и като се вземе предвид честотата на опресняване на екрана. Тъй като кадрите се показват на екрана само когато дисплеят е обновен, е необходимо да се уверите, че всеки кадър "попада" на правилния цикъл на опресняване. По този начин в идеалния случай рамкирането на изображението трябва точно да съответства на честотата на опресняване на екрана. В този случай всеки кадър ще бъде изчертан на дисплея в точното време.

Алтернативно решение за записано съдържание

Проблемите, които обсъждаме, се отнасят за всички сценарии за възпроизвеждане на видео, както в случай на предавания на живо, така и при възпроизвеждане на записано видео. В последния случай обаче можете да прибегнете до алтернативно решение. Ако разликата между кадровата честота на съдържанието и честотата на опресняване на дисплея е малка, можете да регулирате кадровата честота на видеото (и да регулирате аудио потока по същия начин), за да съответства на честотата на опресняване на екрана, без да компрометирате качеството на съдържанието. Като пример, нека вземем телевизионен сигнал със стандартна разделителна способност при 59,94 кадъра в секунда (с деинтерлейсинг на Боб) на монитор при 60 Hz. Чрез ускоряване на възпроизвеждането на видео и аудио до 60 кадъра в секунда, можете да гарантирате, че честотата на кадрите съответства на интервалите на опресняване на екрана и не причинява артефакти на изображението.

Резюме

Тази публикация е посветена на методите за синхронизиране на изображения, по-специално на предотвратяването на артефакти от разкъсване на изображението с помощта на командата Flip. Статията също така разглежда случаите, при които командата Flip причинява проблеми, причинени от тясна синхронизация с циклите на опресняване на дисплея. Правилното синхронизиране на кадрите и използването на команди Flip може да доведе до времена и интервали на кадри, които се различават от очакваните от софтуерното приложение. Документът заключава, че правилният начин за използване на командите Flip е да се комбинира синхронизацията на Flip с честотата на опресняване на екрана и да се оптимизира цикълът на изчисление на изображението с оглед на последващия му изход. По този начин интервалите на обръщане могат да се регулират софтуерно. Най-добро качествовидеото се постига, когато кадровата честота на съдържанието съответства на честотата на опресняване на дисплея. На практика обаче това не винаги е постижимо. Алгоритмите, описани в тази статия, ще помогнат за намаляване на артефактите на изображението до минимум.

Съвременните игри използват все повече графични ефекти и технологии, които подобряват картината. В същото време разработчиците обикновено не си правят труда да обяснят какво точно правят. Когато не е наличен най-производителният компютър, някои от възможностите трябва да бъдат пожертвани. Нека се опитаме да разгледаме какво означават най-често срещаните графични опции, за да разберем по-добре как да освободим компютърни ресурси с минимални последствия за графиката.

Анизотропно филтриране

Когато някоя текстура се показва на монитора не в оригиналния си размер, е необходимо да вмъкнете допълнителни пиксели в нея или, обратно, да премахнете допълнителните. Това се прави с помощта на техника, наречена филтриране.

Билинейното филтриране е най-простият алгоритъм и изисква по-малко изчислителна мощност, но дава и най-лошия резултат. Trilinear добавя яснота, но все пак генерира артефакти. Анизотропното филтриране се счита за най-модерния метод, който елиминира забележими изкривявания върху обекти, които са силно наклонени спрямо камерата. За разлика от предишните два метода, той успешно се бори с ефекта на aliasing (когато някои части от текстурата са замъглени повече от други и границата между тях става ясно видима). При използване на билинеарно или трилинейно филтриране, с увеличаване на разстоянието, текстурата става все по-размазана, докато анизотропното филтриране няма този недостатък.

Като се има предвид количеството данни, които се обработват (и може да има много 32-битови текстури с висока разделителна способност в една сцена), анизотропното филтриране е особено взискателно към честотната лента на паметта. Можете да намалите трафика предимно поради компресията на текстурата, която сега се използва навсякъде. Преди това, когато се практикуваше по-рядко и честотната лента на видеопаметта беше много по-ниска, анизотропното филтриране значително намали броя на кадрите. На съвременните видеокарти почти няма ефект върху fps.

Анизотропното филтриране има само една настройка - коефициент на филтър (2x, 4x, 8x, 16x). Колкото по-високо е, толкова по-ясни и естествени изглеждат текстурите. Обикновено при висока стойност малките артефакти се виждат само върху най-външните пиксели на наклонени текстури. Стойности от 4x и 8x обикновено са достатъчни, за да се отървете от лъвския дял от визуалното изкривяване. Интересното е, че при преминаване от 8x на 16x, постижението на производителността ще бъде доста малко, дори на теория, тъй като само малък брой нефилтрирани преди това пиксели ще се нуждаят от допълнителна обработка.

Шейдъри

Шейдърите са малки програми, които могат да извършват определени манипулации върху 3D сцена, като промяна на осветлението, прилагане на текстури, добавяне на последваща обработка и други ефекти.

Шейдърите са разделени на три типа: върхови (Vertex Shader) работят с координати, геометрични (Geometry Shader) могат да обработват не само отделни върхове, но и цели геометрични фигури, състоящ се от максимум 6 върха, пиксел (Pixel Shader) работи с отделни пиксели и техните параметри.

Шейдърите се използват главно за създаване на нови ефекти. Без тях наборът от операции, които разработчиците биха могли да използват в игрите, е много ограничен. С други думи, добавянето на шейдъри направи възможно получаването на нови ефекти, които не бяха включени във видеокартата по подразбиране.

Шейдърите работят много продуктивно паралелно, поради което съвременните графични адаптери имат толкова много поточни процесори, които също се наричат ​​шейдъри. Например, в GeForce GTX 580 има цели 512 от тях.

Картографиране на паралакса

Картографирането на паралакс е модифицирана версия на добре познатата техника за изравняване, използвана за щамповане на текстури. Паралаксното картографиране не създава 3D обекти в обичайния смисъл на думата. Например, под или стена в сцена на игра ще изглеждат груби, докато всъщност остават напълно плоски. Релефният ефект тук се постига само чрез манипулации с текстури.

Оригиналният обект не трябва да е плосък. Методът работи за различни предмети за игра, но използването му е желателно само в случаите, когато височината на повърхността се променя плавно. Острите капки се обработват неправилно и върху обекта се появяват артефакти.

Паралаксното картографиране значително спестява изчислителни ресурси на компютъра, тъй като при използване на аналогични обекти с толкова подробна 3D структура, производителността на видео адаптерите няма да е достатъчна за изобразяване на сцени в реално време.

Ефектът се прилага най-често върху каменни настилки, стени, тухли и плочки.

Anti-Aliasing

Преди появата на DirectX 8 анти-алиасингът в игрите се извършваше с помощта на SuperSampling Anti-Aliasing (SSAA), известен също като Full-Scene Anti-Aliasing (FSAA). Използването му доведе до значително намаляване на производителността, така че с пускането на DX8 той беше незабавно изоставен и заменен с Multisample Anti-Aliasing (MSAA). Въпреки факта, че този метод даде по-лоши резултати, той беше много по-продуктивен от предшественика си. Оттогава се появиха по-усъвършенствани алгоритми, като CSAA.

Като се има предвид, че през последните няколко години производителността на видеокартите се е увеличила значително, AMD и NVIDIA върнаха поддръжката на технологията SSAA на своите ускорители. Въпреки това, няма да е възможно да го използвате дори сега в съвременните игри, тъй като броят на кадрите / s ще бъде много нисък. SSAA ще бъде ефективен само в проекти от предишни години или в текущи, но със скромни настройки за други графични параметри. AMD е внедрила поддръжка на SSAA само за DX9 игри, но в NVIDIA SSAA функционира и в режими DX10 и DX11.

Принципът на изглаждане е много прост. Преди рамката да се покаже на екрана, определена информация се изчислява не в естествена разделителна способност, а увеличена и кратна на две. След това резултатът се намалява до необходимия размер и тогава "стълбата" по краищата на обекта става по-малко забележима. Колкото по-високи са оригиналното изображение и коефициентът на изглаждане (2x, 4x, 8x, 16x, 32x), толкова по-малко стъпки ще има на моделите. MSAA, за разлика от FSAA, изглажда само краищата на обектите, което значително спестява ресурси на графичната карта, но тази техника може да остави артефакти в полигоните.

Преди Anti-Aliasing винаги е намалявал значително fps в игрите, но сега влияе леко на броя на кадрите, а понякога изобщо не влияе.

теселация

Използвайки теселация в компютърен модел, броят на полигоните се увеличава с произволен брой пъти. За да направите това, всеки полигон е разделен на няколко нови, които са разположени приблизително по същия начин като оригиналната повърхност. Този метод улеснява увеличаването на детайлите на прости 3D обекти. В този случай обаче натоварването на компютъра също ще се увеличи, а в някои случаи не могат да бъдат изключени дори малки артефакти.

На пръв поглед теселацията може да бъде объркана с картографирането на паралакса. Въпреки че това са напълно различни ефекти, тъй като теселацията всъщност променя геометричната форма на обекта, а не просто симулира релеф. Освен това може да се използва за почти всеки обект, докато използването на паралакс картографиране е много ограничено.

Технологията Tessellation е позната в киното от 80-те години, но едва наскоро се поддържа в игрите, по-точно след като графичните ускорители най-накрая достигнаха необходимото ниво на производителност, при което може да се изпълнява в реално време.

За да може играта да използва теселация, тя изисква графична карта, която поддържа DirectX 11.

V-синхронизация

V-Sync е синхронизирането на кадрите на играта с вертикалната честота на опресняване на монитора. Същността му се състои в това, че напълно изчислена рамка на играта се показва на екрана в момента, в който картината се актуализира върху него. Важно е следващият кадър (ако вече е готов) също да се появи не по-късно и не по-рано от края на изхода на предишния и началото на следващия.

Ако честотата на опресняване на монитора е 60 Hz и видеокартата успява да изобрази 3D сцена с поне същия брой кадри, тогава всяко опресняване на монитора ще показва нов кадър. С други думи, с интервал от 16,66 ms, потребителят ще види пълна актуализация на сцената на играта на екрана.

Трябва да се разбере, че когато вертикалната синхронизация е активирана, fps в играта не може да надвишава вертикалната честота на опресняване на монитора. Ако броят на кадрите е по-малък от тази стойност (в нашия случай по-малко от 60 Hz), тогава, за да се избегнат загуби на производителност, е необходимо да се активира тройно буфериране, при което кадрите се изчисляват предварително и се съхраняват в три отделни буфера , което позволява по-честото им изпращане на екрана.

Основната задача на вертикалната синхронизация е да елиминира ефекта на изместена рамка, която възниква, когато долната част на дисплея е запълнена с една рамка, а горната част вече е запълнена с друга, изместена спрямо предишната.

последваща обработка

Това е общото наименование на всички ефекти, които се прилагат към вече завършен кадър на напълно изобразена 3D сцена (с други думи, към двуизмерно изображение), за да се подобри качеството на крайната картина. Постобработката използва пикселни шейдъри и се използва в случаите, когато допълнителните ефекти изискват пълна информация за цялата сцена. Изолирано към отделни 3D обекти, такива техники не могат да бъдат приложени без появата на артефакти в рамката.

Висок динамичен диапазон (HDR)

Ефект, често използван в игрови сцени с контрастно осветление. Ако една област на екрана е много ярка, а друга е много тъмна, голяма част от детайлите във всяка област се губят и изглежда монотонно. HDR добавя повече градации към рамката и ви позволява да детайлизирате сцената. За да го използвате, обикновено трябва да работите с по-широка гама от нюанси, отколкото може да осигури стандартната 24-битова точност. Предварителните изчисления се извършват с повишена точност (64 или 96 бита) и само на последния етап изображението се коригира до 24 бита.

HDR често се използва за прилагане на ефекта на адаптиране на зрението, когато героят в игрите напусне тъмен тунел върху добре осветена повърхност.

Блум

Bloom често се използва заедно с HDR и също така има доста близък роднина - Glow, поради което тези три техники често се бъркат.

Bloom симулира ефекта, който може да се види при заснемане на много ярки сцени с конвенционални камери. В полученото изображение интензивната светлина изглежда заема повече обем, отколкото би трябвало, и се „изкачва“ върху обектите, въпреки че е зад тях. Когато използвате Bloom, по границите на обектите може да се появят допълнителни артефакти под формата на цветни линии.

Филмово зърно

Зърнистостта е артефакт, който се появява при аналогова телевизия със слаб сигнал, върху стари магнитни видеокасети или снимки (по-специално цифрови изображения, заснети при слаба светлина). Играчите често прекъсват връзката този ефект, защото до известна степен разваля картината, а не я подобрява. За да разбере това, човек може да бяга масов ефектвъв всеки един от режимите. В някои "филми на ужасите" напр Silent Hill, шумът на екрана, напротив, добавя атмосфера.

замъгляване на движението

Motion Blur - ефектът на замъгляване на изображението при бързо движение на камерата. Може да се използва успешно, когато на сцената трябва да се даде повече динамика и скорост, поради което е особено търсена в състезателни игри. При стрелците използването на размазване не винаги се възприема недвусмислено. Правилното прилагане на Motion Blur може да добави кинематографично качество към това, което се случва на екрана.

Ефектът също ще помогне да се забули, ако е необходимо. ниска честотапроменете рамки и добавете гладкост към играта.

SSAO

Оклузията на околната среда е техника, използвана за добавяне на фотореализъм към сцена чрез създаване на по-реалистично осветление на обектите в нея, което отчита наличието на други обекти наблизо със свои собствени характеристики на поглъщане и отразяване на светлина.

Screen Space Ambient Occlusion е модифицирана версия на Ambient Occlusion и също симулира индиректно осветление и засенчване. Появата на SSAO се дължи на факта, че при сегашното ниво на производителност на GPU, Ambient Occlusion не може да се използва за изобразяване на сцени в реално време. За повишена производителност в SSAO трябва да платите с по-ниско качество, но дори и това е достатъчно, за да подобрите реализма на картината.

SSAO работи по опростена схема, но има много предимства: методът не зависи от сложността на сцената, не използва RAM памет, може да функционира в динамични сцени, не изисква предварителна обработка на кадъра и зарежда само графичния адаптер, без да консумира ресурси на процесора.

Cel засенчване

Игрите с ефекта на засенчването на Cel се правят от 2000 г. насам и първо се появиха на конзоли. На компютъра тази техника стана наистина популярна само няколко години след излизането на сензационния стрелец XIII. Със засенчването Cel всяка рамка е на практика рисувана на ръка рисунка или фрагмент от детски анимационен филм.

Комиксите са създадени в подобен стил, така че техниката често се използва в игри, свързани с тях. От най-новите известни издания можем да посочим шутъра Borderlands, където засенчването на Cel е видимо с просто око.

Характеристиките на технологията са използването на ограничен набор от цветове, както и липсата на гладки градиенти. Името на ефекта идва от думата Cel (целулоид), тоест прозрачен материал (филм), върху който се рисуват анимационни филми.

Дълбочина на рязкост

Дълбочината на полето е разстоянието между близкия и далечния ръб на пространството, в рамките на което всички обекти ще бъдат на фокус, докато останалата част от сцената ще бъде замъглена.

До известна степен дълбочината на полето може да се наблюдава просто чрез фокусиране върху обект, който е близо пред очите. Всичко зад него ще се размаже. Обратното също е вярно: ако се фокусирате върху далечни обекти, тогава всичко пред тях ще се окаже размито.

Можете да видите ефекта на дълбочината на полето в хипертрофирана форма на някои снимки. Именно тази степен на замъгляване често се опитва да бъде симулирана в 3D сцени.

В игри, използващи Depth of field, геймърът обикновено има по-силно усещане за присъствие. Например, гледайки някъде през тревата или храстите, той вижда само малки фрагменти от сцената на фокус, което създава илюзията за присъствие.

Въздействие върху производителността

За да разберем как включването на определени опции влияе върху производителността, използвахме бенчмарка за игри Heaven DX11 Benchmark 2.5. Всички тестове бяха проведени на система Intel Core2 Duo e6300, GeForce GTX460 при 1280x800 пиксела (с изключение на вертикалната синхронизация, където разделителната способност беше 1680x1050).

Както вече споменахме, анизотропното филтриране почти няма ефект върху броя на кадрите. Разликата между деактивираната анизотропия и 16x е само 2 кадъра, така че ви препоръчваме винаги да я задавате на максимума.

Anti-aliasing в Heaven Benchmark намали fps повече, отколкото очаквахме, особено в най-трудния 8x режим. Въпреки това, тъй като 2x е достатъчно за забележимо подобрение на картината, ви съветваме да изберете тази опция, ако ви е неудобно да играете на по-високи.

Теселацията, за разлика от предишните параметри, може да приема произволна стойност във всяка отделна игра. В Heaven Benchmark картината се влошава значително без него, а на максимално ниво, напротив, става малко нереалистично. Следователно трябва да се зададат междинни стойности - умерени или нормални.

Повече от висока резолюциятака че fps да не се ограничава от вертикалната честота на опресняване на екрана. Както се очакваше, броят на кадрите през почти целия тест с включена синхронизация беше ясно около 20 или 30 кадъра / s. Това се дължи на факта, че те се показват едновременно с опресняването на екрана и при честота на опресняване от 60 Hz, това може да стане не с всеки импулс, а само с всяка секунда (60/2 = 30 кадъра / s) или трети (60/3 = 20 fps). Когато V-Sync беше деактивиран, броят на кадрите се увеличи, но на екрана се появиха характерни артефакти. Тройното буфериране няма положителен ефект върху плавността на сцената. Може би това се дължи на факта, че в настройките на драйвера на видеокартата няма опция за принудително изключване на буферирането и нормалното деактивиране се игнорира от бенчмарка и все още използва тази функция.

Ако Heaven Benchmark беше игра, тогава при максимални настройки (1280 × 800; AA - 8x; AF - 16x; Tessellation Extreme) би било неудобно да се играе, тъй като 24 кадъра очевидно не са достатъчни за това. С минимална загуба на качество (1280×800; AA - 2x; AF - 16x, Tessellation Normal) могат да се постигнат по-приемливи 45 fps.