خبر

  • تک بورد - نحوه ارائه رندر بازی سه بعدی: ضد نام مستعار

    نحوه ارائه رندر بازی سه بعدی: ضد نام مستعار
    10 روز و 20 ساعت قبل

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

    از آنجایی که ما فقط قصد داریم غواصی کنیم تا ببینیم همه اینها چگونه کار می کنند ، اگر تازه وارد کل برنامه شبانگ هستید ، ممکن است بخواهید 3D 3D Rendering بازی ما را بررسی کنید . پس از آن ، می توانید در مقالات زیر با عناصر پیچیده تری در ارائه آشنا شوید.

    .thisIndex {font-size: 19px؛ ارتفاع خط: 1.8؛ font-weight: پررنگ؛ حاشیه: 5px 0 50px؛ } .thisIndex a: hover {box-shadow: inset 0 -4px 0 # dfdfd0؛ padding-bottom: 4px؛ انتقال: همه .15s سهولت در ورودی؛} .thisIndex .desccc {font-size: 0.75em؛ padding-left: 65px؛ margin-top: -3px؛ شناور به سمت چپ؛ } #content p.small، #content p.byline {font-size: 0.8em؛ } فقط صفحه نمایشmedia و (حداکثر عرض: 760px) {.thisIndex {line-height: 1.4؛ } .thisIndex .desccc {padding: 0؛ نمایش: بلوک؛ حاشیه: 5px 0 22px؛ عرض: 100٪ }} قسمت 0: رندر بازی 3D 101 ساخت گرافیک توضیح داده شده قسمت 1: رندر بازی سه بعدی: پردازش Vertex با یک غوطه وری عمیق تر در جهان گرافیک 3D قسمت 2: ارائه بازی 3D: Rasterization و Ray Tracing از 3D به Flat 2D ، POV و روشنایی قسمت 3: رندر بازی سه بعدی: Texturing Bilinear، Trilinear، Anisotropic Filtering، Bump Mapping، More Part 4: 3D 3D Rendering Game: Lighting and Shadows The Math of Lighting، SSR، Ambient Occlusion، Shadow Mapping Part 5: 3D Game Rendering: Anti-Aliasing SSAA، MSAA، FXAA، TAA و دیگران در حال انجام بازی سرزنش

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

    از آنجا که نسخه پیکسل شده خط دیگر یک خط واقعی نیست ، انتقال آن یا قرار دادن آن در کنار اشکال دیگر باعث ایجاد هزاران عجیب و غریب تصویری می شود ، همان چیزی است که ما به آن اشاره می کنیم با اصطلاح "aliasing "

    ممکن است از خود بپرسید که آیا این فرایند واقعاً ضروری است یا خیر ، از این واقعیت ناشی شده است که تصویر ارائه شده باید روی صفحه نمایش داده شود. مهم نیست که از لوله اشعه کاتد (CRT) ، صفحه نمایش کریستال مایع (LCD) یا صفحه پلاسما ساخته شده باشد ، این صفحه با استفاده از مجموعه ای از عناصر رنگی تصویر را ایجاد می کند.

    وضوح 10 7 7 پیکسل برای نمایش این مثلث بدون نام مستعار کاملاً کافی نیست

    برخی از سیگنال ها به مرور تغییر می کنند ، به جای مکان و در اینجا نیز نام مستعار می گیرید ، هنگام نمونه گیری در فواصل زمانی مشخص. به عنوان مثال ، تبدیل یک قطعه صوتی آنالوگ به یک دیجیتال شامل اندازه گیری سطح صدا در هر کسری از ثانیه است (در مورد ، مثلاً ، CD صوتی هر 0.02 میلی ثانیه).

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

    در دنیای فیلم ها ، این منجر به حرکت عجیب و غریب می شود ، مانند چرخ های ماشین که در جهت مخالف عنوان خودرو چرخانده می شود. وقتی گرافیک سه بعدی صحنه به اندازه کافی بالا نباشد که بتواند حرکت اجسام و کاراکترها را کاملاً نمایان کند ، در گرافیک های سه بعدی ظاهر می شود ، و منجر به تار یا دندانه دار شدن لبه ها می شود ، که مورد بعدی با نام مستعار فضایی بیشتر می شود.

    در حالی که تکنیک های استفاده شده برای مقابله با این مشکلات در مجموع به عنوان ضد الگوریتم شناخته می شوند (به اختصار AA) ، آنچه برای فیلم ها مورد استفاده قرار می گیرد برای یک بازی سه بعدی کاملا متفاوت است. در حقیقت ، برای روش دوم ، روشهای زیادی وجود دارد که از انواع مختلفی با نامهای مختلف استفاده می شود. اما قبل از اینکه فرض کلی الگوریتم های متداول را مرور کنیم ، اجازه دهید وضوح قاب و نرخ فریم را در نظر بگیریم.

    چرا؟ خوب ، اگر هر دو بسیار بالا بودند ، مطمئناً نام مستعار مسئله ای نخواهد بود. اگر از یک معیار قدیمی ، مانند UL 's 3DMark03 استفاده کنیم و آن را روی یک سیستم مدرن اجرا کنیم ، پس می توانیم فقط روی نام مستعار فضایی تمرکز کنیم.

    https://techbord.com نحوه ارائه بازی سه بعدی: ضد Aliasing

    تصویر بالا ، از اولین بال های تست خشم ، با وضوح 1280 7 720 پیکسل انجام شد. چهارده سال پیش ، هنگامی که ATI Radeon 9800 XT و Nvidia 's GeForce FX 5900 Ultra بهترین کارت گرافیک موجود بودند ، بزرگترین مانیتورهای آن زمان در حدود 1600 1200 1200 بود - بنابراین آنچه که ما استفاده می کنیم در اینجا یک رزولوشن متوسط ​​به پایین در نظر گرفته شده است (شبیه 1080p امروز).

    https: / /techbord.com نحوه ارائه رندر بازی های سه بعدی: ضد Aliasing

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

    میزان نسبتاً پایین نمونه گیری از رستر در اینجا مقصر است ، بنابراین واضح ترین راه حل افزایش آن است. اجازه دهید دوباره همان صحنه را با کیفیت 4K (3840 21 2160 پیکسل) مشاهده کنیم.

    https://techbord.com نحوه عملکرد ارائه بازی 3D: ضد Aliasing از بالا به پایین ، دنباله FXAA - پیکسل ها را در لبه ها پیدا کنید ، جهت را تعیین کنید ، آنها را تغییر دهید ، تصویر نهایی را تار کنید.

    برای آن دسته از پیکسل هایی که این آزمون را پشت سر می گذارند ، آنها یک بررسی بیشتر برای تعیین جهت لبه بعد از مشخص شدن این موضوع ، از جفت پیکسل (در دمای 90 درجه تا لبه) که بیشترین اختلاف روشنایی را دارد برای اسکن در امتداد لبه ، برای جستجوی انتهای آن استفاده می شود. این وقتی مشخص می شود که میزان روشنایی متوسط ​​این جفت پیکسل به اندازه کافی تغییر کرده باشد.

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

    FXAA دارای مزایای جدی نسبت به SSAA و MSAA است. اول از همه ، این یک کد ساده است که تقریباً هر GPU می تواند آن را انجام دهد. حتی مدل های کم هزینه نیز می توانند فقط در چند میلی ثانیه روند روحی را از بین ببرند.

    ثانیا ، آن را ضد نام مستعار تمام لبه ها ، نه فقط محیط اشکال است. به عنوان مثال ، بافت هایی با شفافیت (که اغلب برای دود ، آوار و شاخ و برگ استفاده می شوند) صاف می شوند ، چیزی که MSAA نمی تواند انجام دهد.

    https://techbord.com نحوه ارائه بازی سه بعدی: ضد Aliasing

    بدون AA (سمت چپ) در مقابل FXAA ( درست) - توجه کنید که درختان و آیلرون های بال بسیار نرم تر به نظر می رسند

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

    دقت روش این نیست؟ به همان خوبی که در SSAA و MSAA وجود ندارد ، به دلیل جلب نکردن جزئیات زیر پیکسل - در واقع فقط یک فیلتر فانتزی است و می تواند منجر به ایجاد برخی بافت های ظاهری شود. اما هنگامی که استفاده از آن بسیار ارزان است و نتایج قابل قبولی را به همراه دارد ، می توانید ببینید که چرا از FXAA هنوز 12 سال استفاده می شود - البته کاملاً تجدید نظر شده است.

    الگوریتم های لبه یاب تمام صفحه دیگر نیز وجود دارد ، مشابه انویدیا. ضد الگوسازی مورفولوژیکی (MLAA) ، ساخته شده توسط اینتل ، الهام بخش FXAA بود. بیشتر توسط توسعه دهنده بازی Crytek و دانشگاه ساراگوسا در اسپانیا اصلاح شد و تحت نام Enhanced Sub-pixel MLAA (به اختصار SMAA) قرار گرفت.

    بهترین جنبه در مورد همه اینها این است که برخلاف SSAA و MSAA ، این برنامه ها می توانند به طور مداوم به روز شده و توسط برنامه نویسان اصلاح شوند ، و آنها را به بهترین وجهی برای برنامه ها یا بازی هایی که می سازند ، تغییر دهند.

    ضد الگوریتم زمانی (TAA)

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

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

    https://techbord.com نحوه ارائه بازی سه بعدی: ضد Aliasing

    فرضیه اصلی ضد الگوسازی زمانی. اعتبار تصویر: یانگ

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

    اگر همه اینها باشد ، الگوریتم نسبتاً بی فایده خواهد بود - به عنوان مثال ، اگر تغییری بین فریم ها ، سپس ترکیب هیچ مشکلی را حل نمی کند. بنابراین برای حل این مسئله ، ابتدا هر فریم با یک دوربین کوچک (با عنوان لرزش زیر پیکسل) با دوربین جابجا می شود. از موقعیت های خفیف تغییر یافته مکان های پیکسل برای نمونه گیری از بافر تاریخ استفاده می شود و سپس برای تکمیل پردازش فریم ، jitter برداشته می شود.

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

     https://techbord.com نحوه ارائه بازی سه بعدی: ضد Aliasing

    رایج ترین الگوریتم TAA. اعتبار تصویر: یانگ

    Temporal AA همچنین می تواند باعث ایجاد تیرگی بیش از حد شود ، همچنین مسئله ای به نام شبح ، جایی که به نظر می رسد لبه های اجسام متحرک به جای نرم شدن لکه دارند ، ایجاد می شود.

    یک روش متداول که برای دور زدن این مسئله استفاده می شود شامل استفاده از سایه بان محاسبه برای محاسبه بردارهای حرکت اجسام ، ذخیره اطلاعات در حافظه (بافر سرعت) و سپس مقایسه سرعت نسبی پیکسل فعلی با نمونه های نمونه شده است - اگر آنها "به طور محسوسی متفاوت است ، سپس نمونه تاریخ رد می شود.

    علاوه بر استفاده از مقادیر سرعت ، بیشتر پیاده سازی های TAA یک فرآیند تأیید بیشتر بر روی نمونه های تاریخ انجام می دهند - این از استفاده مقادیر از فریم های قبلی جلوگیری می کند که دیگر در قاب فعلی مهم نیستند (به عنوان مثال می توانند در پشت یک شی moved منتقل شده پنهان شوند). این روش به طور معمول از یک جعبه محدود تراز محور استفاده می کند ، جایی که محورها رنگی بودن بافر تاریخ را ترسیم می کنند و هر رنگی خارج از این محدوده ها را رد می کند.

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





خبرهای دیگر از امکانات