تسامت
التسامت (بالإنجليزية: Rasterization) هو عملية معالجة صورة ذات تنسيق ومحتوى رسوميات متجهية (vector graphics) (مجموعة أشكال) وتحويلها إلى صورة تسامتية raster row image (شبكة من النقاط تتكون غالباً من بكسلات أو عنصورات أو نقاط)، والهدف من عملية التسامت هو إتاحة عرض الصورة وإظهارها على أجهزة العرض المختلفة مثل الفيديو وشاشات الحاسوب أو لطباعتها، أو حتى لتخزينها في ملف ذو تنسيق صورة نقطية (bitmap file).
إن مصطلح "التسامت" يمكن بشكل عام تطبيقه ضمن أي عملية فيها بيانات ذات تنسيق متجهي بحيث يمكن تحويلها إلى تنسيق تسامتيّ.
وفي حالة الاستخدام الشائع، يشير المصطلح إلى خوارزم التصيير المشهور لعرض الأشكال ثلاثية الأبعاد في الحاسوب. يعتبر التسامت حالياً أحد أشهر التقنيات المستخدمة لإنتاج رسوميات ثلاثية الأبعاد في الحاسوب في الزمن الفوري (real-time). إن تطبيقات الزمن الفوري تحتاج للاستجابة اللحظية لمدخلات المستخدم، وغالباً ما تحتاج لإظهار مشاهد تُعرض بمعدل لقطات لا يقل عن 25 لقطة في الثانية وذلك لضمان الحصول على حركة ناعمة لمحتويات المشهد.
أسلوب التسامت هو عملية سريعة جداً إذا ما قورن بخوارزميات التصيير الأخرى مثل تتبع الأشعة (ray-tracing). ولكن التسامت هو عملية يتم فيها فقط حساب وتحويل مكونات ومحتويات المشهد إلى مجموعة بكسلات أو نقاط، مع العلم أنها لا تصف بشكل محدد كيف يتم حساب ألوان هذه البكسلات. حيث أن التظليل (shading) متضمناً التظليل القابل للبرمجة (programmable shading) قد يَستخدِم الخواص الفيزيائية لانتقال الضوء، أو الحدس الفني للرسام.
يقدم معالج الرسوميات غالباً مجموعة من الوظائف الثابتة المحددة ضمن خط معالجة الرسوميات (graphics pipeline) حيث تحدث فيه عملية تسامت للمجسمات ثلاثية الأبعاد لإخراجها على سطح ثنائي البعد لعرضها على شاشة الحاسوب، ويحدث ذلك ضمن خط الإنتاج الثابت لعدم وجود دافع لتعديل التقنيات المستخدمة في عملية التسامت والتي تتم في زمن صغير جداً هو زمن رسم المشهد – حيث أن النظام الذي لا يُسمح بتعديله من الداخل فإنه غالباً يَسمح بتحقيق كفاءة عالية.
حيث أن أغلب شاشات العرض الحديثة ذات توجه تسامتي، فإن عملية التسامت تتم على كل من الرسوميات المتجهية والرسوميات المتسامتة في أصلها، ولكن تحدث عملية التسامت لكل منهم في مكان مختلف، فيتم تسامت الرسوميات المتجهية في أجهزة العميل بينما تحفظ الرسوميات المتسامتة مسبقاً في جهاز الخادم.[1]
إن أبسط خوارزم لعملية التسامت يَستلِم في مُدخلاته مشهد ثلاثي الأبعاد، مُكون من مجموعة من المضلعات، ويقوم بتصييره على سطح ثنائي البعد، والذي يكون عادة شاشة الحاسوب. المضلعات نفسها تتكون من مجموعة من المثلثات. المثلثات أيضاً يتم تمثيلها كمجموعة من النقاط أو الرؤوس (vertices) في فضاء العالم ثلاثي الأبعاد. عملية التسامت في أبسط صورها تستلم دفق أو فيض (stream) من مجموعة الرؤوس المدخلة وتقوم بتحويلهم إلى نقاط ثنائية البعد على شاشة العرض للمستخدم، وتقوم بإنشاء وملئ المثلثات ثنائية البعد الناتجة من هذه النقاط، في ما يعرف بالتحويل المسحي.
التحويل (transformation) عادة يتم باستخدام ضرب المصفوفات، وقد تُستخدِم أيضاً الرباعيات (quaternions). إن طرق التحويل تتضمن بشكل أساسي عمليات تحويل الإزاحة (translation) والدوران (rotation) والتحجيم (scaling) والإسقاط (projection). يتم عادة استخدام متجهات مكونة من أربعة عناصر، حيث يتم ضرب هذه المتجهات مع أي مصفوفة رباعية مربعة والتي تحتوي على قيم التحويل. وللحصول على المتجه الرباعي، نقوم بتعديل المتجه الثلاثي الذي يمثل أي رأس من رؤوس المثلث وذلك بإضافة مكون رابع إلى المتجه (ويطلق على المتغير الرابع: متغير التجانس homogeneous variable).
الإزاحة تُعبر عن حركة وانتقال نقطة من مكانها الأصلي إلى أي مكان آخر في الفضاء وذلك بمقدار إزاحة ثابت، ويمكن التعبير عن مصفوفة الإزاحة باستخدام المصفوفة الآتية:
حيث X و Y و Z هي قيم مقدار الإزاحة في كل اتجاه على الترتيب.
التحجيم هو أحد طرق التحويل التي يتم فيها ضرب متجه يمثل إحداثي رأس من رؤوس أي مثلث باستخدام قيمة تحجيم محددة، ويتم تحجيم إحداثي الرأس نسبة لنقطة الأصل، ويتم تمثيل التحجيم بالمصفوفة الآتية:
حيث قيم التحجيم لكل اتجاه هي X و Y و Z على الترتيب، ويمكن الحصول على تحجيم غير متماثل بتغيير قيم التحجيم لتكون مختلفة في كل اتجاه.
الدوران هو عملية يتم فيها تدوير أي رأس أو نقطة حول محور معين باستخدام إحدى مصفوفات الدوران الآتية حسب كل محور:-
للدوران حول المحور X:
للدوران حول المحور Y:
للدوران حول المحور Z:
حيث θ هي زاوية الدوران في كل من المصفوفات الثلاث السابقة.
إن سلسلة من عمليات التحويل باستخدام مصفوفات الإزاحة والتحجيم والدوران يمكنها أن تُعبر عن أغلب عمليات التحويل. إن التقنيات والأنظمة التي تطبق التسامت تستخدم مفهوم مكدس التحويلات وذلك لتحويل مجموعة من الرؤوس إلى أماكنهم الصحيحة وإلى اتجاههم الصحيح. إن مكدس التحويلات هو مكدس قياسي يتم فيه تخزين مصفوفات التحويل، ويتم ضرب كل الرؤوس المدخلة في مكدس المصفوفات.
كمثال توضيحي على استخدام مكدس التحويلات: تخيل مشهد بسيط يحتوي على نموذج مجسم لإنسان، حيث يقف هذا الشخص باتجاه محدد ولكن رأسه تنظر في اتجاه آخر، ويقف هذا الشخص في مكان محدد بإزاحة محددة عن نقطة الأصل. إذن فلدينا مجموعة من الرؤوس التي إذا حُملت فإنها ستمثل مجسم هذا الشخص. أولا: مصفوفة الإزاحة قد تستخدم ويتم إدخالها في المكدس وذلك لكي يتحرك الشخص ليصبح في المكان الصحيح، ومصفوفة التحجيم أيضاً سيتم إدخالها إلى المكدس وذلك لتحجيم نموذج الشخص بالحجم المناسب، وأيضاً سيتم إدخال مصفوفة الدوران حول المحور الرأسي Y وذلك ليتم تدوير المجسم في الاتجاه الصحيح، ثم سيتم إرسال فيض الرؤوس التي تُكون نموذج جسم هذا الشخص لإكمال عملية التسامت. ولكن ولأن نموذج رأس الشخص ينظر في اتجاه مختلف، سيتم إزالة مصفوفة الدوران من المكدس، وسيتم إدخال مصفوفة أخرى بزاوية دوران مختلفة حول المحور الرأسي Y أيضاً، وأخيراً سيتم إرسال مجموعة الرؤوس أو النقاط التي تمثل رأس هذا الشخص لإكمال عملية التسامت عليها.
بعد أن يتم تحويل كل النقاط في الفضاء الثلاثي ويتم وضعهم في المكان الصحيح بالنسبة للناظر، يجب أن يتم تحويلهم إلى صورة ثنائية البعد تتمثل في مستوى أو سطح ثنائي، وهذا التحويل يتم عن طريق تحويل الإسقاط (projection). إن أبسط أنواع الإسقاط هو الإسقاط المتوازي (orthographic projection) وهو ببساطة عبارة عن إزالة قيمة العنصر Z لكل الرؤوس ثلاثية الأبعاد التي تم تحويلها، ويتميز الإسقاط المتوازي بأن كل الخطوط التي كانت متوازية في المجسم أو المشهد في الفضاء الثلاثي البعد ستظل أيضاً متوازية بعد تحويلها وتمثيلها على سطح ثنائي البعد. ولكن الصور الحقيقية ليست كذلك فهي ذات شكل منظوري حيث أن الأجسام الموجودة في الصورة والتي تظهر وكأنها داخل عمق الصورة تظهر بشكل أصغر من الأجسام القريبة من الناظر. ولذلك فنحن نحتاج لنوع آخر يسمى الإسقاط المنظوري أو الفراري (perspective projection) ليتم تطبيقه على هذه النقاط.
مفهوم الفكرة يكمن في تحويل مجال (حجم) الرؤية المنظوري (perspective viewing volume) ليصبح مجال الرؤية المتعامد (orthogonal). مجال الرؤية المنظوري هو جذع هرم (frustum) والذي يُمثل بشكل هرمي مقطوع في أعلاه. في المقابل نجد أن مجال الرؤية المتوازي (orthographic viewing volume) هو شكل مربع يشبه الصندوق حيث فيه المضلع الأمامي (القريب) والخلفي (البعيد) near and far planes متوازيان تماماً مع مستوى سطح الصورة التي يتم عرضها بداخله.
يمكن تمثيل مصفوفة تحويل الإسقاط المنظوري كالآتي:
حيث تمثل F مسافة السطح البعيد (الخلفي) وتمثل N مسافة السطح القريب (الأمامي). إن المتجه الرباعي الناتج بعد تحويله (بعد أن يتم ضربه) بهذه المصفوفة سيحتوي على قيمة في المتغير المتجانس لا تساوي الواحد الصحيح، وإذا قمنا بمعالجة المتجه لنعيد تجانُسُه مرة أخرى أو قمنا بضربه بمعكوس قيمة متغير المتجانس، فسيصبح المتغير متجانساً بقيمة الوحدة وسيتنج لدينا متجه يمثل الإحداثي ثنائي البعد لقيم X و Y النهائية.
بمجرد أن يتم تحويل رؤوس المثلثات من فضاء العالم الثلاثي الأبعاد لتصبح مجرد إحداثيات ثنائية، فإن بعضاً من هذه الإحداثيات قد يقع خارج حدود نافذة الرؤية أو خارج المنطقة التي تظهر فيها هذه النقاط أو الرسوميات على الشاشة. فنستخدم تقنية القص (clipping) حيث في هذه العملية يتم حذف كل المثلثات والنقاط التي تقع خارج حدود منطقة الرؤية بحيث لا يتم رسم أي نقاط إلا التي تقع ضمن حدود نافذة (منطقة) الرؤية.
ساذرلاند-هودجمان Sutherland-Hodgeman هو أحد خوارزميات القص الأكثر شيوعاً، والذي يعمل كالآتي: يتم اختبار كل حافة من حواف مستوى سطح الصورة في كل مرة. ثم يتم اختبار كل النقاط المتوقع رسمها وتصييرها مع كل حافة، فإذا كانت إحدى هذه النقاط تقع خارج الحافة فسيتم حذفها وتجاهلها (إزالتها). بالمثل يتم اختبار كل حافة من حواف المثلثات والتي تتقاطع مع أي من حواف مستوى سطح الصورة، وهنا نرى أن نقطتي حافة المثلث تقع إحداهما خارج مستوى سطح الصورة فيتم إزالتها والأخرى داخل مستوى الصورة فيتم تمريرها.
الخطوة الأخيرة في عملية التسامت بشكلها القياسي يتم فيها ملء المثلثات الثنائية الإحداثيات والموجودة في مستوى سطح الصورة الثنائي البعد، ويطلق على هذه الخطوة أيضاً "التحويل المسحي" (scan conversion).
إن أول مشكلة تتبادر إلى أذهاننا في هذه المرحلة هي: هل نقوم برسم البكسل الحالي أم لا؟ حيث أنه لكي يتم رسم وإظهار أي بكسل، فإنه يجب أن يتواجد ضمن أي من المثلثات، ولا بد ألا يتم حجبه (occluded) عن طريق بكسل أو مثلث أخر. إن خوارزم خط المسح (scanline) هو أحد أشهر الخوارزميات الشائعة في عملية التحويل المسحي (لفحص وملئ البكسلات داخل مثلث محدد). ولأنه من الصعب أن نعرف إذا كان المُسامِت سيقوم برسم البكسلات من الأمام للخلف، فلابد من وجود طريقة أكثر تحديداً لضمان أن البكسلات التي يتم رسمها في الأمام، التي تمثل الأشياء الأقرب إلى الناظر، لن يتم استبدالها ورسم البكسلات البعيدة مكانها، ولحسن الحظ فإن هناك بعض التقنيات التي تحل هذه المشكلة وأشهرها تقنية مخزن العمق (Z-buffer)، ومخزن العمق هو عبارة عن مصفوفة قيم ثنائية البعد تناظر تماماً في حجمها حجم مستوى سطح الصورة، ولكن يتم تخزين قيم العمق لكل بكسل في هذه المصفوفة، وعندما يتم رسم أي بكسل لأول مرة فإنه يقوم بتحديث قيمة العمق المناظرة له في مخزن العمق، وعند رسم أي بكسل فإنه يتم اختبار قيمة العمق الخاصة به مع قيمة العمق المخزنة حالياً في المكان المناظر له في مخزن العمق، وبالتالي فإن البكسلات الأقرب في الأمام (للناظر) سيتم رسمها بينما يتم تجاهل البكسلات الأبعد.
لكي نرسم بكسل معين فإننا نحتاج لمعرفة لون هذا البكسل، وهنا نستخدم تقنيات التظليل وحسابات قيم الإكساءات (textures). ولتحديد مظهر أي مثلث فإننا نقوم بتطبيق وتوصيف خريطة بكسلات لونية (صورة نقطية) يطلق عليها خريطة إكساء (texture map)، حيث يتم ربط وتوصيف كل رأس من رؤوس المثلث مع الإكساء بوسطة ما يسمى بـ احداثيات الإكساء texture coordinate (u, v) وذلك في حالة استخدام الإكساءات الثنائية، ويتم تخزين قيم إحداثيات الإكساء مع كل رأس من رؤوس المثلث بجانب الإحداثي الفراغي الخاص به. عندما نقوم برسم بكسل معين فإننا نقوم أولاً بإيجاد لون البكسل المناظر له من الإكساء (عُنساء texel)، حيث نقوم بعمل استيفاء بين القيم اللونية من خريطة الإكساء لرؤوس المثلث الثلاثة التي يقع فيها هذا البكسل وذلك بحساب المسافة بين هذا البكسل والمسافة بين البكسلات الخاصة بكل رأس من رؤوس المثلث. يتم هذا الاستيفاء في حالة الإسقاط المنظوري بطريقة مختلفة قليلاً حيث يتم الاستيفاء بين إحداثيات الإكساء وبقسمة كل منهم بقيمة العمق الخاصة بهذا الرأس، وذلك للتخلص من مشكلة تشويه تسمى بـالتشوه المنظوري perspective foreshortening (في عملية تسمى بـالإكساء المنظوري perspective texturing).
لون البكسل النهائي يتأثر أيضاً بحسابات الضوء (lighting) والتي يجب أن تتم للتعديل على قيمة البكسل اللونية حيث يتم تظليل البكسل، ويتأثر ذلك بكمية الضوء المتواجدة في المشهد. أنواع الضوء التي قد تتواجد في أي مشهد بشكل عام ثلاثة أنواع: (1) ضوء اتجاهي (directional light) ويعبِر عن الضوء الذي يأتي من اتجاه واحد وتكون شدة الضوء فيها ثابتة في المشهد كله حتى لو بعدت المسافة، فمثلاً ضوء أشعة الشمس في حياتنا العادية يقترب جداً من كونه ضوء اتجاهي، حيث أن الشمس والتي هي بعيدة جداً تبعث أشعة الضوء والتي تظهر متوازية لمن يراقب وينظر إلى الأرض، وتكون قيمة هبوط شدة الضوء (falloff) صغيرة جداً ومُهملة. (2) ضوء نقطي (point light) ويعبر عن الضوء الذي له مكان محدد في الفراغ وتنبعث الأشعة منه في كل الاتجاهات، ويتأثر الضوء النقطي بظاهرة الاضمحلال (attenuation) حيث أن شدة الضوء تهبط كلما ابتعدنا عن مكان مصدر الضوء. لاحظ أن مصادر الضوء في حياتنا تهبط شدتها بمعدل تربيعي بالتناسب مع المسافة. (3) ضوء بُقعي (يشبه ضوء الكشاف) spotlight وهو عبارة عن ضوء له مكان واتجاه محدد في الفراغ وله زاوية تحدد المخروط الذي يمثل بقعة الضوء. النوع الأخير من أنواع الضوء يسمى الضوء المحيطي (ambient) وهو عبارة عن قيمة ثابتة تضاف لحسابات الضوء للتعويض عن تأثير الإنارة العامة (global illumination) والتي لا تستطيع عملية التسامت العادية محاكاتها وحسابها بطريقة دقيقة وصحيحة.
هناك العديد من خوارزميات التظليل المستخدمة في محركات المُسامتة (المحركات التي تقوم بعملية التسامت)، وكل هذه الخوارزميات تعتمد على المسافة بين الجسم (object) المراد تظليله (إضاءته وتلوينه) وبين مصدر الضوء وتعتمد أيضاً على الناظم (متجه الوحدة العمودي) normal vector للجسم المراد تظليله نسبة إلى اتجاه الضوء. الخوارزم الأسرع والمعروف بـالتظليل المسطح (flat-shading) يقوم بتظليل كل البكسلات التابعة لمثلث محدد بقيمة ضوئية ثابتة. وبالتالي لا يمكن إنشاء أسطح ذات مظهر ناعم بهذه الطريقة إلا لو قمنا بتقسيم الكائنات في المشهد لتتكون من مثلثات صغيرة جداً وكثيرة. هناك خوارزم آخر يسمى تظليل غوروه (Gouraud shading) ويقوم هذا الخوارزم بتظليل رؤوس المثلثات بشكل منفصل، فعندما يتم رسم البكسلات، يقوم باستيفاء القيمة الضوئية من الرؤوس. أما الخوارزم الأكثر دقة وبطئاً فيقوم بحساب القيمة الضوئية لكل بكسل منفصل على حدة والتي تعرف باسم تظليل فونغ، حيث يستخدم نوع استيفاء خطي ثنائي (bilinear interpolation) للنواظم ويُستخدم الناتج لحساب القيمة الضوئية اللونية مَحلياً.
للحصول على أعلى أداء من أي مُسامِت (محرك يقوم بعملية التسامت)، يجب أن نقلل من عدد المضلعات التي يتم إدخالها للمُصيير. هناك العديد من تقنيات تحسين الأداء التي طورت عبر السنين لإعدام (cull out) الأجسام التي لا يمكن رؤيتها.
إن أبسط طريقة لتجاهل وإعدام المضلعات هي بإزالة المضلعات الغير مرئية التي تقع في الجهة البعيدة من الناظِر، ويطلق على هذه العملية: إعدام الوجوه الخلفية (backface culling). وحيث أن أغلب المجسمات هي مجسمات مُغلقة مُصمتة بشكل كامل، فإن المضلعات الخلفية والبعيدة عن الناظِر سيتم دائماً تغطيتها بالمضلعات الأمامية والتي تُواجِه الناظِر إلا إذا كان الناظر ينظر من داخل هذه المجسمات. يتم عادة تحديد وجهة أي مُضلع (facing) عن طريق الطواف (winding) ويمثل الترتيب الذي يتم فيه إرسال الرؤوس إلى المُصيير. ويَستخدم المُصيير طواف يدور عكس عقارب الساعة أو معها (طواف عكسي) لتحديد وجهة المضلع: أمامي أم خلفي؟ front or back facing. ثم يتم رسم المضلع فقط إذا كانت وجهته تواجه اتجاه الناظِر ويتم هذا الاختبار بعد أن يتم تحويل المضلع ليصبح في فضاء الشاشة (screen space). لاحظ أن تقنية "إعدام الوجوه الخلفية" لا يتم تطبيقها على المثلثات المتراكبة (degenerate) أو التي تقع ضمن حجوم غير مغلقة.
هناك بعض التقنيات المتقدمة والتي تستخدم هياكل البيانات وذلك لتجاهل وإعدام أي مجسمات تقع خارج مجال الرؤية أو التي قد يتم حجبها بواسطة مجسمات أخرى أقرب. إن أشهر هياكل البيانات المستخدمة لهذا هي: تقسيم فراغي ثنائي (binary space partitions) والشجرة الثمانية (octree) والتجاهل بواسطة البوابات والخلايا (cell and portal culling).
برغم أن عملية التسامت معروفة منذ زمن إلا أن التطبيقات الحديثة ومع مرور الأيام تحاول أن تطبق بعض التحسينات والإضافات لزيادة مرونة وإمكانيات محرك التصيير والتسامت.
يتم إنشاء الإكساءات بدقة محددة، ولكن ولأن الإكساءات قد يتم تطبيقها على أي سطح أو مضلع قد يبعد أي مسافة من الناظِر، وبالتالي فإن الإكساء قد يظهر بأحجام مختلفة أثناء عرضه في الصورة النهائية للمشهد، ونتيجة لذلك، فإن بكسل واحد على الشاشة قد لا يتم توصيفه من خلال تكسل واحد من الإكساء. لذلك فإن بعض تقنيات ترشيح الإكساءات (texture filtering) قد يتم تطبيقها للحصول على صورة واضحة أثناء عرضها عند أي بعد من الناظِر، وهناك بعض الطرق المستخدمة لذلك والتي عادة تتناسب فيها الدقة مع تعقيد الحسابات المستخدمة في عملية الترشيح.
إكساء البيئة (environment mapping) هو أحد طرق توصيف الإكساءات بحيث أن قيم إحداثيات الإكساء تعتمد على مكان الناظِر. أحد أكثر التطبيقات شيوعاً على سبيل المثال عندما نريد محاكاة الانعكاسات (reflection) الموجودة على أجسام لامعة. وقد يقوم أحد الأشخاص مثلاً بإنشاء خريطة إكساءات بيئية للبيئة الداخلية لغرفة ما، ويقوم بتطبيق الإكساء على كأس موجود في وسط الغرفة ومكون من خامات مادة معدنية (metal material)، فعندما يتحرك الشخص داخل الغرفة حول الكأس فإن إحداثيات الإكساء الخاصة برؤوس الكأس تتحرك بالتبعية مما يعطي مظهر الانعكاس المعدني.
إكساء النتوءات (bump mapping) هو أحد الطرق الأخرى لتوصيف الإكساءات، حيث أن الإكساء في هذه الحالة لا يقدم قيم لونية للبكسلات، بل يقدم قيم تمثل عمق البكسلات عندما يتم تطبيقها على المسطحات والمضلعات، وبشكل خاص قد يُستخدم إكساء النتوءات مع بعض مظللات البكسلات (pixel shaders) لإنشاء إحساس يقدم مظهر خشونة المسطحات (roughness) بشكل يعتمد على الضوء وذلك لإضفاء مزيد من الواقعية وتحسين المظهر.
يزداد عدد المضلعات الموجودة في الكثير من مشاهد التطبيقات الحديثة، ولكن الناظر قد يحتاج فقط لأن يرى تفاصيل الأجسام القريبة منه وليس هناك داعي (يسبب عبئاً) لإظهار الأجسام البعيدة بدرجة تفصيل عالية، إن خوارزم التحكم في مستوى تفصيل وتعقيد المجسمات (level of detail) يقوم بالتعديل على تعقيد شكل المجسمات، بحيث يتغير ذلك كـتابع (function) يعتمد على المسافة بين الجسم والناظِر. فالأجسام القريبة جداً يتم إظهارها بأعلى مستوى من التفصيل ويتم تعديل مستوى التفصيل كلما ابتعدنا بشكل ديناميكي، والأجسام البعيدة جداً قد تُستبدل كلية ببعض الأشكال الشبحية (sprites).
إن حسابات الضوء في عملية التسامت التقليدية لا تأخذ بعين الاعتبار تغطية وحجب الأجسام. هناك طريقتين شائعتين في التطبيقات الحديثة لإنشاء الظلال وتوصيفها وهما إكساء الظلال (shadow mapping) وحجوم الظلال (shadow volumes).
في بداية التسعينيات، ظهرت مُسرعات الأداء والتي أصبحت متاحة لمستخدمي أجهزة الحاسوب المنزلية بشكل عادي، وبينما كان مبرمجو التطبيقات الرسومية يعتمدون على كتابة أوامر منخفضة المستوى بلغة التجميع (Assembly) لتحسين أداء تطبيقاتهم، فإن أغلب البرامج الحديثة تُكتب الآن وتتخاطب مع بعض الواجهات (interfaces) ضمن مجموعة من الواجهات المخصصة (APIs) لتقديم خدمات للاستفادة من إمكانيات الرسوميات المتاحة، والتي بدورها تُدير وتتحكم في معالج الرسوميات (GPU).
تقدم معالجات الرسوميات الحديثة والمتاحة هذه الأيام، الدعم لمظللات البكسلات القابلة للبرمجة والتي توفر للمبرمج الكثير من المرونة. ويستمر التطوير في هذا الاتجاه ليصبح خط إنتاج الرسوميات قابل للبرمجة بشكل كامل.
"Concepts". Scalable Vector Graphics. W3C. 2003-01-14
تحديد السطوح المخفية
خوارزم برسنهام لرسم الخط، كأسلوب تقليدي في التسامت
التصيير بواسطة المسح الخطي لتسامت خط بعد خط
التصيير (رسوميات كمبيوتر) للمزيد من المعلومات العامة
خط إنتاج الرسوميات للتسامت الذي يحدث داخل العتاد
معالج تسامت الصورة للتسامت ثنائي البعد في أنظمة الطباعة
الرسوميات المتجهية كمصادر رسومية
رسوميات التسامت لرؤية النتائج
تحويل التسامت إلى صورة متجهية كعملية عكسية للتسامت
الواجهة البرمجية لمكتبة الدايركت إكس DirectX API
الواجهة البرمجية لمكتبة أوبن جي إل OpenGL API
المصفوفات في موقع الرياضيات MathWorld