چرا رندر نرمافزاری در بازیهای کلاسیک DOS هنوز جذابیت فنی و بصری دارد؟ — I love software rendering
خلاصه
رندر نرمافزاری که در آن CPU مستقیماً تمام فریمها را محاسبه و رسم میکند، جلوه بصری خاص و بافتهای تفکیکشدهای دارد که کارتهای گرافیک اولیه با فیلترهای تارکننده آن را از بین میبردند. اکنون اجرای این بازیها روی پردازندههای قدرتمند در رزولوشنهای بالا، بعد تازهای به این سبک گرافیکی داده است.
در دهه ۱۹۹۰ میلادی و پیش از استاندارد شدن کارتهای شتابدهنده سهبعدی، بازیهای جریانساز تاریخ بازیسازی مانند Doom، Quake و Duke Nukem 3D با موتورهای رندر نرمافزاری (Software Rendering) طراحی شدند. در این رویکرد، هیچ تراشه گرافیکی مستقلی برای رندر سهبعدی وجود نداشت؛ بلکه این پردازنده مرکزی (CPU) بود که با اجرای الگوریتمهای شطرنجیسازی (Rasterization) تکتک پیکسلها را در حافظه ویدئویی مینوشت. بازیکنان در آن دوران یا باید بازی را با رزولوشنهای بسیار پایینی مثل 320x200 تحمل میکردند یا با خرید کارتهایی نظیر 3dfx Voodoo به نسخههای شتابیافته کوچ میکردند.
اما امروزه گزینه سومی شکل گرفته است: اجرای کدهای رندر نرمافزاری کلاسیک روی پردازندههای مدرن در رزولوشنهای بالایی مانند 800x600 یا فراتر از آن؛ کاری که سختافزارهای دهه ۹۰ توان پردازش آن را نداشتند.
ویژگیهای بصری رندر نرمافزاری
تصویر حاصل از رندر نرمافزاری تفاوت چشمگیری با کارتهای شتابدهنده اولیه دارد که این تمایز در چند ویژگی فنی خلاصه میشود:
- بافتهای شفاف و پیکسلی (Crisp Textures): شتابدهندههای اولیه مانند Voodoo از فیلترینگ دوخطی (Bilinear Filtering) برای حذف لبههای دندانهدار استفاده میکردند که از دید مخاطبان امروزی، تصویر را مات و کدر میکند. در مقابل، رندرهای نرمافزاری از نمونهبرداری نقطهای پیکسلبهپیکسل بهره میبردند که لبههای هر تکسل (Texel) را شارپ و مشخص نگه میدارد.
- پالت رنگی ۲۵۶ تایی و جدولهای جستجو (LUT): نورپردازی در بازیهای آن دوره بهصورت ۸ بیتی و از طریق جدولهای Lookup Table انجام میشد. کاهش تدریجی نور بهجای ایجاد گرادیان ملایم، پدیدهای به نام Colour Banding تولید میکرد. اگرچه این پدیده از نظر تئوری یک نقص فنی بود، اما جلوهای کدر، خشن و اصیل به آثاری مانند Blood میبخشید که طراحان بازی بر پایه آن دنیاسازی کرده بودند.
همانطور که برخی کاربران در مباحث Hacker News اشاره کردهاند، پیش از پیدایش پایپلاینهای قابلبرنامهنویسی در دوران GeForce 3 (سال ۲۰۰۱)، CPU عملاً نقش یک سایهزن (Pixel Shader) همهمنظوره را داشت و میتوانست افکتهای الگوریتمی منحصربهفردی را اجرا کند که شتابدهندههای اولیه حتی قادر به رندر آن نبودند.
چالش مقیاسپذیری پردازنده
بار پردازشی رندر نرمافزاری با افزایش رزولوشن، رابطه خطی مستقیمی با تعداد پیکسلها دارد. اگرچه پردازندهای مدرن میتواند Quake را در رزولوشن 800x600 با نرخ ۶۰ فریم ثابت بر ثانیه اجرا کند، اما بازیهای متأخر مبتنی بر موتور Build (مثل Shadow Warrior) به دلیل معماری تکرشتهای خود، حتی سنگینترین پردازندههای چند گیگاهرتزی را در رزولوشنهای VESA بالا مانند 1600x1200 زیر فشار شدید قرار میدهند.
اجرای بومی در برابر پورتهای مدرن
اگرچه پورتهای مدرن سورسکد مانند پروژه Woof موتور رندر نرمافزاری Doom را به زیبایی با معماری مدرن و کتابخانههایی مانند SDL3 هماهنگ کردهاند، اجرای مستقیم کدهای اصلی DOS بر روی سختافزار واقعی لطف دیگری دارد. با این حال، استفاده از سختافزارهای امروزی برای اجرای مستقیم DOS چالشهای خاص خود را دارد که مهمترین آن نبود کارتهای صوتی کلاسیک Sound Blaster است؛ مشکلی که نیازمند راهکارهای نرمافزاری مانند شبیهساز SBEMU روی بردهای جدید خواهد بود.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل