نوشته شده توسط علی مختاری, ۱۱ مهر ۱۳۸۸

روزی روزگاری در همین وبلاگ صحبت از شکست openGL کردیم در همان مطلب هم به این قضیه پرداختم که طرفدارانش سعی دارند آن را زنده نگه دارند تا به تاریخ نپیوندد ولی الان تازه ترین خبر از openGL 3.2 منتشر شد و آنهم موفقیت آن در بدست آوردن Geometry Shaders است که من خبرش را اینجا بطور خلاصه و با تحلیل خودم مینویسم. اصل این خبر را میتونید در این لینک بخونید.

Geometry shaders چیست؟

Geometry Shader  دقیقاً در بین سایه زن های پیکسل و راس (Vertex and Pixel) در خط لوله پردازش قرار دارد. می تواند از رئوس و مثلث های ایجاد شده در ترسیم اشکال ۳بعدی، بدون نیاز به پردازش مجدد، استفاده کند. سایه زن هندسی کارهای دیگری نیز انجام میدهد : تقویت تعداد مثلث ها با انتخاب یک یا چند مثلث از قبل پردازش شده و تکرار آنها بدون نیاز به پردازش مجدد، و یا تشکیل مثلث های جدید با ترکیب مثلث های دردسترس، تولید نقطه ها و خط های جدید و یا با استفاده از مثلث های ازقبل پردازش شده، و یا تولید پیکسل های پخش شده (جدا جدا).تصویر زیر نمونه ای از آنرا نشان میدهد.

games4[1]

اما چرا این خبر مهم است؟! توی مطالبی که من در مورد directX 11 توضیح میدادم در این مطلب نوشتم که: جدیدترین ویژگی نسخه ۱۰ از Directx سایه زنیهای هندسی Geometry Shaders بود که نهایتا امکان ایجاد یا نابود کردن راسها برروی GPU را فراهم میکرد. اما تفسیری که روی آن کردن اشتباه بود. بجای اینکه از این واحد برای گسترش سنگین هندسی استفاده کنند، برای پیاده سازی Point-Spirit های انعطاف پذیرتر ، مدیریت Fur shading و یا محاسبه نیم رخ یک آبجکت برای الگوریتمهای سایه حجمی استفاده کردند. اصلا بهتر از یک واحد اختصاصی برای انجام Tessellation نیست. که این واحد اول برای نسخه ۱۰ برنامهریزی شده بود که در کارت radeon HD میبینید. ولی متاسفانه مایکروسافت و nVIDIA و ATI نتونستند سر این قضیه به تفاهم درستی برسند و این گزینه از نسخه ۱۰ برداشته شد و قرار شد که با نسخه ۱۱ بطور حرفه ای تر برگرده. پس میتونم بگم که Tessellation یک ویژگی بزرگ جدید در نسخه ۱۱ حساب میشه.

حالا حساب کن openGL از سطح direc3d 7 به نسخه ۱۱ میاد البته اونم نه همه بلکه یکی از قابلیتهای مهم، بنظر شما openGL از خاک بلند شده و داره آماده جنگ میشه؟

Khronos Group وقتی openGl 3.2 را معرفی کرد، سومین بروزرسانی مهم در ۱۲ ماه گذشته این API گرافیکی ۲ بعدی و ۳ بعدی که بطور گسترده ای برای ایستگاههای کاری و کامپیوتری شخصی مورد پذیرش قرار گرفته است. این عرضه جدید به تکامل سریع استاندارد openGL ادامه داده تا به برنامه نویسان گرافیکی اجازه بده که به عملکرد سطح بالای GPU بر روی سکوها و سیستمهای عامل گوناگون دسترسی داشته باشند.Khronos_OpenGL-thumb-626x469[1]
neil trevett رئیس khronos group و قائم مقام nvidia میگوید: openGL 3.0 امکان پاسخدهی openGL به نیازهای بازاری مختلف را امکانپذیر میکند. openGL 3.1 از این مکانیزمها برای ساده و موثر کردن API و در عین حال افزودن عملکردهایی به آن، استفاده نمود. حالا ما openGL 3.2 ویژگیهایی را برای ارتقاء عملکرد ، افزایش کیفیت بصری، شتابدهی پردازش هندسی و انتقال پذیری آسانتر نرم افزارهای کاربردی direct3d به همراه خواهد داشت. گروه کاری openGl ARB که ARB مخفف architecture Review Board در khronos، یک نسخه بروزرسانی شده از زبان سایه زنی openGL یعنی GLSL 1.5 و دو پروفایل را در داخل مشخصات openGL 3.2 تعریف کرده است که حق انتخاب استفاده از پروفایل ساده و موثر core برای توسعه نرم افزارهای کاربردی جدید و یا پروفایل compatibility که سازگاری کامل با نسخه های قبل استاندارد openGL را برای نرم افزارهای کاربردی فراهم میسازد را در اختیار برنامه نویسان قرار میدهد.

openGL 3.2 طراحی شده است تا بر روی دامنه گسترده ای از GPU های موجود اجرا شده و دامنه گسترده ای از مزایاش چشمگیر را برای برنامه نویسان نرم افزارهای کاربردی فراهم نماید که در میان آنها میتوان به موارد زیر اشاره کرد:

- افزاریش عملکرد آرایه های vertex و آبجکتهای fence sync برای اجتناب از بیکاری در هنگام انتظار برای منافع به اشتراک گذاشته شده مابین GPU و cpu یا رشته های متعدد cpu.

- قابلیت برنامه ریزی بهبود یافته خط لوله ، شامل Geometry shaders در هسته openGL

- تقویت کیفیت بصری cube map و انعطاف پذیری راندوی multisampling با تامین امکان پردازش مستقیم نمونه های بافت برای shader ها.

بعلاوه khronos مجموعه ای از ضمائم ARB جدید را تعریف کرده است که امکان دسترسی به آخرین عملکردهایی گرافیکی معرفی شده در جدیدترین GPUها را از طریق openGL فراهم نماید. هنگامیکه عملکردهای مذکور خود را به اثبات رسانده و بطور گسترده ای مورد پذیرش قرار بگیرد، این ضمائم در هسته یک نسخه بعدی از openGL جذب خواهند شد.

barthold lichtenbelt عضو گروه کاری openGL و مدیر مهندسی openGL در nvidia میگوید: شرکت nvidia خود را در زمینه تکامل و پذیرش سریع openGL متعهد میداند و ما مفتخریم که درایورهای openGL beta 3.2 خود را در همان روزی عرضه کردیم که خود مشخصات منتشر شده بود. ما با دقت به بازخورد و واکنش برنامه نویسان توجه خواهیم داشت و به تکامل سریع openGL برای انطباق با نیازهای صنعتی ادامه خواهیم داد.