|
|
|
|
I R A N S I M ® All about aviation and flight simulation in Iran |
![]() |
هرگونه برداشت و کپی از این مقاله به هر نحو ممکن ممنوع میباشد. تمامی حقوق برای مولف و سایت ایرانسیم محفوظ است.
|
به نام آفریننده پرواز
|
|
DrawCall در این مقاله سعی شده تا توضیح مختصری در خصوص مبانی اولیه ایجاد صحنه و تصاویر مجازی و پوسته دار کردن اشیاء ارائه شود.همانطور که قبلاً توضیح دادم تصویری که شما به عنوان محیط پرواز در مونیتور می بینید چیزی نیست جز ترکیبی از سیگنالهای خاموش یا روشن که توسط سخت افزارهای مختلف ایجاد شده و نتیجه نهایی و برآیند آنها بصورت نقاط نورانی بر روی مونیتور نمایان شده است.این پایین ترین سطح ایجاد یک صحنه در سخت افزار میباشد.این نقاط و سیگنالها نیز در مراحل بالاتر با ایجاد مثلث و ترکیب آنها با هم ایجاد یک شی می نماید که این اشیا توسط DrawCall و با قرار گرفتن بافت بر روی آنها رنگ آمیزی می شوند.در یک صحنه شبیه سازی میلیونها از این مثلثها بطور همزمان در کنار هم قرار دارند و دایماً توسط پردازنده مرکزی و پردازنده کارت گرافیک در حال تازه سازی هستند تا اگر تغییری در صحنه ایجاد شد به طور مثال حرکت رو به جلو، این تغییرات به نمایش در آیند.در نهایت نیز از کنار هم قرار گرفتن این تصاویر یک انیمیشن ایجاد می شود که حالت پرواز را شبیه سازی می کند. نرم افزار کنترل کننده علاوه بر ایجاد این انیمیشن وظایف بسیار زیاد دیگری را نیز بر عهده دارد که در مقالات بعدی در باره آنها صحبت خواهم کرد. دنیای مثلثی که در مرحله اول ایجاد شده است کاملاً مرده و بی روح میباشد و نیاز به این است تا با قرار گرفتن بافتها (texture) بر روی اشیا به حالتی که ما مشاهده می کنیم تغییر یابد.این وظیفه رنگ آمیزی بر عهده متدی به نام DrawCall میباشد.
شبیه ساز پرواز ایکس تحت پلتفرم دایرکت ایکس 10 (آزمایشی) آرشیو اختصاصی ایرانسیم
این متد با صدا زدن پردازنده و بارگذاری بافت مورد نظر در حافظه و قرار دادن آن بر روی شی مورد نظر در مختصات مشخص و با مشخصات اختصاصی دیگر وظیفه رنگ آمیزی را به انجام می رساند.به عنوان مثال یک خانه ساده را در محیط شبیه ساز پرواز در نظر بگیرید.این خانه از یک مکعب مستطیل با شش وجه تشکیل شده است و هر وجه دارای تصویری مجزا می باشد.بنابراین در مجموع باید شش بافت بارگذاری شود.یک بافت برای کف ساختمان، یک بافت برای سقف و چهار بافت دیگر برای دیوارهای اطراف.در نتیجه به تعداد شش DrawCall نیاز میباشد و نرم افزار باید شش بار پردازنده را صدا بزند تا تصویر بطور کامل ایجاد شود در غیر اینصورت شما چیزی را مشاهده نخواهید کرد.در هر بار از این صدا زدن ها یک فایل بافت بار گذاری می شود تا بر روی مکعب ما قرار گیرد با توجه به این موضوع که این فقط یک مکعب ساده میباشد و با حساب اینکه هر بافت 256 کیلو بایت حجم داشته باشد ما در مجموع به شش چرخه پردازنده و مقدار 1.5 مگابایت رم نیاز داریم. موضوع زمانی جالبتر میشود که محاسبه سرانگشتی برای تعداد شی ها موجود در صحنه شبیه ساز ایکس و حافظه و چرخه های مورد نیاز آنها انجام دهیم.طبق استاندارد شبیه ساز پرواز ایکس و در صورتی که تنظیمات صحنه بر روی UltraHigh باشند در هر لحظه حدود 5000 شی در صحنه وجود دارد (به استثنای هواپیماهای ترافیک، هواپیمای خود شما، سطح آب ، کوه ها و... که هر کدام هزاران وجه دارند) و با احتساب این موضوع که هر شی حدود 11 وجه دارد:
11 * 5000 = 55000
بنابراین فقط برای ایجاد اشیا مربوط به AutoGen در هر ثانیه به حدود 55000 DrawCall نیاز می باشد که رقم سرسام آوری هست و این فقط بخش بسیار بسیار کوچکی از پردازشهای موجود در هسته شبیه ساز پرواز می باشد و با این حساب که 11 بافت ما برای همه اشیاء یکسان میباشد به مقدار تقریبی 2.5 مگا بایت حافظه نیاز هست.راهی برای کاهش این تعداد چرخه ها وجود دارد و ان الحاق بافتها می باشد.در این روش تعداد مشخصی از بافتها با هم ادغام شده و تشکیل یک فایل می دهند.از انجا که از اطلاعات مربوط به مشخصات فایل اشتراک گرفته می شود، هم تعداد فابلها کم می شود و هم حجم آنها. یعنی در مکعب قبلی اگر هر شش بافت در یک فایل قرار گیرد تعداد DrawCall ها به مقدار 6/1 کاهش می یابد که رقم قابل توجهی است.در مثال بالا ،ما هر 11 بافت را در یک فایل قرار دادیم در نتیجه تعداد چرخه ها از 55 هزار به 5 هزار کاهش یافت.به زبان ساده تر نرم افزار فقط یک بار پردازنده را صدا می زند.بنابراین مشاهده می کنید که با این روش چه مقدار راندمان افزایش خواهد یافت. این متد روشی است که در سرویس پک شماره یک شبیه ساز پرواز ایکس مورد استفاده قرار گرفته است و باعث افزایش راندمان تا 40 درصد شده است.در تهران 2007 هم از روشی شبیه به این متد به همراه فشرده سازی رنگ و اشتراک آنها برای افزایش بازده استفاده شده.
شبیه ساز پرواز ایکس تحت پلتفرم دایرکت ایکس 10 (آزمایشی) - به مثلث ها دقت کنید. آرشیو اختصاصی ایرانسیم
این توضیحات فقط برای ایجاد اشیاء ساده ای همچون خانه ها میباشد در صورتی که در محیط پروازی مواردی همچون درختان ، حیوانات ، وسائل نقلیه و... وجود دارد و تمامی این موارد فقط یک جز کوچک از صحنه (AutoGen) میباشد که در کنار کوه ها ، سطح آب ، ابرها ، هواپیماهای ترافیک ، ساختمانهای فرودگاه ها ، چراغها و... تولید تصویر نهایی می کند.نکته جالب اینکه حتی برای یک چراغ کوچک کنار باند یه DrawCall نیاز هست!!
در تصویر بالا پیچیدگی این نرم افزار و محاسبات سر سام آور آن قابل لمس تر میباشد.در این مقاله سعی شد به ساده ترین حالت ممکن ایجاد یک تصویر توضیح داده شود.
موفق باشید تورج مرصعی
|
|
Copyright© 2002-2008 Iransim - Site version 3.4 Written by Touradg Morassaei - Last updated December 25, 2007 Iransim Disclaimer - All Rights Reserved
|