سلام خدمت دوستان وبسایت CGSector،
خیلی خوشحالم که دوباره فضایی با پتانسیل بالا برای تمامی علاقمندان و هنرمندان کشورمان به زبان پارسی ایجاد شده و امیدوارم روز به روز شاهد فعالیت بیشتر و رشد این فضای های کارآمد باشیم.
و جا داره از تمام دست اندرکاران و زحمت کشان این وبسایت بخصوص مصطفی جان بابت به فراهم آوردن این فضا تشکر ویژه ای داشته باشم.
در این مقاله قصد داریم به بررسی وضعیت نسخهی بعدی موتور پر سر و صدا و معروف شرکت Epic Games بپردازیم و تکنولوژی و خدماتی که این نسخه جدید قصد ارائه دارد رو بررسی کنیم و به بعضی از سوال هایی که در رابطه با آنریل انجین پیش میاد پاسخ بدهیم.
اپیک گیمز با نسخهی چهارم این موتور بازیسازی ثابت کرد که فضای محدودهی کاری و هدف این موتور فراتر از حیطهی صنعت بازی های ویدئویی میباشد و به نوعی اپیک قصد دارد که بخش اعظمی از صنعت مدیا و سرگرمی رو به چنگ خود دربیاره و در حال حاضر شاهد این هستیم که آنریل انجین نه تنها در صنعت بازی سازی بلکه در صنعت فیلم و سریال، شبیه سازی صنعتی، شبیه سازی آموزشی، استفادهی درمانی، معماری و ... جایگاه مهمی پیدا کرده و این نشان دهنده ی انعطاف پذیری بالا، جاه طلبی به جا و اهداف بزرگ و درست برای این انجین توسط اپیک گیمز هست بهطوریکه دیگر حتی خود اپیک هم از عنوان "موتور بازی سازی" برای این انجین استفاده نمیکند.
سیستم داینامیک محاسبات نورپردازی جدید آنریل به نام Lumen که برای محاسبهی Global Illumination و Reflection ازش استفاده میشه و اپیک گیمز اون رو به عنوان راه حل پیشفرض در نظر گرفته و لومِن رو جایگزین سیستم نورپردازی و انعکاس Screen Space سابق کرده، خب ما در آنریل انجین حدود 3 الی 6 (!) نوع تکنیک برای نورپردازی صحنه داریم که هرکدام در جایگاه خود نسبت به نیاز و شرایط پروژه قابل استفاده هستند و اپیک گیمز بعضی از این تکنیک ها و تکنولوژی های مختلف روهم منسوخ شده اعلام کرده، مانند تکنولوژی Ray Tracing تحت DirectX که با همکاری شرکت انویدیا و مایکروسافت به نام DXR که برای اجرا محاسبات ریتریسینگ بصورت Real time بر روی کارت گرافیک های نسل جدید این شرکت معرفی شده بوده؛ که اما به دلایل مهمی استفاده از Ray Tracing خالص از طرف اپیک در نسخهی پنجم آنریل بصورت "منسوخ شده" اعلام شده که شخصا این موضوع باعث خوشحالی من شد !
اما چرا ؟
تکنیک نورپردازی و محاسبات ریتریسینگ که تقریبا سالیان زیادی هست استفاده از آن رو در موتور های رندرینگ آفلاین شاهد هستیم، نیاز به قدرت پردازشی بالایی برای محاسبهی نوع "ساده شده" رفتار نور بصورت فیزیکی بر محیط سه بعدی دارد و اگر بخواهیم مثالی از اون رو بزنیم، اولین بار شاهد استفاده از این تکنیک برای تمامی صحنه ها و بخش های مختلف در انیمیشن Cars در سال 2006 بودیم و از دلایل گرفتن این تصمیم سازندگان برای استفاده از ریتریسینگ برای رندر کل انیمیشن میشه به محاسبات انعکاس طبیعی سطوح ماشین ها، سایه های نرم و Ambient Occlusion و ... اشاره کرد که حتی تماشای این محصول پس از گذشت سالها در امروز هم بدلیل این امر بسیار لذت بخش بوده و به لحاظ بصری خیره کننده است و پس از اون با پیشرفت تکنولوژی و افزایش قدرت سخت افزاری، شاهد تبدیل شدن Ray Tracing به استاندارد صنعت سینما و انیمیشن برای محاسبات فیزیکی و واقعگرایانهی نور و رفتار آن در محیط سه بعدی شدیم و امروزه یکی از شرکت های بزرگ پرچمدار صنعت گرافیک رایانه ای یعنی NVIDIA قصد تعریف و اجرای این استاندارد رو برای پیاده سازی در صنعت بازی های ویدئویی و همچنین تصویر سازی سه بعدی بهصورت Real Time دارد.
به نظر شخصی بنده، نسبت به جایگاه توان قدرت سخت افزاری حال حاضر در جهان، انویدیا حدود 3 الی 4 سال زودتر از موعد برای عرضهی این تکنولوژی برای مصرف کنندگان دست بکار شده آن هم بیشتر به جهت تصاحب سهمِ بیشتر بازار قطعات، استفادهی تبلیغاتی، قدرتنمایی و ...
بیشتر توضیحاتی ارائه نمیکنم در این رابطه که از حوصلهی مبحث خارج هست، فقط نکته ی مهمی که لازم هست بدونیم این هست که محاسباتِ Ray tracing نیاز به قدرت سخت افزاری بالایی برای دستیابی به نتیجهی مطلوب دارد و با اینکه کارت های گرافیکی قدرتمند امروزه (مانند کارتهای RTX شرکت انویدیا و کارتهای سری 6000 شرکت AMD) که از DXR یا DirectX Raytracing پشتیبانی میکنند اما بصورت کامل توانایی اجرای محاسبات نورپردازی ریترسینگ رو بصورت Real Time را ندارند ! و به طور ساده تر میتوانیم بگوییم که این کارت ها مجهز به Denoiser های قوی ای هستند که با استفاده از تکنیک های متفاوت و قدرتمند و بهره گیری از هوش مصنوعی قادر به اجرای Ray Tracing بصورت Real Time به بهای کاهش کارایی یا Performance خروجی حتی تا 50 درصد هستند !
(از آنجایی که انویدیا مقداری در ضمینه ی هوش مصنوعی و تطبیقش با کارت های این شرکت جلوتر عمل کرده است شاهد عملکردی بهتر و سرعت بالاتر ریتریسینگ در بازی های ویدئویی امروزی تحت کارتهای انویدیا هستیم)
همین مسئله باعث میشود که با در نظر گرفتن این نوع محدودیت ها برای اجرای Real Time ِ ریتریسینگ، بین کیفیت بصری بازی های رایانه ای که از تکنیک های مختلف و بسیار بهینه ترِ پیش از Raytracing که برای محاسبات نوری محیط استفاده میکنند شاهد تفاوت فاحشی با استفاده از Raytracing نباشیم !
و با توجه به اینکه DXR نیازمند به قدرت محاسباتی بالایی است، توسعه دهنده ها و مصرف کننده ها تمایل زیادی به استفاده از این تکنیک (مگر برای قدرتنمایی بصورت بصری یا اثبات استفاده از جدیدترین تکنولوژی های روز در محصولاتشون آن هم برای درصد کمی از مصرف کننده ها و یا افزایش کیفیت بصری محدود) ندارند!
به همین دلیل در حال حاضر حتی خود شرکت انویدیا اذعان داشته بدلیل بار محاسباتی بالای این تکنولوژی به استفاده از نوع ساده تر و بهینه تر شده ی این محاسبات به اسم RTXGI روی آورده (کاری که به نظرم از اول باید صورت میگرفت)
و حال اپیک گیمز با معرفی لومن قصد دارد این حفره رو برای توسعه دهندگان که به بازار وسیعتر برای عرضه نیاز دارند و همچنین مصرف کنندگانی که فرصت ارتقاء سخت افزاری با توجه به بازار آشفتهی سخت افزار پیدا نکرده اند رو پرکند !
"لازم هست این نکتهی بسیار مهم رو ذکر کنم که تقریباً تمامی تکنولوژی های جدیدی که در آنریل انجین 5 تا به حال معرفی شده اند نسخه ی ارتقاء یافتهی تکنیک ها و راه حل های محاسباتی معرفی شدهی پیشین هست که با تکنولوژی های جدید گره خورده است"
به عنوان مثال تکنیک اصلی برای محاسبات نوری ای که با لومن برای نمایش و محاسبه ی نور محیط از آن استفاده میشود، تکنولوژی سابق Screen Space Global illumination یا به اختصار SSGI هست که با محاسبات Raytracing درآمیخته شده !
Screen Space برخلاف Raytracing بصورت Rasterization برای نمایش و محاسبات تصویر نمایان میشود (که بصورت ساده کار این تکنیک تبدیل محاسبات برداری به پیکسلی هست) یعنی تا زمانی که محدودهی پیکسلی مورد نظر ما بر روی تصویر در حال رندر شدن باشد محاسبات صورت میگیرد و نتیجه ی مورد نظر بر روی تصویر برای ما به نمایش در می آید، به عنوان مثال ساده تر برای ما زیاد پیش آمده که در فضای یک بازی ویدئوی در حال گشت و گذار بوده ایم که کرکتر بازی بروی آسفالت خیس محیطی در حال قدم زدن هست که شاهد انعکاس ساختمان بالای سطح خیس آسفالت درون انعکاس روی آسفالت هستیم، البته تا زمانی که ساختمان مورد نظر داخل کادری که در حال تماشا هستیم هم موجود باشد و به محض تغییر جهت دوربین و خروج ساختمان از تصویر شاهد ناپدید شدن ساختمان در انعکاس سطح خیس آسفالت هستیم ! به این معنی که محاسبات اضافه ای برای پشت دوربین و پشت آبجکت ها و عملا فضایی که پلیر درحال تماشای آن نباشد انجام نخواهد شد(!) :
درصورت خروج آبجکت از دید صفحه ی نمایش :
ولی همونطور که در تصویر زیر مشاهده میکنید در ریتریسینگ بدلیل اینکه محاسبات بصورت برداری و داخل انجین و توسط سخت افزار (ونه با تکیه به تصویر خروجی) انجام شده و نتیجه بر روی پیکسل به نمایش در میآید که شاهد این هستیم که سطح Reflective ِ ما بازتاب صحیحی را مانند موتور های رندر آفلاین بصورت فیزیکی در حالت Real Time به نمایش در میآورد :
حال SSGI هم به مانند SSR برای محاسبهی GI بصورت Real Time و تا حدودی واقعگرایانه نیاز به دریافت اطلاعات بصورت همزمان از بخشی که داخل تصویر موجود هست را دارد و مانند SSR آبجکتی که قرار هست تاثیر Bouncing Light را روی محیط اطراف اعمال کند با تغییر موقعیت دوربین و با خارج شدن از تصویری که پلیر در حال مشاهده میباشد تاثیر GI روی آبجکتای کناری از بین میرود و شاهد بازتابی نخواهیم بود و امکان دارد بخشی از آبجکت که مورد تابش مستقیم منبع نوری قرار نگرفته کاملا سیاه میشود :
در تصویر زیر مشاهده میفرمائید که درصورت خروج آبجکت دیوار کناری از دید نمایشگر که باعث تاریک شدن و عدم تاثیر نور و متریال روی آبجکت مستطیل (و اطراف محیط) میشود:
لومن برای این حل این مشکل همزمان از دو تکنیک SSGI و Raytracing استفاده مینماید به این معنی که وقتی SSGI سطح مورد نظر برای محاسبه ی GI در داخل تصویری که در حال نمایش است را نتواند پیدا کند، برای بخش مورد نظر از ریترسینگ خالص آن هم تحت نرم افزار استفاده مینماید (برعکس ریترسینگ DXR که Hardware Demand استو به کارت گرافیکی با پشتیبانی DXR نیازمند است) و اما در این حالت ما درصورت دسترسی به کارت گرافیکی که از DXR پشتیبانی میکند میتوانیم داخل آنریل تعیین کنیم که محاسبات بخش ریتریسینگِ لومن مانند روش سابق توسط هسته های مربوطه به محاسبات RT کارت گرافیک ما انجام شود ! اما تا اینجا این موضوع بصورت تئوریکال تعریف شد و در اصل روش محاسبه ی ریترسینگ در لومن مقداری پیچیده تر میباشد که در پست بعدی با توضیحات بیشتر خدمت شما دوستان خواهم رسید.
سپاس فروان از اینکه همراه من بودید و امیدوارم از خواندن این مبحث لذت برده باشید، لطفا نظراتتون رو حتما با من به اشتراک بگذارید .
همچنین اگر مبحث و یا نکته ی خاصی در رابطه با آنریل انجین 5 هم مورد نظرتون هست رو بفرمائید تا در پست های بعدی حتما بهش اشاره کنیم.
دوست دارم بدونم نظر شما در رابطه با Raytracing و پیاده سازی اون در صنعت ویدئو گیم چیست ؟
آیا ترجیح میدهید که سخت افزار های قوی تری به بازار برای اجرای قدرتمندتر این تکنولوژی ها عرضه بشن یا بهتر است با بهینه سازی و استفاده از تکنولوژی هوش مصنوعی به اجرای بهتر و سریعتر این تکنولوژی حال حاظر برای تمامی کاربران انجام شود ؟
دیدگاه خود را بنویسید