کلا این بحث کامپیوتر یه جوریه که هر کی واردش میشه و یاد میگیره دو تا بازی نصب کنه و چهارتا پیچ باز کنه ببنده و یه بنچ مارک با 3d mark بگیره ادعای خدایی توش پیدا میکنه و دیگه هیچ خدایی رو بنده نمیشه و ادعای کنسول سازی هم میکنه و فکر میکنه اون همه مغز و آدم تحصیل کرده فقط لنگ خوندن دوتا Specific sheet روی یه چیپ بودن تا کنسول طراحی کنن!!
یه بحث خیلی خیلی مهم تو ریل تایم رندرینگ هست که بهش میگن Draw calls.
Draw calls دستوراتی هست که CPU به GPU میده برای رسم چند ضلعی و مکان قرار گیریش روی صفحه نمایش به عبارتی دستور میده که GPU مجموعه ای از چند ضلعی ها رو با Shader یا مولفه های خاص گرافیکی مثل درجه آلفا و ... که به عهده GPU هست کجا و چه زمانی رسم کنه.
گیم با گرافیک فقط به داشتن رزولوشن بالاتر و تکسچر عمیقتر ختم نمیشه (نمونش TLOU) توی کنسول به خاطر داشتن معماری اختصاصی و حذف خیلی از استانداردهایی که برای ایجاد Compatibility بین قطعات PC نیاز هست Draw calls توی یه بازه زمانی نسبتا طولانی فوق العاده بالاتر از PC هست و معمولا بعد از گذشت 3-4 سال قابل قیاس میشن ، برای همینه که با گذشت 7-8 سال از عمر کنسولهای فعلی هنوز قابلیت اجرای Backbone یک بازی مثل Crysis 3 رو دارن ولی PC ای با چند برابر قدرت خام نسبت به یک کنسول که تو سال 2005 عرضه شده اصلا اون بازی رو اجرا نمیکنه.
چیزی که تو PC Gaming اتفاق میوفته اینه که شما میری یه کارت گرون قیمت میخری ولی قدرت اون کارت صرف تکسچرهای عمیقتر و رزولوشن بالاتر میشه و تو عمل هیچ کامپلکسیتی خاصی تو بازی ایجاد نمیشه! چون توان هندل کردن حرکت پالیگونها به دلیل Draw calls ضعیف روی PC همیشه بازیهای PC رو از پیشرفت واقعی محروم میکنه حتی وقتی یه CPU فوق العاده قوی و یک GPU فوق العاده قوی دارین به دلیل معماری PC توان کارت گرافیک و CPU بلا استفاده میمونه و صرف داشتن رزولوشن بهتر و تکسچرهای عمیقتر میشه ولی کلیت بازی هیچ جهش قابل لمسی توش دیده نمیشه.
مثلا روی یه PC شما یه کاراکتر مدل با کیفیت درست میکنید و تکسچرهای عمیق و رندر رزولوشن بالا میگیرن (صرفا توان GPU استفاده میشه چون مجموعه ای از پالیگنها با یک Draw calls رسم شدن) همین که اولین Event یا رویداد اتفاق میوفته و کاراکتر شروع به حرکت میکنه CPU باید مجددا به GPU دستور رسم بده ، به عنوان مثال این کاراکتر تیر خورده و باید فلان پالیگن برای رندر مجدد تو اولین فریم انیمیشن تو مختصات جدید قرار بگیره و الی آخر... (رسم تعداد زیادی پالیگن با Draw calls بالا برای پالیگنها) این رویداد CPU Bound هست ...
روی PC ولی اتفاق دیگه ای میوفته حتی با پیشرفت CPU معماری PC به شکلی هست که ارتباط مستقیم ایده آلی بین CPU و GPU برقرار نمیشه CPU رم و آدرس دهی خودش رو داره GPU هم رم و آدرس دهی خودش رو داره همین مسئله Draw calls رو به شدت پایین میاره... چون داده هایی که CPU روی حافظه مینویسه باید از رم اصلی کپی بشه روی حافظه GPU و مجددا خونده بشه و به دستورات عمل بشه!
اوایل عرضه کنسولهای بازی Draw calls بالایی که به واسطه معماری خاص کنسولها ایجاد میشه این توان رو ایجاد میکنه که بازیهای خاص کنسولی حتی با وجود رزولوشن کمتر یا تکسچرهای کم عمق تر توانایی ایجاد نوآوری های گرافیکی داشته باشن.
تو یه کنسول بازی خیلی از پارامترهای وابسته به GPU از اول مشخصه ، مثلا X مقدار حداکثر رزولوشن خروجی هست و Y مقدار حداکثر پیکسلهایی هست که در یک ثانیه رسم میشه و Z مقدار حداکثر پالیگنی هست در یک ثانیه رسم میشه اینها GPU Bound هستن.
ولی اون چیزی که یه بازی رو به مرور زمان بهتر میکنه به همون عامل Draw calls وابستگی مستقیمی داره که باعث میشه محیط پویا تر باشه یا انیمیشنها بهتر و با فریم و جزئیات بیشتری نمایش داده بشن و خلاصه ستون فقرات یک بازی که پل بین گرافیک و روایت داستان و گیم پلی هست از اینجا شروع میشه.
روی PC شما کارت جدید میخرین همیشه رزولوشن و عمق تکسچرها و فریم ریت رو بالاتر میبرید چون سرعت اجرا دستورات رو بالا میبرین ولی همیشه دارید یک طرف قضیه رو تقویت میکنید ولی مسئله Draw calls سر جای خودش باقی میمونه.
مشکل PC Gaming همیشه همین بوده که زمانی تو اجرای Backbone بازی از کنسول جلو میوفته که اواخر نسل کنسولها و مترادف با ظهور نسل جدید هست.
البته AMD قصد داره با ارائه API منتل این مشکل رو دست کم روی کارتهای ساخت شرکت خودش با معماری GCN که کنسولها ازش استفاده میکنن حل کنه ولی اون هم مشکل عدم سازگاری داره و فقط یک سری سخت افزار خاص رو پشتیبانی میکنه که ساخت خود AMD هستن برای همین یک PC با کارتی مثل R9290 که آخرین کارت AMD هست با وجود قدرت خام چندین برابر بالاتر از کنسولها با استفاده از این API میتونه به 70-80 درصد سرعت Draw calls کنسولهای نسل جدید دست پیدا کنه.
نمونش طبق گفته یکی از سازنده های بازی برای PC:
pCARS developer: Mantle will offer 70-80% of next-gen console performance
However, there isn’t any doubt in my mind that Mantle will solve the poor implementation of multi-threaded rendering in the PC space, more so for AMD since they don’t even support Driver Command Lists in DirectX! That alone will get them to 70-80% of next-gen console performance in terms of submitting draw calls to the hardware. When DICE reveal their Mantle version in mid November, you’ll see scalability that’s unheard of in the PC space e.g. some 6 or 8 core demo with submission performance many times that of DX, with lots of pretty charts.
pCARS developer: Mantle will offer 70-80% of next-gen console performance (regarding draw calls) | DSOGaming | The Dark Side Of Gaming
آخرین مصاحبه Cevat Yerli با یوروگیمر درباره نزدیک شدن معماری PC به کنسولهای بازی از نگاه جان کارمک و بهبود وضعیت PC Gaming:
Digital Foundry: In his QuakeCon keynote, John Carmack talked about the potential of giving the GPU access to the complete address space of the consoles' memory and suggested that something needed to be done on PC. What's your view on this
?
Cevat Yerli: In an ideal world, the GPU and CPU would be accessing and sharing the complete memory address space to really close the gap between PC and console gaming. Besides closing the gap, it would simplify many developments in graphics, in compute and also generally speeding up many operations which are data heavy.
Crytek: the next generation • Interviews • Eurogamer.net
خلاصه PC تا زمانیکه درگیر مسئله معماری متعارف هست همین مشکل رو کم و بیش داره مگر اینکه همه کمپانیهای سازنده قطعات و در راسشون Intel بشینن با بقیه توافق کنن که باید این معماری عوض بشه که بعید میدونم حالا حالاها این اتفاق بیوفته نمونش درخواستی که اپیک گیمز از اینتل کرده بود و اینتل گفته بود ما به چیزی که داریم راضی هستیم!
ارائه یه بازی خوب از نظر گرافیکی فقط به رزولوشن بالاتر و تکسچر عمیقتر و فریم بهتر ختم نمیشه مجموعا اون چیزی که کمک میکنه تا شما تو هر فریم بتونید پیچیدگی بیشتری با این پیکسلها ایجاد کنید و چیزایی واقعی تری خلق کنید این هست که هر لحظه مشخص کنید این پیکسلها کجا و به چه شکلی قرار بگیرن و این میشه گرافیک نهایی ، حتی اگر تو رزولوشن پایین تر و یا با عمق تکسچر و *****ینگ ضعیفتری باشه.