آنتی الیاسینگ چیست و شکستگی خطوط چه طور ایجاد می‌شود؟

 آنتی‌-الیاسینگ، Anti-Aliasing یا به اختصار AA تکنیکی برای برطرف کردن حالت دندانه‌‌ای یا شکستگی خطوط صاف و لبه‌ها در بازی‌هاست که در ادامه به بررسی روش‌های مختلف و سرعت آن می‌پردازم.

آپشنی به نام Anti-Aliasing در تنظیمات بازی‌ها

یکی از موضوعات جالب دنیای گرافیک آنتی-اَلیاسینگ (Anti-Aliasing) یا به اختصار AA است. این تکنیک در اغلب بازی‌ها به عنوان یکی از گزینه‌های مهم تنظیمات گرافیک وجود دارد.

دقت کنید که آپشن دیگری که در بیشتر بازی‌ها می‌بینیم، AF یا فیلترینگ بافت است؛ Anisotropic Filtering تکنیکی برای بهبود بافت یا Texture است که خود موضوع جالب دیگری است.

مثلاً در بازی اسکایریم:

تنظیمات گرافیکی در بازی Skyrim

مفهوم الیاسینگ و آنتی-الیاسینگ

آنتی-الیاسینگ به زبان ساده یعنی ضد اَلیاس، منظور از الیاس هم شکستگی خطوط است. علت شکستگی یا الیاسینگ این است که برای توضیح گرافیک از پیکسل‌های مربع شکل استفاده می‌شود که نتیجه‌ی آن دندانه دندانه شدن خطوط صاف است.

البته الیاس فقط به خطوط محدود نمی‌شود. یک دایره هم اگر با پیکسل‌ها نمایش داده شود، همین حالت دندانه‌ای را دارد گرچه خطوط صافی که مرز اجسام باشند، الیاسینگ را بهتر نمایان می‌کنند.

به تصویر زیر توجه نمایید:

الیاسینگ یا شکستگی و ضد آن

تکنیک آنتی-الیاسینگ روی خطی که لبه‌های جالبی ندارد اعمال می‌شود و نتیجه‌ی آن شکستگی کمتر لبه‌ی صاف خط است. یک مثال پیچیده‌تر هم تصویر زیر است که در آن لبه‌ی اجسام مختلف با آنتی-الیاسینگ واقعی‌تر می‌شود:

منظره‌ای که با آنتی-الاسینگ واقعی‌تر می‌شود

و این هم یک دایره که در حالت وسط، الیاس شدیدی دارد و در حالت سمت راست، کمی بهتر به نظر می‌رسد.

مرز یک دایره و منحنی هم ممکن است دچار شکستگی شود

در گرافیک از شبکه‌ای متشکل از 3 ضعلی‌ها استفاده می‌شود. هر چه رزولوشن بالاتر باشد و تسیلیشن ظریف‌تر، قطعاً شبکه پیچیده‌تر می‌شود و الیاسینگ هم کمتر می‌شود اما متأسفانه کارت گرافیک به شدت تحت فشار قرار می‌گیرد و سرعت اجرا کم می‌شود و لذا باید از آنتی-الیاسینگ استفاده کرد که سرعت بیشتری دارد و کیفیت آن در حد مطلوب است.

مش یا شبکه‌ی مثلث‌ها در ساخت مدل سر انسان

در یک بازی مثل Half Life 2 فعال کردن آنتی-الیاسینگ بسیار موثر است. اگر روی تصویر کلیک کنید اندازه‌ی اصلی قابل بررسی خواهد بود:

اثر فعال کردن آنتی-الیاسینگ در بازی هاف لایف 2

نمایشگرهای متشکل از پیکسل، علت دیگری برای الیاسینگ

نمایشگرهای امروزی همه از اجزایی کوچک به نام پیکسل تشکیل شده‌اند. البته تراکم پیکسلی یک گوشی رده اول به ارقامی مثل 500 پیکسل تنها در یک اینچ معادل 2.54 سانتی‌متر می‌رسد حال آنکه نمایشگر لپ‌تاپ‌های معمولی تراکم حدود 100 پیکسل بر اینچ دارند و تلویزیون‌های فول اچ‌دی بالای 40 اینچ هم تراکم کمتر از 60 پیکسلی بر اینچ دارند.

من اینگونه محاسبه کرده‌ام: تعداد پیکسل‌های طول و عرض یک تلویزیون 40 اینچی با رزولوشن 1080p برابر با 1920 و 1080 عدد است. بنابراین از رابطه‌ی فیثاغورس به این نتیجه می‌رسیم که تعداد پیکسل‌ها در قطر نمایشگر حدوداً جذر جمع مربع 1920 و 1080 است که برابر است با 2200. دقت کنید که حدوداً 2200 پیکسل در قطر نمایشگرهای فول‌اچ‌دی قرار دارد، نه دقیقاً! حال 2200 پیکسل را بر 40 اینچ تقسیم می‌کنم که عدد 55 پیکسل بر اینچ به دست می‌آید.

به هر صورت، تراکم پیکسلی کم، دندانه‌های بسیار بزرگی را ایجاد می‌‌کند و هر چه پیکسل‌ها کوچک‌تر شوند هم الیاس کاهش می‌یابد. به همین علت است که شاید در یک گوشی رده اول، خطوط کاملاً صاف به نظر برسند اما در تلویزیون فول‌اچ‌دی، وقتی از نزدیک به آن نگاه کنیم، خطوط به نظر دندانه‌دار باشند. اما در حالت کلی راهی برای فرار از الیاسینگ وجود ندارد! مگر آنکه رزولوشن همچون طبیعیت و دنیای واقعی به بی‌نهایت فیزیکی میل کند. منظورم این است که اگر پیکسل‌ها به ابعاد بسیار کوچک برسند، الیاسینگ حتی با ذره‌بین هم دیده نخواهد شد.

الگوریتم‌ها یا روش‌های مختلف آنتی-الیاسینگ

آنتی-الیاسینگ نوعی میان‌یابی است.

در حقیقت تمام الگوریتم‌های از بین بردن شکستگی خطوط و منحنی‌ها، بر روابط ریاضی مثل میان‌یابی استوار شده‌اند. منظورم از میان‌یابی این است که وقتی بین دو نقطه‌ی منحنی، نقطه‌ی دیگری نداریم، با محاسبه‌ی ساده‌ای یک نقطه‌ی میانی پیدا می‌کنیم. هر نوع میانگین‌گیری یک روش میان‌یابی است. مثلاً ممکن است جمع دو عدد را تقسیم بر دو نکنیم بلکه میانگین مربعات آنها را محاسبه کرده و سپس جذر آن را بگیریم. این روش میان‌یابی درجه دوم است و انواع بسیار پیچیده‌تری هم داریم.

در آنتی‌الیاسینگ چیزی که باید میان‌یابی شود، رنگ پیکسل‌های مرزی جسم است. به همان مثال دایره بر‌می‌گردم. پیکسل مرزی نه نارنجی است و نه سبز. باید بخشی از آن که به دایره تعلق داشته نارنجی باشد و بخشی دیگر سبز اما در عمل یک پیکسل دارای چند ساب-پیکسل است و در مجموع تنها یک رنگ را نمایش می‌دهد. نمی‌شود پیکسلی دو رنگ را نمایش دهد ! پس چه باید کرد؟ این سوالی است که بزرگان گرافیک یعنی NVIDIA و AMD پاسخ آن را به شکل‌های مختلف داده‌اند که در ادامه بررسی می‌کنم.

نمونه‌برداری تفاوت اصلی MSAA، CSAA، SMAA و روش‌های دیگر است

محاسبه‌ی رنگ پیکسل با توجه به نمونه‌برداری‌های مختلف صورت می‌گیرد. هر چه تعداد نمونه‌ها را بیشتر کنیم، میان‌یابی رنگ دقیق‌تر خواهد شد و البته بار پردازشی هم بیشتر می‌شود. تفاوت روش‌های مختلف آنتی-الیاسینگ در این است که چطور و از کدام نواحی نمونه‌ی رنگ تهیه شود تا در محاسبه‌ی رنگ نهایی هر یک از پیکسل‌ها استفاده شود.

روش SSAA و FSAA

بدترین روش و در عین حال موثرترین روش همین Super Sampling Anti-Aliasing است. منظور از سوپر سَمپل این است که نمونه‌برداری کامل صورت می‌گیرد. در این روش بازی به نوعی در رزولوشن بالاتر رندر می‌شود و سپس قبل از نمایش فریم، تصویر کوچک می‌شود. به همین علت تمام عناصر موجود شامل آنتی-الیاسینگ می‌شوند.

اما FSAA چیست؟ SSAA روی تمام صفحه عمل می‌کند به همین علت یکی از الگوریتم‌های Full Screen AA یا FSAA محسوب می‌شود و گاهاً به آن FSAA هم گفته می‌شود.

SSAA 4x یعنی طول و عرض 2 برابر و مساحت 4 برابر شود

عملکرد SSAA بسیار ضعیف است. مثلاً اگر SSAA 4x آپشن انتخابی شما باشد و رزولوشن مانیتور 1080p، بازی در رزولوشن 3840 در 2160 پیکسل رندر می‌شود. به بیان دیگر 2 مگاپیکسل نمایشگر با 8 مگاپیکسل رندر می‌شود و سپس تصویر کوچک می‌شود یعنی هر 4 پیکسل مجاور که ممکن است 4 رنگ متفاوت داشته باشند، به یک پیکسل با رنگ متوسط بدل می‌شود.

مشخص است که چند برابر شدن رزولوشن، بار پردازشی را بسیار بالا برده و سرعت اجرای بازی به شدت کاهش می‌یابد. لذا اگر هیچ گزینه‌ی دیگری نداشتید، از SSAA استفاده کنید.

البته در نهایت دقت کنید که SSAA به معنی رزولوشن بالاتر نیست بلکه به جای محاسبه‌ی وضعیت 2 میلیون نمونه برای 2 میلیون پیکسل، تعداد نمونه‌ها بیشتر می‌شود. ولیکن برای سادگی اینطور عنوان کردم که رزولوشن واقعی اجرای بازی بالاتر است. در ادامه نمونه و پیکسل را بهتر درک می‌کنیم.

روش MSAA و مشتقات آن CSAA و EQAA

روش آنتی-الیاسینگ چند نمونه‌ای یا Multi-Sampling Anit-Aliasing مثل SSAA نیست که تمام عناصر را مورد توجه قرار دهد بلکه برخی را حذف می‌کند تا کار سریع‌تر انجام شود. این الگوریتم ممکن است لبه‌های دندانه‌دار را هوشمندانه‌تر انتخاب کند که البته به کارت گرافیک‌های جدید و پیشرفته‌تری هم نیاز دارد ولیکن افزایش سرعت آنتی-الیاسینگ قابل توجه است.

تصاویر زیر را به دقت مقایسه کنید:

MSAA با 4 نمونه برای میان‌یابی رنگ یک پیکسل

در نمونه‌ی بالایی الیاسینگ شدیدی خواهیم داشت. یک پیکسل کاملاً متضاد سه پیکسل دیگر است. در نمونه‌ی دوم MSAA 4X صورت گرفته یعنی هر پیکسل با 4 نمونه نقطه ارزیابی می‌شود.

پیکسل کاملاً سبز نیازی به چند نمونه رنگ ندارد، با همان نمونه‌ی وسط پیکسل، رنگ مشخص می‌شود.

سه پیکسل دیگر هر کدام شامل دو چندضلعی آبی و سبز هستند. لذا باید مشخص شود که چند درصد آبی است و چند درصد در محدوده‌ی چند ضلعی سبز قرار گرفته است. در مورد این پیکسل‌ها از 4 نمونه استفاده می‌شود که معمولاً موقعیت چهار نمونه به دست سازنده‌ی بازی یا در بدترین حالت به صورت درایوری مشخص شده است و قابل بهینه‌سازی نیست.

نتیجه‌ی محاسبات می‌گوید که فرضاً در مورد گوشه‌ی راست و بالا، 4 نمونه همگی در بخش آبی قرار دارند. پس این پیکسل با رنگ آبی نمایش داده می‌شود. دو پیکسل دیگر یکی شامل 3 نمونه‌ی سبز است و دیگری شامل دو نمونه، لذا رنگشان سبزآبی با غلظت متفاوت خواهد بود.

دو مشکل MSAA، بار پردازشی و ترکیب آلفا

از مشکلات MSAA می‌توان به بار پردازشی نسبتاً زیاد اشاره کرد. یک اشکال دیگر هم به ترکیب پیکسل‌های آلفا مربوط می‌شود.

منظور از آلفا این است که شفافیت رنگ چه قدر است. طراحان وب رنگ را با کدی شبیه:

rgba(100,200,150,0.5)

مشخص می‌کنند. سه عدد اول غلظت قرمز، سبز و آبی است و عدد چهارم همان شفافیت یا Transparency است.

در گرافیک بازی‌ها هم اجسام شفاف باید به همین صورت نمایش داده شوند یعنی بخشی از رنگ پیکسل به پیکسلی در پشت جسم مربوط است و بخشی به خود جسم. اصطلاح Z-buffer هم به موقعیت پیکسل‌ها اشاره می‌کند.

در تصویر زیر بخش‌های چهار خانه شفاف هستند و بخش دارای رنگ، تور سیمی را نشان می‌دهد.

نمونه‌ای از رنگ شفاف، تور سیمی و بخش خالی آن

تور فوق در گرافیک واقعی بازی به صورت زیر است. SSAA در این مورد هیچ مشکلی ندارد و به خوبی الیاسینگ را از بین برده است اما متأسفانه MSAA اثری روی آن نمی‌گذارد:

شفافیت، جایی که MSAA بی‌تأثیر است

MSAA با شفافیت مشکل دارد یعنی لبه‌ی اجسام شفاف را به درستی نمونه‌برداری نمی‌کند. علت این است که MSAA در جست‌وجوی چند ضلعی‌های یک پیکسل است حال آنکه پیکسل‌های مرزی تور سیمی، شامل بخش شفافی هستند که رنگ خاصی ندارد!

راه حل انویدیا و ای‌ام‌دی برای بافت شفاف و الیاسینگ

انویدیا دو روش برای حل مشکل پیشنهاد کرده که یکی استفاده از SSAA است و دیگری استفاده از MSAA. البته هر دو روش عملکرد را کمی پایین می‌آورند، هر چه اجسام شفاف بیشتر باشند، عملکرد بیش از پیش افت می‌کند. انویدیا نام این روش TAAA گذاشته و در درایور می‌توان مشخص کرد که از MSAA استفاده شود یا SSAA 2x یا چهار نمونه‌ای و 8 نمونه‌ای برای این نوع پیکسل‌ها استفاده شود.

ای‌ام‌دی هم با کمی فاصله تکنولوژی مشابه خود را با عنوان Adaptive Anti-Aliasing رونمایی کرد که البته فقط از روش SSAA استفاده می‌کند.

اثر جالب هر دو روش AMD و NVIDIA را در تصویر زیر ببینید:

اثر آنتی-الیاسینگ Adaptive ای‌ام‌دی و TAAA انویدیا

در بازی‌های جدید مبتنی بر DirectX 11 یا 10 یک تکنیک سخت‌افزاری جالب به نام Alpha-to-coverage وجود دارد که به نوعی همین کار را انجام می‌دهد و به خوبی مانع از الیاسینگ در لبه‌ی اجسام شفاف می‌شود. البته در جدیدترین بازی‌ها هم گاهی عملکرد آن کامل نیست و در این موارد می‌توان روش انویدیا و ای‌ام‌دی را استفاده کرد.

دوران پس از MSAA و SSAA

همان‌طور که در بخش‌های قبلی توضیح دادم، ساده‌ترین روش SSAA است که بار پردازشی شدیدی را متوجه کارت گرافیک می‌کند. MSAA سریع‌تر و بهینه‌تر است اما هنوز هم جای بهینه‌سازی وجود دارد.

در ادامه می‌خواهیم بررسی کنیم که چه بهینه‌سازی‌هایی در این سال‌ها صورت گرفته است.

آنتی-الیاسینگ موقتی یا Temporal

ای‌ام‌دی در سال 2004 این روش خلاقانه را معرفی کرده که در مورد بازی‌ها و گرافیک سبک اثر جالب توجهی دارد. وقتی سرعت اجرا بالا باشد می‌توان در فریم‌های متوالی از دو طرح نمونه‌برداری استفاده کرد. مثلاً در تصویر زیر یک بار دو نمونه در راستای یک قطر پیکسل هستند و بار دیگر و در واقع در فریم بعدی، در قطر دیگر.

آنتی-الیاسینگ با طرح موقتی یا Temporal

بدین‌ترتیب وقتی سرعت اجرای بازی یا گرافیک سه بعدی بالا باشد، چیزی که می‌بینیم، میان‌یابی به دو روش مختلف 2x است که ظاهراً شبیه 4x از آب در می‌آید، گویی که 4 نمونه از 4 گوشه‌ی پیکسل برداشته شده است اما در عمل افت کارایی به اندازه‌ی برداشتن تنها دو نمونه است.

آنتی-الیاسینگ با فیلترهای سفارشی

انویدیا و ای‌ام‌دی روی MSAA کار کرده‌اند تا قابلیت‌ها و کیفیت و از همه مهم‌تر عملکرد آن را بهینه کنند. به سال 2007 برمی‌گردم. زمانی که در تنظیمات درایور ای‌ام‌دی، حالاتی به نام Box، Narrow Tent، Wide Tent و از همه جالب‌تر Edge Detect ظهور کرد.

باکس یا جعبه ساده‌تری الگوریتم است. مثلاً در حالت 8x به جای اینکه فقط مرکز یک پیکسل در محاسبات پیکسل شیدرها بررسی شود، 8 نمونه نقطه بررسی می‌شود و در نهایت رنگ هر 8 نقطه میان‌یابی می‌شود.

مالتی-سمپلینگ با نمونه‌هایی در سطح پیکسل

 

در Narrow Tent یا خیمه‌ی کوچک، نمونه‌ها به پیکسل مجاور هم توسعه پیدا می‌کند، البته در Wide Tent شدت گسترش بیشتر است:

مالتی-سمپلینگ با نمونه‌هایی بیشتر از پیکسل‌های مجاور

پیشرفته‌ترین روش آن روزها هم Edge Detect یا تشخیص لبه‌هاست که در تصویر زیر با MSAA مقایسه شده است:

آنتی-الیاسینگ با تشخیص هوشمندانه‌ی لبه‌ها

مالتی-سمپلینگ می‌تواند چندضلعی‌ها را تشخص بدهد و نمونه‌های اضافی را در بخش‌های مرزی اضافه کند نه درون چند ضلعی.

ای‌ام‌دی و روش MLAA در سری 6800

یک روش پیشرفته‌تر Morphological Anti-Aliasing است که با معرفی کارت گرافیک‌های HD 6800 در اختیار سازندگان بازی قرار گرفت. MLAA مرا به یاد FXAA که کاملاً متداول شده می‌اندازد. هیچ کدام از این دو روش بار پردازشی سنگینی ندارند چرا که اساساً به هندسه‌ی اجسام کاری ندارند بلکه صرفاً یک فیلتر پس‌پردازشی هستند.

MLAA مثل FXAA روی تمام پیکسل‌های تصویر اعمال می‌شود و آن را کمی مات می‌کند.

مفهوم Morphological ریخت‌شناسی است و به این معنی است که پس از رندر شدن فریم، یک مرحله‌ی پس‌پردازشی توسط شیدرهای مربوط به MLAA صورت می‌گیرد تا لبه‌ها و طرح‌هایی که تضاد بالایی دارند شناسایی شوند. احتمال قوی این است که پیکسل‌های کاملاً متضاد در لبه‌ی اجسام قرار داشته باشند و پدیده‌ی شکستگی را سبب شوند. بنابراین کافی است این پیکسل‌ها با محاسبه‌ای سبک و ساده، کمی متعادل شوند. در حقیقت رنگ این پیکسل‌های مرزی با پیکسل‌های هم‌جوار ترکیب می‌شود و مثل همان دایره‌ای که در ابتدا مثال زدم، لبه‌ها کمی مات می‌شود. اشکال این روش دقیقاً مثل FXAA است یعنی تمام منظره مشمول آن می‌شود.

به جای تمام حرف و حدیث‌ها بهتر است تصویر زیر از استار کرفت 2 را بررسی کنید، مطمئناً SSAA بهترین کیفیت و لبه‌ها را دارد، MSAA در مرتبه‌ی بعدی است و روش سریع MLAA مات کردن ذاتی خود را نمایان کرده است:

آنتی-الیاسینگ با روش پس‌پردازشی MLAA ای‌ام‌دی

AMD و EQAA در سری HD 6900

روش جدیدتر EQAA است که ای‌ام‌دی با معرفی سری 6900 که آن را کلید زده است. در واقع EQAA توسط واحد خروجی رندر یا ROP مدل‌های قبلی قابل انجام نیست. این روش را به همراه CSAA انویدیا به صورت جداگانه و در بخش بعدی توضیح می‌دهم.

دقت داشته باشید که برخی کارت گرافیک‌های لپ‌تاپی سری 7000 هم معمولاً حاصل تغییر نام برخی مدل‌های قدیمی سری 6000 هستند.

NVIDIA و ابداع CSAA

مهم‌ترین و جالب‌ترین کاری که به نظر من در عرصه‌ی آنتی‌-الیاسینگ صورت گرفته، الگوریتمی موسوم به CSAA یا Coverage Sampling Anti-Aliasing است. در این روش نمونه‌هایی مثل روش MSAA برای محاسبه‌ی رنگ یک پیکسل در نظر گرفته می‌شود و در کنار آن نمونه‌هایی برای بررسی ناحیه‌ی تحت پوشش یک یا چند چندضلعی استفاده می‌شود. عبارت Coverage Sampling به همین نمونه‌ها اشاره می‌کند که من اسم آنها را نمونه‌های بررسی پوشش یا نمونه‌های پوششی می‌گذارم. روش EQAA ای‌ام‌دی هم همان‌طور که اشاره کردم، شبیه CSAA است.

تصویر زیر را ببینید که پیکسل اصلی یا بدون AA در سمت چپ است و رنگ آن مثل همیشه تنها با یک نمونه در مرکز محاسبه می‌شود. پیکسل‌های دیگر نمونه‌ای از آنتی-الاسینگ به روش‌های مختلف هستند:

نمونه‌های عادی و پوششی در الگوریتم آنتی-الاسینگ EQAA

در روش MSAA تعداد نمونه‌ها ممکن است 2، 4 یا 8 مورد باشد.

نمونه‌های پوششی سریع‌تر و با منابع سخت‌افزار کمتر قابل استفاده و بررسی هستند.

اما در سطر پایین مشاهده می‌کنید که در کنار 2 نمونه‌ی عادی، 2 نمونه‌ی دیگر هم استفاده شده که کار این نمونه‌ها، بررسی قرار گرفتن پیکسل در چندضلعی‌های مختلف است. در محاسبه‌ی رنگ نهایی هم به درصد پوشش توسط چندضلعی‌ها استناد می‌شود و هم به نمونه‌های معمولی که شامل رنگ هستند. اما توجه کنید که نمونه‌های پوششی شامل رنگ نمی‌شوند و به همین علت حافظه‌ی کمی نیاز دارند. انویدیا در نام‌گذاری حالت‌های مختلف کمی اغراق کرده است. مثلاً کیفیت MSAA 8x را در برابر CSAA 8x قرار داده حال آنکه در حالت اول 8 نمونه داریم و در حالت دوم 4 نمونه‌ی عادی به اضافه‌ی 4 نمونه‌ی پوششی داریم. عملاً کیفیت CSAA 8x به MSAA 8x نزدیک است ولیکن در بهترین حالت‌ها هم یک درجه پایین‌تر است.

AMD تکنولوژی کاملاً مشابهی را در کارت گرافیک‌های رده اول سری 6000 یعنی HD 6950 و HD 6970 پیاده‌سازی کرد و نام آن را Enhanced Quality Anti-Aliasing گذاشت. البته در نام‌گذاری حالات مختلف مثل انویدیا عمل نکرد بلکه MSAA 4x را در رده‌ی EQAA 4x قرار داد.

جدول زیر مقایسه‌ی نام‌گذاری حالت‌های مختلف است که بسته به بازی و تلاش سازنده، ممکن است تمام حالت‌ها در منوی آپشن‌های بازی قابل انتخاب و استفاده باشند:

حالت‌های مختلف CSAA انویدیا یا معادل آن EQAA ای‌ام‌دی

ای‌ام‌دی

تعداد نمونه‌ی پوششی + عادی

انویدیا

2x

2+0

2x

2xEQ

2+2

-

4x

4+0

8x

4xEQ

4+4

8x

-

4+12

16x

8x

8+0

8xQ

8xEQ

8+8

16xQ

-

8+24

32x

با بررسی جدول فوق به یک قانون ساده می‌رسم:

وقتی ای‌ام‌دی از EQ استفاده کند، تعداد نمونه‌های پوششی و عادی برابر عددی ذکر شده است و اگر استفاده نکند، فقط نمونه‌های عادی مشابه MSAA استفاده شده است.

اما در مورد انویدیا اگر از Q استفاده نشود به این معنی است که عدد ذکر شده مثلاً 8x جمع هر دو نمونه است و به عبارتی یک درجه سریع‌تر و کم‌کیفیت‌تر از MSAA 8x است.

مقایسه‌ی MSAA، SSAA و CSAA یا EQAA

در دو تصویر متحرک زیر حالات مختلف از نظر کیفی مقایسه شده‌اند. بهتر است آن را دانلود و در اندازه‌ی بزرگ‌تر بررسی کنید:

مقایسه‌ی CSAA و MSAA و EQAA در حالت 4 نمونه‌ای

مقایسه‌ی CSAA و MSAA و EQAA در حالت 8 نمونه‌ای

جدول زیر مقایسه‌ای بین منابع مورد نیاز است. در روش SSAA همه چیز بیشتر می‌شود. یعنی نمونه‌های تهیه شده‌ی بافت و شیدر در حالت 16x، دقیقاً 16 برابر هستند. در روش مالتی-سمپل این دو مورد تغییری نمی‌کنند. در آخرین روش، تعداد نمونه‌های رنگ و عمق هم 4 برابر کمتر است چرا که در نمونه‌ی پوششی نیازی به ذخیره کردن داده‌های مربوط به رنگ نمونه‌ها نداریم.

منابع موردنیاز برای آنتی-الیاسینگ

در بخش آخر مقاله سرعت اجرای بازی Crysis 3 را با استفاده از روش‌های مختلف آنتی-الیاسینگ مورد بررسی قرار می‌دهم.

انویدیا و FXAA

روش FXAA این روزها در اغلب بازی‌ها استفاده می‌شود و سرعت فوق‌العاده‌ای هم دارد. در نسخه‌ی سوم اعلام شده که سرعت کار حدود 3 برابر است! با این حساب حتی ارزان‌ترین سیستم‌ها و کارت گرافیک‌ها هم بهتر است از این روش استفاده کنند.

در مورد کارکرد FXAA قبلاً توضیح دادم که دقیقاً شبیه MLAA ای‌ام‌دی است با این تفاوت که کاربرد بسیار گسترده‌ای پیدا کرده و البته بهینه‌تر طراحی شده است.

اشکال FXAA این است که تمام تصویر را با میان‌یابی پیکسل‌هایی که تضاد بالایی دارند، فیلتر می‌کند. به این ترتیب به نظر می‌رسد که تصویر کمی مات شده است. اما عملکرد آن همچون MLAA بسیار سریع است و حتی در برخی بازی‌ها کاهش سرعت اجرا کمتر از 5 درصد است!

TXAA روش جدیدی برای سری 600 با معماری کپلر

در معرفی روش‌های مختلف MSAA که ای‌ام‌دی در سال‌های پیش استفاده کرده به فیلتر خیمه‌ی بزرگ یا Wide Tent اشاره کردم که از پیکسل‌های مجاور هم نمونه تهیه می‌کرد. مورد دیگری که اشاره کردم، Temporal Filter یا فیلتر موقتی است که در کارت گرافیک X800 ای‌ام‌دی برای اولین بار معرفی شد.

انویدیا به فکر افتاده که برتری دو روش فوق را ترکیب کند به این صورت که MSAA را با برداری حرکتی ترکیب کرده است. البته برای ترکیب MSAA با بردار حرکتی، موتور گرافیکی بازی هم باید این امکان را فراهم کند. کارت گرافیک هم می‌بایست معماری کپلر و جدیدتر از آن را داشته باشد. مثلاً GTX 670 و GTX 680 از موارد حداقلی هستند.

روش کار این است که نمونه‌هایی از پیکسل و پیکسل‌های مجاور آن و نیز فریم قبلی تهیه می‌شود. کاربرد بردار حرکتی این است که ببینیم از کدام پیکسل فریم قبل باید نمونه تهیه شود و به عبارت ساده‌تر، لبه‌ی فعلی در فریم قبلی در کدام موقعیت مکانی حضور داشته است.

بخشی از کار TXAA همان MSAA است البته نه با 8 نمونه، بلکه با 2 یا 4 نمونه و به همین علت به صورت سخت‌افزاری و نسبتاً سریع انجام می‌شود. بخشی دیگر هم که به نمونه‌های فریم قبلی مربوط است، بار پردازشی سنگینی ندارد. به همین علت است که انویدیا می‌گوید 2x TXAA از نظر کیفیت شبیه MSAA 8x است اما از نظر سرعت به MSAA 2x نزدیک‌تر است و به بیان بهتر، سرعت بالایی دارد.

کیفیت و سرعت FXAA و TXAA

پیش‌تر در مورد MSAA به عنوان یک روش نسبتاً دقیق اشاره کردم. حالا دو روش FXAA و TXAA را روی میز داریم. سه روش فوق در بازی Crysis 3 قابل بررسی است چرا که هر سه حالت را دارد. کارت گرافیک من از محصولات AMD نیست و نمی‌توانم EQAA را هم مورد بررسی قرار دهم.

با توجه به حجم بالای تصاویر که به 4 مگابایت می‌رسید، از فرمت jpg استفاده کرده‌ام که قطعاً کمی افت کیفیت به همراه دارد ولیکن برای مقایسه‌ی تصاویر هیچ مشکلی ایجاد نمی‌کند. روی تصاویر کلیک کنید تا در ابعاد اصلی مقایسه کنید.

به سرعت اجرای بازی هم توجه کنید که البته بعداً در مورد آن بیشتر بررسی می‌کنم:

بازی کرایسیس 3 بدون آنتی-الیاسینگ

بازی کرایسیس 3 با آنتی-الیاسینگ FXAA

بازی کرایسیس 3 با آنتی-الیاسینگ MSAA 4x

بازی کرایسیس 3 با آنتی-الیاسینگ TXAA 2x

روش جالبی به نام SMAA و ترکیب سبک‌ها

در بازی کرایسیس 3 و چند بازی پیشرفته‌ی دیگر، وقتی به دنبال بهترین آنتی-الیاسینگ می‌گردیم، یک گزینه‌ی دیگر هم جلب توجه می‌کند که SMAA یا Enhanced Subpixel Morphological Anti-aliasing نام دارد. این روش تنها در چند بازی خاص دیده می‌شود و به انویدیا یا ای‌ام‌دی ارتباطی ندارد. در SMAA همان‌طور که از واژه‌ی مورفولاجیکال متوجه شده‌اید، از MLAA ای‌ام‌دی که قبلاً توضیح دادم استفاده شده ولیکن برای افزایش کیفیت و نیز کاهش مات شدن که در MLAA و FXAA دیدیم، ترکیبی از آنتی-الیاسینگ موقتی یا Temporal و MSAA استفاده شده است. هر دو روش را پیشتر توضیح دادم. با بررسی این روش‌های جالب فکر می‌کنم روشن است که SMAA بسیار توانمند ظاهر می‌شود. در حقیقت مزایای روش‌های مختلف در این روش وجود دارد.

شاید بگوئید TXAA انویدیا هم ترکیب فیلترینگ موقتی و MSAA است، پس دست کمی از این روش ندارد. اما در حقیقت MLAA تفاوت سرعت نسبتاً زیادی ایجاد می‌‎کند. MLAA مثل FXAA سریع و موثر است.

مجدداً سراغ یکی از شاهکارهای گرافیکی می‌روم، موتور گرافیکی ساخت Crytek به واقع عملکرد فوق‌العاده‌ای در بازسازی حیات‌وحش دارد. در این بازی حالت SMAA 1x به معنی استفاده از MLAA بهینه شده است. SMAA Medium یا SMAA 2Tx به معنی استفاده از فیلترینگ موقتی SSAA در ترکیب با MLAA است. در نهایت حالت SMAA 4x است که از MLAA به همراه فیلترینگ موقتی SSAA 2x و MSAA 2x است.

بازی کرایسیس 3 بدون آنتی-الیاسینگ

بازی کرایسیس 3 با آنتی-الیاسینگ SMAA 1x

بازی کرایسیس 3 با آنتی-الیاسینگ SMAA 2Tx

بازی کرایسیس 3 با آنتی-الیاسینگ SMAA 4x

در مجموع SMAA شفاف‌تر از FXAA یا TXAA انویدیاست. نسبت به MSAA هم سریع‌تر است و از این رو یکی از گزینه‌های مطلوب پس از FXAA به حساب می‌آید.

بررسی عملکرد روش‌های مختلف در کرایسیس 3

کرایسیس 3 را به عنوان یکی از کامل‌ترین بازی‌ها انتخاب کرده‌ام و می‌خواهم تأثیر استفاده از روش‌های متفاوت را بررسی کنم. بنچ‌مارک مشخص می‌کند که هر یک از روش‌های MSAA، TXAA و دو روش سریع‌تر FXAA و SMAA چه قدر سرعت اجرای بازی را کاهش می‌دهند. جالب است که دو حالت اول یعنی SMAA 1x و FXAA سرعت اجرا را ابداً کم نمی‌کنند! البته من برای اطمینان نتیجه‌ی تست یکی دیگر از مراجع تخصصی را هم بررسی کرده‌ام، ببینید:

سرعت اجرای بازی کرایسیس 3 با درجات مختلف آنتی-الیاسینگ

در رزولوشن فول‌ اچ‌دی سرعت دو روش FXAA و SMAA 1x بسیار نزدیک به حالت عادی یا بدون آنتی-الیاسینگ است. لذا استفاده از یکی از این دو روش عمیقاً توصیه می‌شود. اگر شفافیت و وضوح بیشتر برایتان مهم است، SMAA گزینه‌ی خوبی است اما اگر کمی مات شدن تصویر مهم نیست، FXAA را انتخاب کنید.

افت شدید از جایی شروع می‌شود که SMAA 4x یا MSAA 4x را فعال می‌کنیم. برای تنظیمات آنتی-الیاسینگی که پیشرفته‌تر و سنگین‌تر از SMAA یا نهایتاً MSAA 2x هستند، به کارت گرافیک خوبی نیاز داریم تا سرعت اجرا در حد کافی باشد.