سلام .
به نام خالق
بی همتای هستی.
امروز قراره
اولین قسمت مقالات این وبلاگ رو با عنوان ورود به دنیای سه بعدی کامپیوترها (1)
بنویسم. همونطور که قبلاً هم نوشته بودم، قرارمون توی این وبلاگ اینه که خیلی
بنیادی و ریشه ای به مسائل برسیم و حلشون کنیم.
برای شروع
سخت افزار کامپیوتر رو انتخاب کردم. مطمئنن همگی ما می دونیم که کامپیوتر ها برای
نمایش و مدیریت تصاویر و انتقال بر روی مانیتور از کارت گرافیکی استفاده می کنند(
البته کامپیوتر های مورد نظر من کامپیوتر های امروزی و اونایی که ماها دیدیم
هستند).و کارت های گرافیکی انواع و اقسام گوناگونی داره. این بار بیاین کمی دقیقتر
و با چند سوال به کارت گرافیکی نگاه کنیم.
مگر
کامپیوتر ها پردازنده ندارند؟ کلی هم پول بالاش می دیم. پس چرا پردازش تصاویر رو
به تنهایی انجام نمی ده؟
اگه دو تا cpu روی سیستممون
بزاریم و به جاش کارت گرافیکی ارزون بخریم می تونیم بازیهای سه بعدی با کیفیت بالا
رو بازی کنیم؟
کار رو با
این دو تا سوال ادامه می دیم. از اونجایی که بحث در مورد پردازنده های نسل جدید
خیلی تخصصی هست من به همون اندازه در مورد این مسائل اشاره می کنم که جواب سوال
هامون روشن بشه و از بحث های تخصصی اجتناب می کنم تا برای دوستان هم کسل کننده
نباشه.
یه بازی
رایانه ای سه بعدی حداقل در هر ثانیه 30 فریم رو پشت سر هم نشون می ده و برای
رزولشن 800 در 600 ، اگه فقط تعداد محاسبات رنگ های هر پیکسل از مونیتور رو بخوایم
بدونیم در هر ثانیه چند تا می شه با یه ضرب ساده عدد چهارده میلیون و چهارصد هزار به دست میاد. درسته که این رقم برای یه پردازنده کمه. حالا فرض کنیم یه cpu اضافی
گذاشتیم که این محاسبات رو به اون بدیم.
یا اینکه cpu خودمون اونقدر قوی هست که هم به کارای
محاسباتی نمایش تصاویر و هم کارای پردازشی خودش برسه.
ولی اگه کمی دقت کنیم می بینیم توی بازیهای رایانه ای سه بعدی تموم فضا به
راحتی می چرخه و با چند تا کلید ،جلو . عقب می ریم.
توی هندسه دبیرستان یاد گرفتیم
که برای دوران ماتریس ها از ماتریس دوران استفاده می شه.
پس بیاین بررسی کنیم اگه cpu یه ماتریس 2 در
2 رو به ماتریس دورانش ضرب کنه، چه اتفاقی می افته؟
1- چهار تا متغیر با عناوین درآیه
های ماتریس در حافظه ذخیره می شن.
2- Cos(i)
و Cos(i) محاسبه می شن و نتیجه در دو تا حافظه ذخیره می شن. (i زاویه ای هست که قراره به اون اندازه دوران انجام بشه)
3- هشت تا محاسبه
برای ضرب درایه ها انجام می شه. و شش محاسبه برای جمع.
4- چهار متغیر اولیه با مقادیر جدید
جایگذاری می شن.
حالا این سوال مطرح می شه که اگه توی یک بازی سه بعدی یه دوران ساده رو بخوایم محاسبه
کنیم باید برای تمام نقاط فضا اینکارو انجام بدیم تصور کنین این تعداد محاسبات
چقدر خواهد بود.
ولی کارت های گرافیکی دارای توانایی های سه بعدی، یه جور دیگه با این مسئله
برخورد می کنن.
حالا مقایسه کنیم که کارت گزافیکی این ظرب رو چطوری انجام میده.
1- یه ماتریس n در n می گیره.
2- یک محاسبه برای دوران به اندازه درخواست شده انجام می ده.
3- متغیر های اولیه رو با اعداد
جدید جایگذاری می کنه.
با یه نگاه ساده دیدیم که کارت گرافیکی
توانایی هایی داره که CPU برای انجامش کلی وقت لازم داره. و این اعمال
در سخت افزار کارت گرافیکی تعریف شده است. یعنی کارت گرافیکی با ماتریس ها خیلی راحت
می تونه کار کنه. و به طور کلی تقریباً هر مجموعه از اعداد رو به شکل ماتریس می
بینه.
این ساده ترین و بنیادی ترین مسئله ای
بود که باید در کار های 3D به اون توجه می
کردیم. چون بعضی وقت ها فکر می کنیم که کارت گرافیکی هم مثل CPU
برای محاسبه اعداد عمل می کنه و غافل از اینکه کارت گرافیکی با ماتریس ها کار می
کنه و بهتر نتیحه می ده.
در ادامه بحث در مقالات بعدی با مسائل
بیشتری می پردازیم و با توانایی های بیشتری از کارت گرافیکی آشنا خواهیم شد.
بیاین قبل از اینکه با هر نرم افزاری در
هر زمینه ای کار کنیم، اول ابزار هامون رو بشناسیم و بعد شروع کنیم. ( البته اگر
می خواهیم حرفه ای باشیم)
خیلی مهمه که اول بدونیم کارت گرافیکی
چطور کار می کنه، و بعد از نرم افزارهای سطح بالا مثل 3Dmax و DirectX و ... استفاده
کنیم. (منظورم از سطح بالا اونایی هستند که به زبان انسان نزدیکتر هستند مثلاً زبان HLSL زبان کارت گرافیکی هستش). اینطوری
دید بهتری نسبت به کارهایی که می تونیم انجام بدیم خواهیم داشت.
چند تا لینک از تصاویر حین بازی Prince of Persia رو این پایین می زارم. خوبه که یه نگاهی بندازین.
http://image.com.com/gamespot/images/2005/283/926984_20051011_screen012.jpg
ادامه دارد (ادامه مقاله رو روز پنجشنبه
صبح قبل از ساعت 12 همینجا می زارم.)
.::مرجع کد آهنگ::.
.::دریافت کد موزیک::.