نمیدونم چی شده که باعث شده من فقط جمعه ها به فکر نوشتن Directx بیفتم ولی حالا بیخیال. در یکی از وبلاگها یک مطلب خوبی به نام Microsoft Web Platform Installer پیدا کردم برام جالب بود و در لینک پیوندهای روزانه قرار دادم. و همینطور هم یک سایت برای ویندوز ۷ پیدا کردم که فارسی هست و در لیست پیوندهای وبلاگ قرار دادم.اگر مطلب قبلی من را خونده باشید درباره compute shader این مطلب را هم میتونید ادامه بدید. و اگر نمیدانید که منظور از مدل ۵ چی هست باید مطلب تفاوت بین نسخه های directx من را بخونید. اگر هم کلا میخواهید درباره directx بخونید که من یک موضوع جدا در وبلاگم باز کردم براش روی آن کلیک کنید و بخونید.

نظرتان درباره تصویر بالا چی هست ۱۰ و ۱۱ چرا تفاوت کمی با هم دارن؟ من در این مطلب درباره این موضوع مینویسم که چرا از لحاظ کیفیت تفاوت آنچنان دیده نمیشه. و من در این مطلب تصویر زیادی بکار بردم برای اینکه شما بتونید تفاوت بین نسخه shader 2 و ۳ و ۴ را متوجه بشید. پس اگر لینک دیر باز شد گله نداشته باشید چون تصویر زیاد است.
برای شروع کار تصویر پائین مدل ۳ shader هست که از بازی Assassin,s creed گرفته شده که در مشخصات بازی امده با shader بالاتر هم کار خواهد کرد.

http://shop.p30world.com/images/games/AssassinsCreed/1.jpg

و اما shader model 5 که با اون مایکروسافت مفاهیم معینی از برنامه نویسی شئ گرا را در زبان shader خودش یعنی HLSL اعمال کرده است. برخلاف نسخه های قبلی اون که قابلیتهای جدیدی را معرفی میکردند مثل Dynamic Branching پشتیبانی از اعداد صحیح و غیره در اینجا هدف اصلی مایکروسافت تسهیل کاربرنامه نویسان با برطرف نمودن یک مشکل عمومی در موتورهای بازی فعلی بود: صعود ناگهانی shader ها بخاطر تعداد بالای تبدیلات. بذار یک مثال بزنم به این نحو که یک موتور که دو نوع ماده پلاستیک و متال و دو نوع نور spot و omni را مدیریت میکند. یک برنامه نویس باید چهار shader را برای تمام شرایط بنویسه:
renderplasticspot () … // rendering plastic using spot light …
renderplasticomni () …// rendering plastic using omni light…
rendermetalspot() …// rendering metal using spot light…
rendermetalomni() …//rendering metal using omni light…
code
البته این code که نوشتم بخاطر این بود که در فارسی کدها اشتباه نمایش داده میشد (یعنی جابجا بود) این را مجبور شدم بنویسم که تریبشون درست بشه.
این مثال ساده است چون تنها دو ماده و دو نوع نور در اون وجود داره اما در عمل این تعداد میتونه بسیار بالاتر باشه. معلوم هست که انجام اینکار میتونه به سرعت غیر قابل مدیریت گردد. در این فرآیند حجم عظیمی از تکرار کد وجود داره و هربار که یک باگ در جائی تصحیح بشه باید در تمام shader های دیگه نیز تصحیح بشه. برای برطرف کردن این مشکل برنامه نویسان از چیزی استفاده میکنند که عموما Uber-Shader گفته میشه. و تمام ترکیبات را در کنار یکدیگر قرار میدهند:
render()#ifdef metal // code specific metal
material #elifplastic// code specific to plastic
material #endif#endif spot // code specific to spot
light # elif omni // code specific to omni light #endif
این راه حلش هست که مشکل را با تولید shaderها بصورت شناور از اجزا تشکیل دهنده کد عمومی برطرف میکنه. مشکلی که توی این روش هست کار خواندن shaderها دشوار میشه و برای اطمینان از اینکه تمام اجزاء در همان جایی که به آنها نیاز خواهد بود درج شده اند. به تلاش اضافی هم نیاز دارد. اما با directx 11 امکان افزایش خوانایی کد با استفاده از یک انترفیس اشتقاقی و کلاسها بوجود آمده است:
light mylight; material mymaterial; render();() mymaterial.render (); mylight.shade
light و material اینترفیسها هستند و کد نیز در کلاسهای اشتقاقی plasticmaterial , spotlight , omnilight , derived و metalmaterial درج شده. بخاطر همین تمام کدها در یک محل واحد قرار گرفته که تصحیح باگ را تا حدودی زیادی آسانتر میکنه. در عین حال خوانایی نیز به لطف سازماندهی کد که به مفهوم توابع مجازی در زبانهای شئ گرا شباهت داره آسیب نخواهد دید. این ویژگی از سوی برنامه نویسان به گرمی مورد پذیرش قرار خواهد گرفت اما هیچ تاثیری برای بازیکنان نداره.
تاکنون هرچی به directx 11 گفتم اجزاء اصلی آن بودن که مایکروسافت با آنها موفقیت کسب کرده در مطلب بعدی من موارد متفرقه دیگه و جمع بندی آخر directx و همینطور هم کمی درباره openGL میگم بخاطر همین یک نظر سنجی دیگه به نظر سنجی های وبلاگ اضافه کردم بد نیست شرکت کنید.
در پائین من گالری از تصاویر بین نسخه های ۲ shader 4 3 را قرار میدم. متاسفانه درباره ۵ تصویری گیر نیاوردم.

برچسب ها: directx graphic

٪ نظرات

  1. سلام
    وب سایت خیلی خوبی داری، من که خیلی خوشم اومد
    امیدوارم موفق باشی…

  2. بچه ها این مدیر وبلاگ یعنی آقای علی مختاری توی پروفایلش نوشته اهل اصفهانه ولی نیست حالا چرا راستشو نمیگه من نمیدونم
    هرکی می خواد درباره ایشون خبر یا آدرس یا حتی اسم تمام سایتهاشو بدونه ایمیلشو همینجا بنویسه تا منم براش بفرستم
    اصلا تا تهشو براتون می فرستم
    تا حالا هیچ دقت کردید که ایمیلی از ایشون توی وبلاگ وجود نداره!!

    توی پست قبلی هم در جوابم نوشته که اول یکی برا خودم بفرست ولی باز هم ایمیلی نداده جالبه

  3. خوب آخه شما گفتید همه چیز منو میدونید، ولی اولین چیزی که نمیدونید ایمیل من هست.

  4. سلام جناب مختاری.
    مطالب جالبی رو نوشتید.
    ولی بعضی قسمتها انگار تخصصی و حرفه ای ترجمه نشده و همچنین غلط املایی دیده میشه.
    به هر حال کار بزرگی می کنیذ.
    موفق و پیروز باشید.

  5. […] Directx 11 و مدل ۵ Shader […]

  6. بیشتر درباره دایرکت تیس بنویسید و اس دی کی اونها رو توضیح بدید

    • directx sdk بیشتر برای برنامه نویسان مناسبه که اگر بحث تخصصی آنرا بخواهید از برنامه نویسان باید بگیرید.
      دوستان برنامه نویس را در این سایت پیدا کنید.
      http://www.barnamenevis.org/forum/showthread.php?t=176261

  7. […] Directx 11 و مدل ۵ Shaderنمیدونم چی شده که باعث شده من فقط جمعه ها به فکر نوشتن Directx بیفتم ولی حالا بیخیال. در یکی از وبلاگها یک مطلب خوبی به نام Microsoft Web Platform Installer پیدا کردم برام جالب بود و در لینک پیوندهای … […]

پیام بگذارید

ما را در شبکه های اجتماعی دنبال کنید

© تمامی حقوق برای علی مختاری محفوظ است.

تماس با من

میدان جمهوری اسلامی ، جنب بانک مسکن ، مجتمع اداری تجاری نگین

۰۳۱-۹۱۰۱۵۰۶۲ 

info@alimokhtari.name