Anti-aliasing یا به اختصار AA یکی از داغ ترین موضوعات مورد بحث در بازی های کامپیوتری در یک دهه گذشته یا بیشتر بوده است ، از آنجایی که گیمر ها همیشه به دنبال آن بوده اند که بازی های آنها از بهترین کیفیت و شارپ ترین تصاویر بهره مند باشد .
یکی از ساده ترین و ابتدایی ترین ، اما در عین حال بی رحمانه ترین AA ها به نام Su.p.e.r Sampling که باعث افت پرفورمنس به مقدار قابل توجهی میشود تبدیل به چندین مورد های مختلف از انواع Anti-aliasing ها شده است.
Aliasing در اصل به دندانه ها و لبه ها و کنتراست های ناخواسته در بازی ها گفته میشود ، آرتیفکت های بصری که هماهنند لبه های پله میمانند .
Aliasing محصول تبدیل یکی عکس با کیفیت عالی به عکسی است که بتواند بر روی ماتریکسی از پیکسل ها به نمایش در آید ، مانند مانیتور شما و ... .
Resolution
هر عکسی ، از عکس های داخل مجلات و روزنامه ها و ... گرفته تا عکس روی یک صفحه مانیتور و دوربین و ... از بسیاری از نقطه های کوچکی تشکیل شده اند که همانند یک شبکه کنار هم قرار گرفته اند که به آنها پیکسل گفته میشود .
اگر یه ذره بین به دست بگیرید و روی یک عکس به اندازه ی کافی زوم کنید ، خواهید دید که پیکسل ها نمایان میشوند ، این ماهیت یک رزولیشن صفحه است .
یک مانیتور که رزولیشن خروجی آن 1600x1200 است ، دارای شبکه ایی از از پیکسل ها به اندازه ی 1600 پیکسل در طول و 1200 پیکسل در عرض میباشد که از ضرب 1600 در 1200 به عدد 1.92 میلیون میرسیم ، این بدان معنی است که حداکثر تعداد پیکسل هایی که این مانیتور میتواند در خود جای دهد 1.92 میلیون پیکسل است .
هر چه مانیتور بزرگتر باشد ، به رزولیشن بیشتری احتیاج دارد تا بتواند تصویری با حداکثر کیفیت را تحویل دهد .
اگر شما رزولیشن را در یک مانیتور بزرگ کاهش دهید ، پیکسل هایی که تصویر را می سازند مجبورنند برای اینکه ابعاد صفحه حفظ شود کشیده شوند و از حد معمول بزرگتر شوند که باعث میشود کیفیت پایین بیاید یا به اصطلاح تصویر پیکسل پیکسل شود .
این پیکسل پیکسل شدن صفحه را میتوانید با کشیدن یک خط مورب مستقیم بر روی یک عکس رزولیشن پایین به واضح مشاهده کنید ، به این اثر Aliasing می گویند .
هر چی رزولیشن بیشتر شود ، تعداد پیکسل هایی که باید توسط GPU رندر شود نیز بیشتر میشود که این خود باعث کاهش پرفورمنس می شود ، زیرا GPU باید در یک فریم میلیون ها پیکسل را رندر کند .
علاوه بر این هر چه رزولیشن بیشتر شود ، اجسام کوچکتر بر روی صفحه واضح تر میشوند یا اینکه حتی نمایان میشوند .
کاهش رزولیشن در یک صفحه باعث میشود که ابعاد صفحه به مقدار قابل توجهی کوچک شود که باعث میشود کیفیت صفحه بسیار پایین بیاید .
Anti-Aliasing
Anti-aliasing به طور خلاصه باعث می شود عکسی که GPU به شما به عنوان خروجی میدهد ، بدون نیاز به افزایش رزولیشن کیفیت بهتری داشته باشد که این عمل را با ترکیب لبه های تیز با استفاده از رنگ ها و کاهش خطوط نا هموار و لبه های تیز انجام میدهد .
ترکیب رنگ ها در اکثر اوقات باعث بوجود آمدن یک حالت تار در تصویر میشود ، تکنیک های AA های مختلف و پیشرفته برای این بوجود آمده اند که علاوه بر اینکه Aliasing در تصویر را به حداقل برسانند ، حالت تاری صفحه را نیز کاهش بدهند و به حداقل ممکن یا صفر برسانند .
در خطوط منحنی و یا نقاط بدون AA ، پیکسل های موجود بر روی مانیتور باعث بوجود آمدن یک حالت تناقض بصری در لبه های تیز اشیا می شوند .
زمانی که GPU وظیفه ی رندر کردن یک عکس را بر عهده بگیرد ، تنها یک پیکسل را رنگ بندی می کند ، اگر خطی منحنی از میان انبود پیکسل ها بگذرد بیش از نیمی از فضا را اشغال می کند که باعث بوجود آمدن لبه های تیز و دندانه دندانه می شود ، در حالی که چشم ما در حالت عادی انتظار دارد آن خط صاف باشد .
برای جلوگیری از بوجود آمدن این حالت و صاف کردن لبه های تیز از فرآیندی به نام نمونه گیری ( Sampling ) استفاده میشود .
اساسآ دو راه اصلی و ساده وجود دارد که بوسیله ی آن می توان به اثرات Anti-aliasing دست یافت :
1 . افزایش نرخ نمونه (Sample Rate)
2 . محو کردن یا تار کردن لبه ها که به آن Post Processing یا Post AA نیز می گویند .
در زیر به چند تا از تکنیک های مختلف AA که در اکثر بازی های امروزی دیده می شوند و همچینین طریقه ی کار کردن آنها اشاره می شود .
FSAA/SSAA
از ساده ترین روش های افزایش سمپل ریت می توان به (Full Screen AA (FSAA و (Sup.e.r Sampling AA (SSAA اشاره کرد . علاوه بر این ، این تکنیک ها به علت سنگین بودن بسیار زیاد و کاهش شدید کارایی و فریم قدیمی شده است و به ندرت مورد استفاده قرار میگیرد ، اما ناگفته نماند که این تکنیک های AA بهترین نتیجه را در بین دیگر تکنیک ها دارند .
در هر دو تکنیک ، مقدر نمونه های استفاده شده از پیکسل ها افزایش پیدا می کند و رنگ هر پیکسل با استفاده از مقادیر داخل نمونه ها محاسبه می شود که به طور موثر به تصویر Upscaled می گویند ، یعنی چهار برابر اندازه واقعی آن تصویر و رنگ هر پیکسل از تصویر افزایش یافته بسته به چهار پیکسل اطراف آن تغییر می کند .
سپس تصویر در قسمت خروجی به رزولیشن اصلی خود بر می گردد و یک تصویر صاف و واضح تحویل می دهد .
در حالت 2xAA تصویر دو برابر حالت عادی خود می شود و در حالت 4xAA چهار برابر اندازه و ... .
این تکنیک ها بیشتر به درد کسانی می خورد که از چند کارت گرافیک در حالت sli/crossfire استفاده می کنند .
MSAA
تکنیک Multi Sampling Anti-aliasing یا به اختصار MSAA در زمان DirectX 8 معرفی شد و توانست به نسبت تکنیک هایی همچون SSAA باعث افزایش کارایی به مقدار قابل توجهی شود .
در این تکنیک نیز مقدار نمونه هایی استفاده شده از پیکسل ها در یک فریم افزایش پیدا می کند ، با این تفاوت که این تکنیک تنها لبه های اشیا و اجسام چند ضلعی در یک تصویر را شناسایی می کند و تنها مقدار نمونه ها در آن نقاط افزایش پیدا می کنند ، بر خلاف تکنیک SSAA که مقدار نمونه ها در کل تصویر افزایش پیدا می کنند که همین امر باعث شده است که مقدار کاهش کارایی و فریم در این تکنیک به نسبت تکنیک های Brute Force به مقدار قابل توجهی کاهش پیدا کند .
تنها ایرادی که به این تکنیک می توان گرفت این است که کیفیت بافت های آلفا ( Alpha Textures ) در این تکنیک دست نخورده باقی می مانند ، این بدان معنی است که اشیاء شفاف در یک عکس از مزایای AA محروم می مانند .
MLAA/FXAA
Morphological Anti-Aliasing یا به اختصار MLAA و Fast Approximate Anti-Aliasing یا به اختصار FXAA توسط کمپانی های AMD و nVIDIA معرفی و توسعه یافتند تا جایگزین 4xMSAA شوند .
این تکنیک ها کنتراست های موجود در یک فریم را شناسایی می کنند و سپس آنها را تار می کنند که به مقدار قابل توجهی باعث کاهش لبه های تیز و ... در یک تصویر می شوند ، علاوه بر آن بافت های آلفای موجود در تصویر نیز تحت تاثیر این تکنیک قرار می گیرند .
بزرگترین ایراد این تکنیک ها این است که چون تمام تصویر تار می شود ، یک حالت ماتی در تصویر به نسبت تکنیک های دیگر بوجود میاید .
SMAA
Enhanced Subpixel Morphological Anti-Aliasing یا به اختصار SMAA یک تکنیک Post Processing است که بر اساس تکنیک های MLAA و FXAA توسعه یافته است با این تفاوت که این تکنیک همانند تکنیک MSAA اجسام تیز و چند ضلعی را داخل یک تصویر شناسایی می کند .
این تکنیک در بین تکنیک های MSAA و FXAA/MLAA قرار می گیرد .
در تکنیک MSAA لبه های تیز و اجسام چند ضلعی تحت تاثیر AA قرار می گیرند اما بافت های آلفا و برخی دیگر از بافت ها دست نخورده باقی می مانند ، در تکنیک های FXAA/MLAA علاوه بر لبه های تیز و ... ، بافت ها ی آلفا و برخی دیگر بافت ها نیز تحت تاثیر قرار می گیرند اما حالت ماتی که در تصویر به وجود می آید بعضی اوقات بیش از حد می شود ، اما تکنیک SMAA علاوه بر شناسایی لبه های تیز و اجسام چند ضلعی و نرم تر کردن آنها ، بافت ها را نیز تحت تاثیر قرار می دهد و حالت ماتی که در تصویر بوجود می آید به نسبت FXAA/MLAA بسیار کمتر است .
ترکیب تکنیک های MSAA و SMAA با یکدیگر بهترین نتیجه را می دهد و یک تصویر شارپ با حداکثر کیفیت به عنوان خروجی تحویل می دهد ، اما علاوه بر آن افت کارایی افزایش پیدا می کند و به سخت افزار قوی نیاز دارد .
در تصویر بالا تکنیک SMAA را مشاهده می کنید که در قسمت بالا تکنیک در حالت معمولی را نشان می دهد و در قسمت پایین همان تکنیک را مشاهده می کنید ، اما با بزرگ نمایی بیشتر .
در کارت های گرافیک جدید مقدار حافظه کارت گرافیک ارتباط مستقیمی با مقدار AA در بازی ها دارد ، اما این نکته باید گفته شود که کاهش کارایی و فریم در یک بازی با بازی دیگر می تواند بسیار متفاوت باشد .
تکنیک های AA بسیار زیاد می باشند که در این نوشته به چند عدد از مهمترین و پر کاربرد ترین تکنیک ها که در اکثر بازی ها مورد استفاده قرار می گیرند اشاره شد .
با تشکر از همه ی عزیزان
برگرفته شده از سایت : Game-Debate.com