VSync در یونتی چیست ؟
منبع:gameover.blog.ir
VSync در یونتی چیست ؟
Vsync برای جلوگیری از تیک خوردن صفحه هست فکر کنم. عدد بین 0 و 1 و 2 قبول می کنه/// اگه صفر بدی wait نمی کنه برای وی سینک.
رندر(نمایش) در یونیتی می تونه با refresh rate (نرخ رفرش) از دستگاه نمایش تنظیم بشه به منظور جلوگیری از ایجاد پارگی یا tearing (از هم گسیختگی). شما می تونید تنظیم رو روی every vertical blank (VBlank یا every second vertical blank یا هیچکدام قرار بدید .
برای این کار دو راه داریم: یکی اینکه مسیر Edit->project settings->Quality برید و تنظیمات رو انجام بدید.
روش دیگه کد نویسی هست. مثال :
[code]
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Example() {
QualitySettings.vSyncCount = 1;
}
}
[/code]
دو این دو تاپیک هم بخونید برای مطالعه بیشتر:
https://en.wikipedia.org/wiki/Analog_television#Vertical_synchronization
https://en.wikipedia.org/wiki/Screen_tearing
اینم کل بحث ما در تلگرام:
خود دستگاه های آیفن همیشه Vsync هستن و ما انتخابی برای اون نداریم فکر کنم
بعضی وقتا یک چیزی مثل تیرینگ/Tearing یا از هم گسیختگی وی صفحه ایجاد میشه موقع رندر
در وسط رندر یا آپدیت اسکرین
قسمت بالای صفحه نمایش به اندازه ی یک بیت از پایین صفحه نمایش آدرس دهی میشه
یا به اصطلاح آفست میشه
و ما گزینه vsync رو به هر صورت نمی تونیم بای آ ی او اس غیر فعال کنیم
اینو از اینجا خوندم http://answers.unity3d.com/questions/409576/vsync-on-or-off.html
واستا دارم بازم می خونم
حالا نمی دونم درست ترجمه کردم یا نه
🐥
اینم تو هلپ یونیتی هست معنیش کنید
It is possible to set Unity to switch frames only during the period where the display device is not updating, the so-called “vertical blank”. The VSync option on the Quality Settings synchronises frame switches with the device’s vertical blank or optionally with every other vertical blank. The latter may be useful if the game requires more than one device update to complete the rendering of a frame.
Tearing
The picture on the display device is not continuously updated but rather the updates happen at regular intervals much like frame updates in Unity. However, Unity’s updates are not necessarily synchronised with those of the display, so it is possible for Unity to issue a new frame while the display is still rendering the previous one. This will result in a visual artifact called “tearing” at the position onscreen where the frame change occurs.
file:///C:/Program%20Files/Unity/Editor/Data/Documentation/en/Manual/class-QualitySettings.html
http://stackoverflow.com/questions/21205340/what-is-vsync-count-in-unity3d
توی تکنولوژی نمایش امروزه یه اصلاحی هم هست به اسم VBlanck
در حقیقت زمانی هست بین آخرین عنصر یک فریم یا محدوده ی نمایش
و آغاز اولین خط فریم بعدی
در زمان vblank ثبات ها یا رجیسترهای نمایش، با داده های جدید برای هر خط/پیکسل نوشته میشن
اینکار اونقدر سریع هست که بهش می گیم نو تایم یا no time
یعنی زمانی نداره
یا محسوب نمیشه
اینجا یک مقاله هست دارم می خونم
https://en.wikipedia.org/wiki/Analog_television#Vertical_synchronization
و این https://en.wikipedia.org/wiki/Screen_tearing
مبحثش خیلی تخصصی هست
ولی دارم می خونم
یه جورای مربوط به رندر عمودی میشه
h افقی
v عمودی
دقت کن دستگاه های مختلف روش خودشون رو توی رندر دارن
مثلا بعضی ها میان پیکسل ها رو دونه دونه با سرعت به صورت افقی رندر می کنن و بعضیا عمودی
افقی یعنی اول نقاط خط اول صفحه نمایش رو رندر می کنن
و بعد می رن خط بعدی
و الی آخر
عمودی یعنی اول ستون اول رو رندر می کنن بعدش می رن ستون دوم و الی آخر....
Sync یعنی زمانبندی
داره می گه می تونیم با این گزینه فکر کنیم تعیین کنیم که رندر به چه صورت انجام بشه
بذار بازم دارم مطالعه می کنم
Vertical synchronization یه اپشن هست مربوط به کارت گرافیک میشه
که از نمایش بقیه اطلاعات حافظه ی گرافیک جلوگیری می کنه تا اینکه مانیتور چرخه یا سیکل رفرش جاری خودش رو تمام کنه و بعدش میره از حافظه گرافیک داده هایی رو که باید نمایش داده بشه رو می خونه
برای vertical blanking interval یا VBland اولویت به کارت ویدئو یا کارت گرافیک داده میشه تا خیلی سریع تصاویر ناحیه ی آف اسکرین یعنی پشت صحنه رو به ناحیه ی صفحه نمایش توی حافظه کپی کنه تا قابل رویت بشه. به این کار دابل بافرینگ یا حافظه کردن موقتی دوگانه هم می گیم
البته مباحث حافظه رو بیشتر مهندسین نرم افزار می دونن که تو درس های گرافیک کامپیوتری یا برنامه نویسی سیستمی مطرح هست.
این کار باعث میشه به سادگی بین اونها سویچ بک بشه
بهش page flipping هم می گن که اعلب ازش با نام بافرینگ پینگ پونگ یاد میشه
یعنی به طور همزمان مانیتور می تونه یک بافر (حافظه موقت) رو نمایش بده و اطلاعات بعدی به سرعت روی بافر پس زمینه یا آف اسکرین بافر ترسیم می شه.
و هی بینشون پاسکاری می کنه
مثل پینگ پونگ
گرفتی چیشد؟
vsyc
یه گزینه هست برای اکثر سیستم ها که وقتی کارت گرافیک قادر به نمایش حافظه ی نمایش نباشه این گزینه به کار میاد
تا به طور عمودی بیاد و دیتای بافر پس زمینه رو رندر کنه
Every v blankیعنی هر بار که یک خلل عمودی یا فاصله عمودی در رندر ایجاد میشه بیا جبرانش کن.
Every Second v blankیعنی هر دومین فاصله خالی که تو زمان رندر ایجاد میشه یا هر دومین وقفه ای که رخ میده بیا جبرانش کن.
کپی شده از http://gameover.blog.ir