وظائف ثابتة (رسومات الحاسوب)
في مجال رسومات الحاسوب ، يُستخدم مصطلح "الوظائف الثابتة" بشكل أساسي لوصف واجهات برمجة تطبيقات الرسومات ثلاثية الأبعاد ووحدات معالجة الرسومات المصممة قبل ظهور التظليل القابل للبرمجة . كما يُستخدم المصطلح لوصف واجهات برمجة التطبيقات وخطوط معالجة الرسومات التي لا تسمح للمستخدمين بتغيير تقنيات المعالجة الأساسية، ومن هنا جاءت كلمة "ثابتة". ويمكن أن يشير مصطلح "الوظائف الثابتة" أيضًا إلى تقنيات معالجة الرسومات التي تستخدم أجهزة مخصصة غير قابلة للبرمجة ، مثل استخدام وحدات ROP لتحويل الصورة إلى صورة نقطية .
تاريخ
على الرغم من أن الأصل الدقيق لمصطلح "الوظائف الثابتة" غير واضح، إلا أن أول جهاز رسومات معروف يُعتبر من هذا النوع هو لوحة IBM 8514/A الإضافية للرسومات من عام 1987. بالمقارنة مع أجهزة الرسومات الأخرى في ذلك الوقت، وخاصةً تلك التي استخدمت معالج TMS34010 القائم على معمارية RISC ، تتميز 8514/A بسرعات معالجة مماثلة، مع سعر أقل بكثير عند طرحها. مع ذلك، جاءت هذه المزايا على حساب مرونة البرمجة، حيث صُممت 8514/A بشكل أقرب إلى الدوائر المتكاملة الخاصة بالتطبيقات (ASIC) مقارنةً بمنافسيها الذين كانوا يُشبهون وحدات المعالجة المركزية للأغراض العامة . [ 1 ]
بعد معالج 8514/A، تميزت أقوى وحدات معالجة الرسومات المخصصة في التسعينيات بخطوط معالجة غير قابلة للبرمجة، بل قابلة للتكوين بدرجة محدودة فقط. هذا يعني أن وحدات المعالجة المركزية المضيفة لا تملك تأثيرًا مباشرًا على كيفية معالجة وحدات معالجة الرسومات لعمليات الرؤوس والتحويل النقطي، باستثناء إصدار أوامر غير مباشرة ونقل البيانات ثنائي الاتجاه من ذاكرة الوصول العشوائي (RAM) الخاصة بوحدة المعالجة المركزية إلى ذاكرة الوصول العشوائي الخاصة بوحدة معالجة الرسومات . مع ازدياد عدد الأجهزة ذات التصميم ذي الوظائف الثابتة، قام مطورو واجهات برمجة تطبيقات الرسومات ثلاثية الأبعاد في التسعينيات بمحاكاة طبيعة الأجهزة المتاحة في تصميم برامجهم، وذلك بإنشاء خطوط معالجة رسومات منطقية قابلة للتكوين فقط وغير قابلة للبرمجة. وتُعرف واجهات برمجة تطبيقات الرسومات في ذلك الوقت، ولا سيما OpenGL والإصدارات الأولى من DirectX ( Direct3D )، بأثر رجعي بأنها ذات وظائف ثابتة، نظرًا لتشابهها في العديد من خصائص التصميم مع الأجهزة ذات الوظائف الثابتة التي استهدفتها. [ 2 ]
تاريخيًا، كانت واجهات برمجة التطبيقات ذات الوظائف الثابتة تتألف من مجموعة من نقاط دخول الوظائف التي تُطابق تقريبًا أو مباشرةً منطقًا مُخصصًا لوظيفتها المُحددة في وحدات معالجة الرسومات المُصممة لدعمها. مع تطور وحدات معالجة الرسومات وواجهات برمجة التطبيقات القائمة على التظليل ، قام مهندسو برامج تشغيل الرسومات بتنفيذ واجهات برمجة التطبيقات ذات الوظائف الثابتة باستخدام بنية التظليل ذات الأغراض العامة. شكّل هذا النهج حلقة وصل استمرت في توفير تجريد واجهة برمجة التطبيقات ذات الوظائف الثابتة الذي اعتاد عليه معظم المطورين، مع إتاحة المزيد من التطوير والتحسين لبنى التظليل الأحدث.
تُعدّ OpenGL و OpenGL ES وDirectX واجهات برمجة تطبيقات رسومية ثلاثية الأبعاد، وقد انتقلت جميعها من نموذج البرمجة ذي الوظائف الثابتة إلى نموذج البرمجة القائم على التظليل. [ 3 ] فيما يلي جدول يوضح تواريخ هذا الانتقال:
| واجهة برمجة التطبيقات ثلاثية الأبعاد | آخر إصدار ذي وظائف ثابتة | الإصدار الأول من برنامج التظليل |
|---|---|---|
| OpenGL | الإصدار 1.5 | الإصدار 2.0 |
| OpenGL ES | الإصدار 1.1 | الإصدار 2.0 |
| DirectX | الإصدار 7.0 | الإصدار 8.0 |
حتى بعد انتشار استخدام المُظلِّلات القابلة للبرمجة وخطوط معالجة الرسومات، ظلت بعض ميزات وحدة معالجة الرسومات غير قابلة للبرمجة، وذلك لتحسين السرعة على حساب المرونة. على سبيل المثال، فوَّضت وحدات معالجة الرسومات من سلسلة NVIDIA GeForce 6 مهام الاستبعاد المبكر، والتحويل النقطي، و MSAA ، واستعلامات العمق، ورسم الخرائط النسيجية، وغيرها، إلى تطبيقات ذات وظائف ثابتة. لا يُوجِّه المعالج المركزي وحدة معالجة الرسومات لكيفية معالجة هذه العمليات تحديدًا؛ إذ لا يمكن تهيئة هذه الميزات إلا بدرجة محدودة. [ 4 ]
الوظائف الثابتة مقابل التظليل
في مسار معالجة الرسومات ذي الوظائف الثابتة، تكون مراحل معالجة الرسومات محددة مسبقًا ويمكن للمبرمج ضبطها. أما مسار معالجة الرسومات القائم على التظليل، فيتيح للمبرمجين استبدال بعض هذه المراحل ببرامج مخصصة تُسمى التظليل ، مما يسمح بتقنيات عرض أكثر تطورًا ومرونة أكبر. مع ذلك، حتى مسارات معالجة الرسومات الحديثة القائمة على التظليل ليست قابلة للبرمجة بالكامل؛ إذ تُعرّف واجهات برمجة التطبيقات مثل OpenGL وDirect3D 12 مسارات معالجة رسومات تجمع بين مراحل التظليل القابلة للبرمجة وعمليات ذات وظائف ثابتة. [ 5 ] [ 6 ]
مراجع
- ↑ بيدي، د. جون. "رقائق الرسومات الشهيرة: رسومات IBM الاحترافية، PGC و8514/A" . جمعية IEEE للحاسبات .
- ↑ كيرك، ديفيد ب.؛ هو، وين-مي و. (22 فبراير 2010). برمجة المعالجات المتوازية الضخمة ( الطبعة الأولى). دار مورغان كوفمان للنشر . ISBN 978-0123814739.
- ↑ كيرك، ديفيد؛ هو، وين-مي (2013). "الفصل 2 - تاريخ الحوسبة باستخدام وحدات معالجة الرسومات". برمجة المعالجات المتوازية الضخمة: منهج عملي . إلسيفير/مورغان كوفمان. الصفحات 23-39 . ISBN 978-93-5107-044-3.
- ↑ كيلغاريف، إيميت؛ فرناندو، رانديما؛ فار، مات (1 يناير 2005). جواهر وحدة معالجة الرسومات 2: تقنيات البرمجة للرسومات عالية الأداء والحوسبة للأغراض العامة . أديسون-ويسلي . ISBN 0-321-33559-7.
- ↑ "مواصفات OpenGL 4.5 (الملف التعريفي الأساسي)" (ملف PDF) . مجموعة كرونوس.
- ↑ "خطوط الأنابيب والظلال مع Direct3D 12" . Microsoft Learn . Microsoft.
- عرض ثلاثي الأبعاد
