همگامسازی عمودی یا VSync چیست و چه کاربردی در بازیهای کامپیوتری دارد؟
گیمرها همیشه بهدنبال بهترین کیفیت گرافیکی در بازیهای خود هستند. گیمرهای PC هم از این قائده مستثنی نیستند و علاوهبر استفاده از جدیدترین و حرفهایترین سختافزار موجود در بازار، بهترین تنظیمات نرمافزاری را نیز طلب میکنند. بههرحال، آنها هزینهی زیادی برای خرید تجهیزات بازی پرداخت کردهاند و باید بهترین تجربه را از خرید خود بهدست آورند. دراینمیان، همیشه تجربههای ناخوشایندی هم وجود دارد که ممکن است از خود بازی پیکربندی سختافزاری یا هر دلیل دیگر ناشی شود.
یکی از مشکلات مزاحمی که در برخی تجربههای بازی دیده میشود، پاره یا بریده شدن نمایشگر (Screen Tearing) نام دارد. این مشکل گرافیکی، با ظاهری شبیه چسباندن نوارهایی از تصویر به یکدیگر دیده میشود. در برخی بازیها، گزینهای گرافیکی بهنام همگامسازی عمودی (Vsync) را شاهد هستیم که ظاهرا برای رفع این مشکل طراحی شدهاند. حتما تاکنون از خود پرسیدهاید که Vsync چیست و آیا باید از آن استفاده کنیم؟ درادامهی این مقالهی زومیت، این قابلیت را ساده توضیح میدهیم.
برای درک بهتر قابلیت Vsync و ساختار آن، ابتدا باید با چند اصطلاح در دنیای PC آشنا شوید. نرخ نوسازی نمایشگر و کیفیت خروجی کامپیوتر شخصی، دو اصطلاح مهم هستند که هر دو در ایجاد اشکال بریدهشدن تصویر نقش ایفا میکنند.
نرخ نوسازی (Refresh Rate)
نرخ نوسازی مهمترین مؤلفه در تعیین کیفیت گرافیک خروجی محسوب میشود و از مشخصات مانیتور کامپیوتر شخصی است. آنچه میبینید، نمایشگر کامپیوترتان چندینبار در ثانیه نوسازی میکند؛ درنتیجه احتمالا اصلا متوجه آن نمیشوید. اگر نمایشگر نرخ نوسازی نداشت، همیشه تصویری ثابت مشاهده میکردید. حتی اگر در حال مشاهدهی فیلم یا بازی هم نباشید، باید حرکتهای مرسوم در کار با کامپیوتر را هم مشاهده کنید؛ ازجمله حرکت نشانگر ماوس یا هرگونه تغییر در محتوای موجود در نمایشگر.
نرخ نوسازی با هرتز مشخص میشود که یکایی برای اندازهگیری فرکانس است. اگر نمایشگر شما نرخ نوسازی ۶۰ هرتز داشته باشد، یعتی هر پیکسل را در هر ثانیه ۶۰ بار نوسازی میکند. اگر نمایشگری با نرخ نوسازی ۱۲۰ هرتز داشته باشید، تصاویر در هر ثانیه ۱۲۰ بار نوسازی میشوند. درنتیجه، بیشتربودن نرخ نوسازی بهمعنای تجربهی نمایش روانتر در نمایشگر خواهد بود.
هدف اصلی از افزایش نرخ نوسازی در نمایشگرها کاهش مشکل ماتشدن تصاویر بود که در نمایشگرهای LCD و OLED دیده میشدند. بهعلاوه، ذهن انسان هم بخشی از این مشکل محسوب میشود. مغز انسان مسیر حرکت المانها را سریعتر از سرعت نمایشگر در رندر تصویر بعدی پیشبینی میکند. قطعا افزایش نرخ نوسازی در حل مشکل مذکور کارساز خواهد بود؛ اما برای بهحداقلرساندن ماتی در تصاویر (blur) به فناوریهای دیگری هم نیاز خواهید داشت.
نمایشگرهای مدرن و مرسوم کامپیوترهای رومیزی عموما با رزولوشن ۱۹۲۰ در ۱۰۸۰ و نرخ نوسازی ۶۰ هرتز عرضه میشوند. البته نمونههای دیگری هم در بازار وجود دارند که از نرخ نوسازی ۷۵ هرتز در همان رزولوشن یا کیفیت خارقالعادهی ۱۲۰ هرتز و رزولوشن ۲۵۶۰ در ۱۴۴۰ بهره میبرند. برای مشاهدهی نرخ نوسازی نمایشگر در ویندوز ۱۰ مراحل زیر را دنبال کنید:
- در صفحهی دسکتاپ کلیک راست کنید.
- گزینهی Display settings را انتخاب کنید.
- در پایین صفحه، Advanced display settings را انتخاب کنید.
- گزینهی Display adapter properties را انتخاب کنید.
- اگر بیش از یک نمایشگر دارید، نمایشگر مدنظر را از منو کشویی Choose display انتخاب کنید. سپس با انتخاب گزینهی Display adapter properties، مشخصات را مشاهده میکنید.
اطلاع داشتن از قابلیتهای نرخ نوسازی نمایشگر و رزولوشن در بازیها اهمیت زیادی دارد. بهعنوان مثال، نمایشگر شما قابلیت نمایش رزولوشن ۳۸۴۰ در ۲۱۶۰ را دارد؛ اما در آن رزولوشن به نرخ نوسازی ۳۰ هرتز محدود میشود. درنتیجه، اگر رزولوشن را به ۱۹۲۰ در ۱۰۸۰ کاهش دهید، امکان بهرهمندی از نرخ نوسازی بیشتر از ۶۰ هرتز را خواهید داشت.
مفهوم فریمبرثانیه
فریمبرثانیه بخش دیگری از معادلهی کیفیت خروجی گرافیکی را تشکیل میدهد. فیلمها و سریالها و بازیها چیزی بیش از تصاویر پشتسرهم نیستند. درواقع، هیچگونه حرکت واقعی وجود ندارد و تصاویر متفاوت با نرخی مشخص بهصورت پشتسرهم برای شما نمایش داده میشوند. این تصاویر بسته به محتوایی که در هر تصویر یا فریم میبینید، توهم حرکت را در ذهن شما ایجاد میکنند.
نرخ فریم فیلمها و سریالها در کشورهای گوناگون تفاوت دارد؛ اما عموما شاهد تصاویری با نرخ ۲۴ فریمبرثانیه هستیم. البته چشمان ما میتواند تصاویری با نرخ ۱۰۰۰ فریمبرثانیه و حتی بیشتر دریافت و درک کند. فراموش نکنید فیلمها و سریالها برای فرار از واقعیت طراحی شدهاند؛ درنتیجه نرخ ۲۴ فریمبرثانیه همان حس رؤیایی و خارج از واقعیت را هم برای شما ایجاد میکند.
برخی فیلمها با نرخ فریم بیشتری ساخته میشوند. بهعنوان مثال، سهگانهی هابیتها با نرخ ۴۸ فریمبرثانیه ساخته شد که حرکت را در آن بیشازپیش به واقعیت نزدیک میکرد. تصاویر زنده هم در نرخهای ۳۰ تا ۶۰ هرتز نمایش داده میشوند. جیمز کامرون هم تصمیم گرفته بود دنبالهی فیلم آواتار را با نرخ ۶۰ هرتز تولید کند؛ اما درنهایت به ۴۸ هرتز راضی شد.
بازیها با نرخ فریم بیشتر تولید میشوند؛ چون بهدنبال ایجاد تجربهی واقعیتر از فیلمها هستند
در دنیای بازی، مقادیر و تعاریف کمی با فیلم و سینما تفاوت دارد. شما در بازی بهدنبال حالت رؤیایی در تصاویر نیستید. درواقع، همهی گیمرها بهدنبال اکشن عمیق و روان و مشابه دنیای واقعی میروند؛ چراکه در ذهن خود در حال بازیکردن نقش موجودی واقعی هستند. بازیای که با نرخ ۳۰ فریمبرثانیه اجرا شود، تحملکردنی خواهد بود؛ اما بهاندازهی کافی روان و جذاب نمیشود. در چنین نرخی، متوجه میشوید حرکتها براساس تصاویر پشتسرهم هستند و تجربهای عمیق نخواهید داشت.
وقتی بازیای با نرخ ۶۰ فریمبرثانیه اجرا شود، تجربهای متصلتر با دنیای مجازی آن پیدا میکنید. حرکتها روانتر و سیالتر میشوند و مانند تماشای ویدئویی زنده بهنظر میرسند. اگر دستگاه شما توانایی نمایش نرخ ۱۲۰ یا ۲۴۰ هرتز داشته باشد، توهم بازی بازهم عمیقتر میشود.
نقش پردازندهی گرافیکی
واحد پردازش گرافیکی (GPU) کامپیوتر شخصی وظیفهی رندرکردن تصاویر را انجام میدهد. ازآنجاکه GPU بهطورمستقیم به حافظهی سیستم دسترسی ندارد، بهناچار باید از حافظهی اختصاصی خود استفاده کند؛ حافظهای که برای ذخیرهی موقت مؤلفههای گرافیکی همچون بافتها و مدلها و فریمها استفاده میشود.
پردازندهی مرکزی (CPU) بخش عمدهای از وظایف محاسبهای را برعهده میگیرد. این بخش کارهایی همچون منطق بازی، هوش مصنوعی (NPC و...)، دستورهای ورودی، محاسبهها، بازی آنلاین چندنفره و... را مدیریت میکند. حافظهی سیستم نیز تمامی مواردی را موقتا ذخیره میکند که پردازندهی مرکزی برای اجرای بازی به آنها نیاز دارد. دراینمیان، حافظه ذخیرهسازی (HDD یا SSD) هم وظیفهی ذخیرهی کامل تمامی مؤلفههای دیجیتال را برعهده میگیرد.
تمامی چهار عامل سختافزاری برای اجرای بازی، یعنی GPU ،CPU، حافظهی موقت و حافظهی ذخیرهسازی، در خروجی کلی بازی شما تأثیر میگذارند. هدف نهایی این است که پردازندهی گرافیکی تاحدممکن فریمهای بیشتری در هر ثانیه رندر کند. این عامل بهطور ایدئال، ۶۰ تعریف میشود. هرچه نرخ فریم بیشتر باشد، تجربهی بصری بهتر خواهد بود.
باتوجهبه تعاریف گفتهشده، به این نتیجه میرسیم خروجی وابستگی بسیار زیادی به سختافزار و محیط نرمافزاری دارد. بهعنوان مثال، اگرچه پردازندهی مرکزی تمامی بخشهای موردنیاز برای اجرای بازی را مدیریت میکند، وظایف دیگری برای مدیریت فرایندهای اصلی اجرای کارهای کامپیوتر هم دارد. برای حل این مشکل، میتوان برخی از فرایندهای متفرقه را متوقف کرد؛ اما درنهایت برای اجرای عالی به پردازندهی سریعتری نیاز خواهیم داشت.
مؤلفههای دیگری هم در خروجی بازیهای کامپیوتری تأثیرگذارند. درایو ذخیرهسازی مشکلدار یا حافظهی کُند یا پردازندهی گرافیکی ضعیف بر خروجی بازی تأثیر خواهد گذاشت. بهعنوان مثال، در برخی مواقع به اجرای بازی در کیفیت 4K نیاز دارید؛ اما بازی در نرخ فریم ۱۰ هرتز اجرا میشود. چنین رخدادی بهدلیل محدودیت قدرت پردازندهی گرافیکی ایجاد میشود.
برخی مواقع، تمامی پیشنیازهای سختافزاری اجرای عالی بازی را هم دارید؛ اما در برخی لحظهها، با مشکل اجرایی همچون افت نرخ فریم روبهرو میشوید. گرما یکی از دلایلی است که باعث کاهش نرخ فریم میشود. درنهایت باید این نتیجهگیری را بپذیرید که نرخ فریم مفهومی در نوسان است که بهدلیل فشار رندر و سختافزار اصلی و سیستمعامل ایجاد میشود؛ درنتیجه حتی وقتی تنظیمات بازی را در حداکثر نرخ فریم قرار میدهید، بازهم شاهد نوسان خواهید بود.
تعویض بافرها
بیایید مفاهیم گفتهشده در بخشهای قبلی را جمعبندی کنم. نمایشگر تصویر را چندینمرتبه در ثانیه ترسیم میکند که تعداد این دفعات دچار نوسان نمیشود. دراینمیان، تراشهی گرافیکی کامپیوتر شخصی هم تصویر را چندینبار در ثانیه رندر میکند که دفعات رندر خروجی برخلاف ترسیم تصویر در نمایشگر، دچار نوسان میشود. مشکلی که در اثر تفاوت مذکور ایجاد میشود، همان بریدهشدن تصویر نام دارد. برای درک تفاوت و دلیل ایجاد بریدگی در تصویر، باید مفاهیم فنی بیشتری درک کنیم.
پردازندهی گرافیکی نقطهای ویژه در حافظهی خود دارد (VRAM) که برای مدیریت فریمها استفاده میشود و بافر فریم نام دارد. بافر مذکور به دو بخش اولیه و ثانویه تقسیم میشود. فریم جاری کاملشده در بافر اولیه ذخیره میشود و در زمان نوسازی، به نمایشگر میرود. بافر ثانویه همان جایی است که پردازندهی مرکزی فریم بعدی را رندر میکند. وقتی پردازندهی گرافیکی یک فریم را رندر میکند، نقش بافرها باهم تعویض و بافر اولیه به ثانویه و بافر ثانویه به اولیه تبدیل میشود. سپس، بازی از پردازندهی مرکزی درخواست میکند فریم جدید را در بافر ثانویهی جدید رندر کند.
مشکل اصلی بافرها در این است که تعویض آنها در هر زمانی ممکن خواهد بود. وقتی نمایشگر سیگنالی مبنیبر آمادهبودن برای دریافت نوسازی جدید و پردازندهی مرکزی فریم را ازطریق کابل اتصال (HDMI ،DisplayPort ،VGA ،DVI و...) ارسال میکند، شاید در میانهی تعویض بافر قرار داشته باشیم. درنهایت، پردازندهی گرافیکی با سرعتی بیش از نرخ نوسازی نمایشگر فریمها را رندر میکند؛ بنابراین، نمایشگر بخشی از اولین فریم کاملشده را نمایش میدهد که در بافر اولیهی قدیمی قرار داشت و بخشی هم از فریم دوم نمایش داده میشود که در بافر اولیهی جدید قرار دارد.
وقتی این اتفاق رخ میدهد، تجربهی کاربر روی نمایشگر صحنهی شکسته مانند تصویر بالا را شامل میشود. بالای تصویر یک زاویه و پایین آن زاویهی دیگر را نمایش میدهد و در برخی مواقع، حتی سه بریدگی در تصویر دیده میشود. بریدگی تصویر خصوصا وقتی حرکت دوربین افقی باشد، با احتمال بیشتری رخ میدهد.
همگامسازی عمودی یا Vsync
همانطورکه گفته شد، برای حل نرمافزاری مشکل بریدگی در تصاویر میتوان از قابلیتی بهنام Vsync استفاده کرد. این قابلیت در بازیها بهصورت گزینهی خاموش و روشن عرضه میشود. با فعالشدن Vsync، پردازندهی گرافیکی تا وقتی نمایشگر نوسازی جدیدی دریافت نکند، تعویض بافرها را انجام نخواهد داد؛ درنتیجه، پردازندهی گرافیکی بهنوعی دنبالهرو نمایشگر میشود. پردازندهی گرافیکی تا زمانیکه چراغ سبز تعویض بافرها را از نمایشگر دریافت نکند، در حالت توقف idle باقی خواهد ماند و سپس، تصویر جدید را رندر میکند.
با فعالکردن Vsync، نرخ فریم بازی بیشتر از نرخ نوسازی نمایشگر نخواهد رفت. بهعنوان مثال، اگر نمایشگر تنها توانایی نمایش رزولوشن ۱۹۲۰ در ۱۰۸۰ را با نرخ ۶۰ هرتز داشته باشد، Vsync نرخ فریم را در ۶۰ هرتز قفل میکند؛ درنتیجه دیگر شاهد بریدهشدن تصویر نخواهید بود.
Vsync با وجود حل مشکل بریدگی، ضعفهای هم دارد
استفاده از Vsync با مشکلاتی نیز همراه خواهد بود. اگر پردازندهی گرافیکی کامپیوتر شخصی شما توانایی حفظ نرخ فریم ثابت و هماهنگ با نمایشگر را نداشته باشد، با مشکل روبهرو میشوید. در این حالت، گیرکردن تصویر (Stuttering) را تجربه میکنید. بهبیاندیگر، رندرکردن یک فریم در پردازندهی گرافیکی بیشتر از نوسازی نمایشگر بهطول میانجامد. بهعنوان مثال، نمایشگر دوبار یک فریم را رندر میکند تا پردازندهی گرافیکی یک فریم را ارسال کند.
اگر مشکل بالا در پردازندهی گرافیکی و نمایشگر ایجاد شود، فعالشدن Vsync به کاهش نرخ فریم بازی بهمیزان ۵۰ درصد نرخ نوسازی نمایشگر منجر میشود. درنتیجه مشکل دیگری بهشکل لگ در تصوی، خود را نشان میدهد. در این حالت، ماوس و کیبورد و کنترلر شما مشکلی ندارد. درواقع ورودیها همه عالی هستند و مشکل اصلی در تجربهی تأخیر در خروجی بصری است. چرا؟ چون بازی ورودی شما را درک میکند؛ اما پردازندهی گرافیکی به ایجاد تأخیر در فریمها مجبور میشود. درنهایت، از زمان اعمال ورودی شما تا مشاهدهی خروجی در نمایشگر، تأخیر ایجاد میشود.
مقدار لگی که دراثر این مشکلات در بازی ایجاد میشود، وابستگی زیادی به موتور بازی دارد. از عوامل مؤثر دیگر میتوان به حداکثر نرخ نوسازی نمایشگر اشاره کرد. بهعنوان مثال اگر نمایشگر شما ۶۰ هرتز باشد، حداکثر لگ ۱۶ میلیثانیه را تجربه میکنید و اگر نمایشگرتان ۱۲۰ هرتز باشد، حداکثر لگ ۸ میلیثانیه را تجربه میکنید. همین مقدار لگ هم در بازیهای حساس آنلاین مانند Overwatch و Fortnite و Quake Champions پذیرفتنی نیست.
بهترین راهکار؛ بافر سهگانه
در تنظیمات برخی از بازیها، گزینهی بافر سهگانه (Tripple Buffering) دیده میشود. با فعالکردن گزینهی مذکور، پردازندهی گرافیکی بهجای دو حافظهی بافر، از سه حافظه استفاده میکند: یک بافر اولیه و دو بافر ثانویه. نرمافزار و پردازندهی گرافیکی هر دو تصویر را روی بافرهای ثانویه ترسیم میکنند. وقتی نمایشگر برای دریافت تصویر جدید آماده باشد، بافر ثانویه شامل فریم رندرشده به بافر اولیه تبدیل میشود. همین روند برای تمامی فریمها تکرار خواهد شد.
استفاده از بافر ثانویهی سوم بریدهشدن تصویر را از بین میبرد؛ چون بافرهای اولیه و ثانویه زمانیکه پردازنده در حال ارسال تصویر جدید است، باهم تعویض نمیشوند. بهعلاوه، تأخیری نیز شاهد نخواهید بود. درنهایت، بافر سهگانه را میتوان ترکیبی از بهترین قابلیتها برای گیمر دانست: جلوههای بصری بدون بریدگی در زمان فعالبودن Vsync در ترکیب با نرخ فریم زیاد و بهرهوری عالی ورودی در زمان غیرفعالبودن Vsync.
آیا باید از Vsync استفاده کنیم؟
پاسخ به پرسش بالا هم مثبت و هم منفی است و به ترجیح گیمر بستگی دارد. اگر بریدهشدن تصویر بهندرت اتفاق بیفتد و تحملکردنی باشد، فعالکردن Vsync آنچنان منطقی نیست. اگر نمایشگری با نرخ نوسازی زیاد و فراتر از توانایی پردازندهی گرافیکی دارید، احتمالا مشکلی از جنس بریدهشدن تصاویر نخواهید داشت. درنهایت، اگر واقعا به Vsync نیاز دارید، باید ضعفهای آن را نیز بپذیرید. همانطورکه گفتیم، فعالکردن این گزینه در بسیاری از مواقع به تأخیر یا لگ منجر میشود.
راهکارهای متعدد دیگری هم برای مقابله با جلوههای بریدهشدن تصاویر وجود دارند که هرکدام به مقالههای مجزایی نیاز خواهند داشت که از میان آنها میتوان به راهکارهای سختافزاری برای نمایشگرهای همچون G-Sync از انویدیا یا FreeSync از AMD اشاره کرد. راهکارهای دیگر در نمایشگرهایی با نرخ فریم متغیر پشتیبانی میشوند که عبارتاند از: Enhanced Sync (مخصوص پردازندههای گرافیکی AMD) یا Fast Sync (مخصوص پردازندههای گرافیکی انویدیا) یا Adaptive Sync (مخصوص انویدیا) و VESA Adaptive Sync (مخصوص انویدیا و AMD). کارت گرافیک جدید اینتل نیز با پشتیبانی از قابلیت Adaptive Sync عرضه خواهند شد.