Rasterization (التنقيط) هي عملية تحويل الوصف المتجه للبدائيات ثلاثية الأبعاد (مثلثات، خطوط، نقاط) إلى مجموعة من البكسلات (الأجزاء) لعرضها على الشاشة. وفقًا لـ Khronos Group, 2025، فإن التنقيط هو مرحلة تلقائية (غير قابلة للبرمجة) من خط أنابيب الرسومات، تقع بين Vertex Shader و Fragment Shader. يحدد Rasterization بكسلات الشاشة التي تنتمي إلى أي مثلث، ويحسب السمات المُدرجة (المُقحمة) لكل جزء.
الملخص
Rasterization هو مرحلة من خط أنابيب الرسومات تقوم بتحويل البدائيات الهندسية (مثلثات، خطوط) إلى مجموعة من الأجزاء لمعالجتها لاحقًا بواسطة Fragment Shader. بيانات الإدخال هي رؤوس المثلث في إحداثيات الشاشة وسماتها (اللون، العموديات، UV). الناتج هو مجموعة من الأجزاء ذات السمات المُقحمة.
على عكس التظليلات القابلة للبرمجة (Vertex Shader و Fragment Shader)، فإن التنقيط هو مرحلة ثابتة (غير قابلة للبرمجة). لا يمكن للمطور تغيير خوارزمية التنقيط، ولكن يمكنه التحكم في معاييرها: وضع القص (culling)، عرض الخط، إزاحة العمق (polygon offset)، وأخذ العينات المتعددة.
جميع الرسومات الحديثة في الوقت الحقيقي تقريبًا — الألعاب، واجهات المستخدم، AR/VR — تستخدم التنقيط. إنها أكثر طرق العرض أداءً، قادرة على معالجة ملايين المثلثات لكل إطار بمعدل 60 FPS. تم تحسين أجهزة التنقيط في GPU للمعالجة المتوازية لآلاف المثلثات في وقت واحد من خلال كتل ROP (وحدات إخراج العرض) المتخصصة.
تنقيط المثلث يبدأ بعد أن يقوم Vertex Shader بتحويل الرؤوس إلى إحداثيات الشاشة. تأخذ GPU الرؤوس الثلاثة للمثلث وتحدد بكسلات الشاشة التي تقع داخل هذا المثلث.
تشمل العملية ثلاث خطوات متسلسلة: تحديد المربع المحيط (bounding box) للمثلث بالبكسلات — فحص كل بكسل داخل المربع المحيط للتحقق من انتمائه للمثلث (دالة الحافة) — حساب السمات المُقحمة (إحداثيات barycentric) لكل بكسل مُغطى. دالة الحافة (Edge function) هي معادلة خطية تحدد أي جانب من حافة المثلث تقع عليه النقطة.
| المرحلة | الوصف | النتيجة |
|---|---|---|
| القص (Clipping) | قص المثلثات خارج حدود منفذ العرض | البدائيات المرئية |
| تحويل منفذ العرض | التحويل إلى إحداثيات الشاشة | إحداثيات البكسلات |
| إعداد المثلث | حساب دوال الحافة والمربع المحيط | معايير التنقيط |
| توليد الأجزاء | اختبار التغطية والاستيفاء | أجزاء + سمات |
Rasterization يمكن تنفيذها بخوارزميات مختلفة، لكل منها مقايضاتها الخاصة بين الأداء والجودة. تستخدم GPU الحديثة مزيجًا من عدة طرق.
خوارزمية التنقيط الكلاسيكية المطورة لـ GPU المبكرة. تتم معالجة المثلث سطرًا بسطر (scanline): لكل سطر شاشة يتم تحديد نقاط الدخول والخروج للمثلث، ويتم ملء جميع البكسلات بينها. تحويل المسح الخطي فعال للمثلثات الكبيرة ولكنه يتطلب منطقًا معقدًا للمثلثات ذات الشكل العشوائي.
تستخدم GPU الحديثة طريقة التنقيط بنصف المسافة: لكل جانب من المثلث يتم حساب دالة حافة — معادلة خطية موجبة من جانب وسالبة من الجانب الآخر. ينتمي البكسل إلى المثلث إذا كانت جميع دوال الحافة الثلاث موجبة. تنقيط نصف المسافة قابل للتوازي بسهولة ومناسب تمامًا لمعماريات SIMD في GPU.
تستخدم GPU المحمولة (Qualcomm Adreno, ARM Mali) العرض القائم على البلاطات (TBR). يتم تقسيم الشاشة إلى بلاطات صغيرة (16x16 أو 32x32 بكسل)، ويتم التنقيط لكل بلاطة على حدة. هذا يقلل من عمليات الوصول إلى الذاكرة عن طريق تخزين مخزن الإطارات في ذاكرة محلية سريعة (ذاكرة البلاطات). يقلل TBR من استهلاك الطاقة، وهو أمر بالغ الأهمية للأجهزة المحمولة.
Rasterization وتتبع الأشعة هما طريقتان مختلفتان جوهريًا لعرض الرسومات ثلاثية الأبعاد. يهيمن التنقيط في التطبيقات في الوقت الحقيقي، بينما يُستخدم تتبع الأشعة في العرض غير المتصل (offline) ويتسلل تدريجيًا إلى الوقت الحقيقي (على GPU المتوافقة مع RTX).
| المعيار | التنقيط | تتبع الأشعة |
|---|---|---|
| المبدأ | مثلث ← أجزاء | شعاع ← تقاطع مع المشهد |
| السرعة | سريع جدًا (ملايين المثلثات/إطار) | بطيء (آلاف الأشعة/إطار) |
| الجودة | تتطلب تقنيات إضافية (ظلال، انعكاسات) | ظلال وانعكاسات صحيحة فيزيائيًا |
| GPU المحمولة | الطريقة القياسية | دعم محدود (A17 Pro, Snapdragon Gen 3) |
| استهلاك الطاقة | منخفض | مرتفع |
يقدم التنقيط مشكلة aliasing — حواف متعرجة (jaggies) عند حدود المثلثات. يحدث هذا لأن البكسل متقطع ولا يمكن تغطيته جزئيًا بواسطة مثلث. لمكافحة aliasing يُستخدم أخذ العينات المتعددة (MSAA).
MSAA (أخذ العينات المتعددة لمكافحة التعرج) يقوم بالتنقيط بمعدل أخذ عينات متزايد (2x، 4x، 8x). بدلاً من عينة واحدة لكل بكسل، يتم استخدام عدة عينات فرعية، كل منها يتم اختبارها لتغطية المثلث. MSAA 4x يعالج 4 عينات فرعية لكل بكسل، مما يوفر تنعيمًا ملحوظًا للحواف دون زيادة دقة العرض بالكامل.
على عكس MSAA، تعمل طرق تنعيم ما بعد المعالجة (FXAA, SMAA, TAA) بعد التنقيط من خلال تحليل الصورة النهائية. FXAA (التنعيم التقريبي السريع لمكافحة التعرج) يكتشف حواف الصورة ويطبق التمويه للتنعيم، ويعمل بشكل أسرع بكثير من MSAA ولكن بجودة أقل.
Rasterization على GPU الحديثة يتم بواسطة كتل أجهزة متخصصة — ROP (وحدات إخراج العرض). يؤثر عدد ROP بشكل مباشر على معدل التعبئة (fill rate) — عدد البكسلات التي يمكن لـ GPU معالجتها في الثانية.
بالنسبة لـ GPU المحمولة (العرض القائم على البلاطات)، تشمل العوامل الحاسمة: تقليل overdraw عبر رفض Z المبكر (early-Z)، استخدام القص الخلفي (back-face culling) لإزالة المثلثات غير المرئية، وإخفاء القص (occlusion culling) لاستبعاد المثلثات المغطاة بالكامل بكائنات أخرى.
الأسئلة الشائعة
التنقيط هو عملية تحويل المثلثات إلى بكسلات على الشاشة. تأخذ GPU مثلثًا ثلاثي الأبعاد، وتحدد بكسلات الشاشة التي يغطيها، وتمررها إلى Fragment Shader لتلوينها.
يقوم التنقيط بإسقاط المثلثات على الشاشة وتحديد تغطية البكسلات (سريع جدًا). تتبع الأشعة يُطلق أشعة من الكاميرا ويتحقق من التقاطع مع الهندسة (أكثر دقة فيزيائيًا ولكنه أبطأ بشكل ملحوظ).
أثناء التنقيط، إما أن ينتمي البكسل بالكامل إلى مثلث أو لا — ومن هنا تأتي الحواف المتعرجة (aliasing). يقوم MSAA بتنعيم الحواف باستخدام عينات فرعية متعددة لكل بكسل، بينما يطبق FXAA مرشحًا على الصورة النهائية.
لا، التنقيط هو مرحلة ثابتة من خط أنابيب الرسومات. لا يمكن للمطور تغيير الخوارزمية، ولكن يمكنه التحكم في الإعدادات: القص (culling)، إزاحة المضلع (polygon offset)، وضع التنقيط (نقاط، خطوط، مثلثات)، ومعايير MSAA.
العرض القائم على البلاطات (TBR) يقسم الشاشة إلى بلاطات ويعالجها في ذاكرة محلية سريعة بدلاً من VRAM العالمية. هذا يقلل بشكل جذري من استهلاك الطاقة وعرض النطاق الترددي، وهو أمر بالغ الأهمية للأجهزة المحمولة التي تعمل بالبطارية.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا