gamerz

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى افلام العاب وهردوير


2 مشترك

    كيف تعمل البطاقة الرسومية (كروت الشاشة)

    miro the king
    miro the king
    the king of all


    عدد المساهمات : 28
    نقاط : 5814
    السٌّمعَة : 3
    تاريخ التسجيل : 12/12/2009
    العمر : 28

    كيف تعمل البطاقة الرسومية (كروت الشاشة) Empty كيف تعمل البطاقة الرسومية (كروت الشاشة)

    مُساهمة  miro the king الأحد ديسمبر 13, 2009 11:37 pm

    اكتشف .. كيف تعمل بطاقة الرسوميات ؟!

    لن أقول أن بطافة الرسوميات هي التي تتولي اظهار الصور علي الشاشة !

    ولن أقول أن بطاقة الرسوميات هي التي تتولي رسم المشاهد ثلاثية الأبعاد في الألعاب الحديثة !

    ولن أقول أن بطاقة الرسوميات هي أكبر وأرقي مثال لمعالجة البيانات ، وهي أكثر الأمثلة وضوحا وبساطة !

    ولن أقول أنها حقّا قصة ، قصة غاية الامتاع عن الحاسوب !

    لن أقول كلّ ذلك ، الأفضل أن تعرفوه بأنفسكم ، وهي عملية سهلة ، فقط تابعوا ...

    ***

    وبداية القول بعيدة تماما عن كل ما يمتّ للرسوميات بصلة !

    والقصة تبدأ بي وأنا جالس في حجرتي أستمع الي المذياع العتيق ، وهو يقرأ نشرة الأخبار ، وهو الأمر الذي لم يكن يهمّني كثيرا ، فلقد شرد ذهني في أمر ما .

    ولأن المذياع يتميز بصفة الالحاح ، فلا يمكنه التعب أو التوقف لأخذ الأنفاس ، بل ويمكنه الحديث بصوت عال دون كلل.. قررت خفض صوته حتي أفرغ الي ما في ذهني ، دون تشتيت !

    أرجو من الأخوة تجاهل كل الهراء الشخصي الذي يسبق اللحظة القادمة ، تلك اللحظة هي بغيتنا الحقيقية ، لحظة وصول يدي الي مفتاح المذياع ، لتدير المفتاح الي اليمين ، لينخفض الصوت الي حد كبير .

    حتي هذه اللحظة لا تهمنا كلها ، والذي يهمنا علي وجه الخصوص هو مشهد مفتاح الصوت ، والمكتوب عليه تدريج رقمي من 0 الي 2، ممثّلا درجة ارتفاع الصوت .

    لطالما كرهت هذا المفتاح ، بسبب تدريجه السخيف ، والذي لا يحوي الا ثلاثة مستويات فقط ، عال ، منخفض أو مكتوم ، و كان الأولي أن أكره المذياع العتيق كلّه ، لكنني لم أستطع أن أمنع نفسي من التساؤل .. لماذا لم يصنع هذا الأحمق بدرجة أو درجتين اضافيتين ؟ .. فكثيرا ما أحتاج الي ضبط الصوت علي ارتفاع معين ، ما بين المنخفض والمرتفع ، ويمنعني من ذلك صغر تدريجه .


    صورة مزيّفة لمذياعي العتيق .. لا للحسد !

    وانجرف بي الخيال لأتصور تدريجا من 0 الي 5 ، مما يتيح لي ستة مستويات كاملة من الصوت ، عال جدا ، عال ، متوسط ، منخفض ، منخفض جدا ، مكتوم .. ولم أتمالك نفسي من الابتسام ، هذا هو النعيم الحقيقي !

    ثم تداركت نفسي وتذكرت أنني أكتب موضوعا عن بطاقات الرسوميات ، وليس عن التغزّل في محاسن مذياعي !

    وعندما فعلت ذلك ، قررت بدأ الموضوع بجقيقة صادمة ، وهي حقيقة أن الشاشة أهم من بطاقة الرسوميات بعدّة مرات .

    وارتسم في ذهني صورة أحدهم ، يضحك في سخرية ، ويقول مستهزئا : "بالطبع هي أهم من بطاقة الرسوميّات ، أليست هي التي تعرض الصور في النهاية أيها الـ.. "

    ثم انقطعت الفكرة عند هذا الحدّ -لأسباب واضحة- ، فاستكملت سيل أفكاري الأصلي ، وأكملت .. بل هي أهم من البطاقة الرسوميّة من ناحية الحوسبة ، وليس من ناحية الرسم والصور !

    أبعدت عن ذهني صورة أحدهم ، وفكه السفلي يسقط في بلاهة ، معبّرا : "ما علاقة الشاشة بالعمليات الحسابية؟"

    ان الشاشة ايها السادة مثل مذياعي العتيق تماما ، لكن بدون مفتاح للتحكم في الصوت ... هي مذياع فريد من نوعه للصور والعروض ، ولأنها من نوع فريد فهي تحتاج الي مفتاح فريد من نوعه أيضا للتحكم في الصور التي تعرض عليها!

    المذياع يصدر صوتا ، وبه مفتاح للتحكم في الصوت ، والشاشة تصدر صورا ، وتحتاج لمفتاح للتحكم في الصور !

    سمّاعة المذياع تحوي طبلة رقيقة تهتز بمرور التيار الكهربي فيها لينتج الصوت ، بينما تحتوي الشاشة علي شبكة كبيرة من ملايين من نقاط الفوسفور الدقيقة التي تتلون بالأحمر والأخضر والأزرق بمجر مرور التيار الكهربي عليها .

    تدريج مفتاح الصوت في المذياع لا يحتوي الا علي ثلاثة مستويات ، وهذا يرجع الي تركيب السماعة العتيق ، فهي لا تحتوي الا علي ثلاثة مستويات لمرور التيار ، كما تمتلك طبلتها مرونة محدودة للاهتزاز ، لذا فلا تستطيع الا اصدار صوت عال أو صوت منخفض ، ولا نستطيع لومها فهي عتيقة !

    أما شاشة الحاوسب ، فتحتوي علي ملايين النقاط كما قلنا ، وهي بهذا تحتاج الي مفتاح ذا تدريج كبير للغاية ، حتي نستطيع التحكم في كل نقاطها ، ومن ثم اخراج الصور عليها !

    الأذكياء منكم لاحظوا بالفعل أن مفتاح الشاشة هو بطاقة الرسوميات ، لكنني لن أستسلم بسهولة ، بل وأعدكم بمفاجاة أخري وأخبركم أن بطاقة الرسوميات هي مفتاح حقيقي ، لكن بدون تدريج !!

    تدريج الشاشة محفور في الذاكرة ، ولتكن الذاكرة الرسومية ، أو الذاكرة العشوائية ، أو حتي ذاكرة القرص الصلب!

    مالـ .. ؟ ماذا تقول .. كيف يمكن .. ؟

    تعالوا معي نصنع تدريجا للشاشة أولا ، ثم نتفاهم بعدها !

    ****

    نحن الآن بداخل الحاسوب ..

    وككلمة سريعة لمن كان يعيش في كهف وانتقل منه حديثا ، أقول أن الحاسوب ما هو الا عبارة عن دوائر كهربية لا تملك سوي أن تنغلق او تنفتح ، لتوصل التيار الكهربي أو لتوقفه .

    اقتباس:
    ما معني دوائر كهربية ؟ .. المعذرة سيدي الفاضل .. الحد الأدني لفترة انتقالك من الكهف يجب أن تكون ثلاثة سنوات ، أقل من ذلك فلا تقرأ هذا المقال !
    والدوائر الكهربية بذللك لا تحتوي الا علي مستويين فقط ، فتح وغلق ، صفر و واحد ، كيف أحصل علي تدريج كبير للشاشة من مستويين فقط ، أو رقمين فقط ؟!

    تعالوا نجرب هذا الاحتمال قليلا ، الشاشة تعمل عند ضبط التدريج علي الرقم واحد ، وتغلق عند ضبط التدريج علي الرقم صفر !

    ياللروعة ، لقد حصلت علي ما هو أسوأ حتي من مذياعي العتيق !

    دعونا لا نخلط الأمور أيها السادة ، المفتاح ذو التدريج المزدوج يتحكم في ملايين من نقاط الفوسفور ، التي قد تتلون بثلاثة ألوان ، ان معني استخدامي لتدريج مزودج هو حصولي علي لونين فقط ، أو ما هو أسوأ ، حصولي علي لون واحد للمستوي الأول ، ولا شئ للمستوي الثاني !

    1 لون معيّن .
    0 لون آخر ، أو لا لون (صفر) .

    قمّة السخف .. أليس كذلك ؟

    بالصدفة نعرف أن الواحد أو الصفر ، يساويان 1 Bit بلغة الحاسوب ، فالبت الواحدة اما واحد واما صفر !

    تعالوا نجرب زيادة التدريج ، والزيادة ستكون باستخدام 2 بت ، سواء صفرين أو واحدين أو الاحتمالات بينهما

    00 لون أحمر
    01 لون أخضر
    10 لون أزرق
    11 لون آخر (محصلة أو خليط لونين من الألوان الثلاثة السابقة) .

    رائع ! لقد حصلت علي أربعة ألوان بدلا من لونين ، هذا والله لتحسن كبير ، والانسان طمّاع بطبيعته ، تعالوا نرضي طمعه ونزيد التدريج ليستخدم 3 بت ، أي ثلاثة أصفار ، أو ثلاثة واحدات ، أو الاحتمالات بينهما ، ولن أحتاج حتي الي تغيير النظام القديم (2بت) ، بل سأضيف عليه بت جديدة فقط :

    000 لون أحمر
    010 لون أخضر
    001 لون جديد
    011 لون جديد

    100 لون أزرق
    110 لون جديد
    101 لون جديد
    111 لون جديد


    يالله ! ، لقد حصلنا علي ثمانية ألوان ، أي الضعف ، بمجرد زيادة التدريج واحد بت .... اذن بالمثل ، عندما نزيد نظام التدريج واحد بت جديدة ، ليصبح 4 بت نحصل علي ضعف النظام السابق ، أي 16 لون :

    0000 لون أحمر
    0001 لون آخر
    0011 لون آخر
    0111 لون جديد
    1111 لون جديد
    1000 لون أزرق
    1100 لون جديد
    1110 لون جديــــد
    1010 لون جديــــــــــــــــد .. الخ

    وبالمثل ، عند زيادة التدريج الي 5 بت ، نحصل علي ضعف عدد الألوان ، أي 32 لون !
    6 بت تساوي 64 لون ..
    7 بت تساوي 128 لون ..
    8 بت تساوي 256 لون..
    9 بت تساوي 512 لون ..
    10 بت تساوي 1024 لون ، ياللهول !
    11 بت تساوي 2048 لون ..
    12 بت تساوي 4096 لون ..
    13 بت تساوي 8192 لون !

    ثم نقفز الي 16 بت والتي تساوي 65,536 لون !
    وبقفزة سريعة الي 24 بت نحصل علي 16,777,216 لون ، اي 16 مليون لون تقريبا !
    هل رأيت صديقي رجل الكهف ، كيف وصلنا بالتدريج من لونين الي ستة عشر مليونا ؟!
    هذه هي عبقرية الحاسوب يا صديقي العزيز ، عبقرية تكرار الصفر والواحد حتي نحصل علي ملايين المستويات .

    انها عبقرية تحويل التدريج الرقمي (الصفر والواحد) Digital ، الي التدريج التناظري (الألوان) Analogue .

    وغني عن الذكر أن هذا لا يحدث فقط في الشاشات ، وانما في السمّاعات أيضا (سماعات الحاسوب الحديثة وليست سمّاعات مذياعي الأحمق العتيق) ، وفي نظام التشغيل ، وفي برامج الحاسوب ، وفي كل شئ داخل الحاسوب .

    تخزن تكرارات الصفر والواحد في ذاكرة الحاسوب ، فلتخزين صورة لمذياعي الأحمق ، يجب ان أحدد أولا طول وعرض الصورة ، والطول والعرض هنا لا يقاسا بالمتر ، وانما بالنقطة Pixel ، ويطلق علي هذا اسم دقة الصورة Resolution.

    ونعود لمذياعي الأحمق ، وبفرض أن صورته لها أبعاد 64 نقطة طولا ، و 32 نقطة عرضا ، فان الصورة تحتوي علي 2048 نقطة كمساحة كليّة (المساحة هي الطول X العرض) .

    2048 نقطة هو عدد كبير ، ويصبح أكبر اذا بدأت في تحديد دقة الألوان ، أي تدريج الألوان ( 1 بت أو 2 بت ، ..الخ) ، فباستخدام تدريج 4 بت ، يصبح حجم الصورة هو 2048X4= 8192 Bit !

    وباعتبار أن رجل الكهف يعرف أن 8192 بت ، تقسم علي 8 لنحصل علي العدد بالبايت ، (الناتج هو 1024 ) ، ثم تقسم علي 1024 لنحصل علي العدد بالكيلو بايت ، لتصبح مساحة صورة مذياعي العتيق هي 1 كيلوبايت علي القرص الصلب .

    الآن كل ما علي بطاقة الرسوميات أن تفعله هو أن تحول هذا الواحد كيلوبايت الي اشارات تناظرية تنتقل الي الشاشة لترسم صورة مذياعي العتيق بطول 64 نقطة ، وعرض 32 نقطة ، وباستخدام 16 لونا فقط (تدريج 4 بت) ، وهي مهمة لا تتطلب أي مجهود يذكر أو أي قدرة حوسبية اطلاقا .

    حتي لو كان عرض الصورة 1920x1080 ، (أي 2 مليون نقطة ) ، وبفرض استخدام دقة ألوان 24 بت ، (أي أن مساحة الصورة حوالي 6 ميجابايت ) ، فان بطاقة الرسوميات لن تبذل اي مجهود في قراءة الصورة من الذاكرة ، وعرضها مباشرة علي الشاشة !

    ما الذي تفعله بطاقة الرسوميات اذن ؟

    ***

    اذا سمح لي الأعضاء المحترمون هنا ، سوف أصطحب صديقي رجل الكهف في رحلة سريعة الي معامل علم وظائف الأعضاء في دبلن بألمانيا ، سوف نتحدث الي الدكتور "هانز" ، عن العين البشرية وعن استقبالها للصور ، سوف نتجاهل حاجز اللغة في هذه الرحلة الخيالية ، وعندما نفعل ذلك يمكننا سماع الدكتور هانز وهو يقول :

    -"في الواقع لا تستطيع العين استقبال أي نوع من الصور سوي الصور الثابتة ، والذكاء في تصميمها ، أنها تلتقط عددا كبيرا من الصور في الثانية الواحدة ، والمقصود بتصميم العين هنا أنها تتكون من عدد كبير من الخلايا البصرية ، تسمّي شبكية العين ، مثل نقاط الشاشة بالضبط ، فائدة هذه الخلايا هي تكوين الصور ، وهي تفعل ذلك صورة صورة كما قلنا ، وتبعث بهم صورة صورة الي المخ ، والذي يقوم بترتيبهم بشكل متتابع ، بحيث تعطينا الايحاء ان الصورة تتحرك ، بينما هي في الواقع مجموعة كبيرة من الصور الثابتة "

    -"انها تشبه الكاميرا في عملها هكذا ، أليس كذلك ؟"

    -"تماما"

    -"ذكرت عبارة (الذكاء في تصميمها) ، دكتور هانز ، هل تقصد ذكاء الخالق ؟ "

    -"كلا بالطبع لا أقصد ذلك ، ما علاقة الخالق بالموضوع ؟ ، تصميم العين هو نتيجة عملية تطوّر غاية في التعقيد"

    -"حقا؟ اذن لماذا لم تتطوّر علي شكل كاميرا ؟ لماذا لا نجد آلات ذات ذكاء اصطناعي فائق نتيجة عملية التطور غاية التعقيد تلك ، ما الأسهل في رأيك دكتور هانز ، تطوّر عين بشرية معقّدة ، أم تطوّر كاميرا من المعدن البسيط ؟ "

    -"ماذا تحاول أن تثبت مستر حميدو ؟ ما أتكلم عنه هو نظرية أثبتها العلم الحديث ، ما علاقة هذا بالدين ، بل لماذا يجب أن تكون لها علاقة من الأساس ؟ "

    -"لا عليك مستر هانز ، انها طريقة تفكيرنا ، لن تستطيع أن تفهمنا أبدا للأسف ، ولو أنني في موضعك ، لن أقول اثبتها العلم الحديث ، فتلك النظرية بالذّات تحوي من الشقوق ما يكفي لابتلاع قارة افريقيا بأكملها ! "

    ***

    تعلمنا من رحلة دبلن المشئومة أن العين لا يكن أن تستقبل سوي صورا ثابتة ، والكاميرا أيضا لا يمكن أن تستقبل سوي صورا ثابتة ، ونتيجة لذلك فالشاشة لا يمكن أن تعرض سوي صورا ثابتة أيضا ، والذكاء هنا أن يتم عرضها بسرعة شديدة ، بحيث توازي سرعة التقاط العين للصور الثابتة ، والمحصلة النهائية هي أن المخ البشري يشاهد حركة الصور .

    الصور الثابتة تسمّي اطارات Frames ، وفائدة بطاقة الرسوميات الأساسية هي اخراج أكبر عدد ممكن من هذه الاطارات/الصور الثابتة بحيث تبدو مقبولة أمام العين ، اذا أخرجت البطاقة عدد قليلا من الاطارات ، تبدو الصورة بطيئة أمام العين ، ومتقطعة بشدة ، أما اذا كان عدد الاطارات كبيرا ، زادت سلاسة عرض الصور ، وأصبحت أكثر قبولا للعين البشرية ، والتي يقول العلماء أنها تستطيع استقبال أكثر من 200 صورة ثابتة/اطار في الثانية الواحدة .

    ونتيجة لطبيعة عمل البطاقة ، واختصاصها بالصور الثابتة ، وجب تصميمها بحيث تصبح ملائمة تماما لهذه الوظيفة .

    مم تتكون الصور ؟ من ألوان بالطبع ، والألوان تتكون من تكرارات لرقمي الواحد والصفر في ذاكرة الحاسب ، ولأن الصور ليست مجموعة من الألوان العشوائية بلا حدود ولا قيود ، بل تحتوي علي أجسام مختلفة بخطوط وألوان واضحة ومحددة ، فوجب العثور علي طريقة تحفظ لون كل جسم ، بحيث تصبح مرتبطة به وبتغيير موقعه في الصورة.


    صور الحاسوب ليست مجرد ألوان عشوائية غير منظمة ..

    انظر لهذا الشكل :


    لا تنخدع بهذا الشكل ، فهو عبارة عن مربعين متشابكين ، هل تستطيع تمييز أي من المربعين يكون أمام الآخر ؟

    حسنا أنت لا تستطيع تمييز أي المربعين أمام الآخر ، وفي الحقيقة فلا يجب عليك ذلك ، لكن الحاسوب يجب عليه أن يعرف ذلك جيدا ، لأنه يحاول أن يقنعك أنك تلعب في عالم يتكون من طول وعرض وارتفاع ، عالم ثلاثي الأبعاد مثل العالم الحقيقي ، عالم حيث كل جسم فيه له سمك وكتلة وملمس ، وله حدود وحواف واضحة يستقل بها عن غيره .

    والحل هو تطوير منظومة الرؤوس Vertex !

    انظر معي الي هذا الخط الأحمر ، هذا الخط له بداية ونهاية ، أ و ب ... أستطيع التعرف بسهولة علي هذا الخط من بين مئات الخطوط الأخري لأن له رأسين لهما اسمين مميزين .


    الخط الأحمر له رأسين مميزين أ و ب ، يمكن التحكم في الخط من خلال الرأسين .

    أ وب هما مجرد اسمين تخيليين ، وفي عالم الحاسوب لا يمكن تسمية أي شئ الا بأسلوب الصفر والواحد ، وعلي هذا الأساس ، فيجب تحويل أ الي واحد ، وب الي صفر مثلا .

    تظهر المشكلة عند استخدام أكثر من خط في أكثر من شكل ، وهو الشئ المؤكد حدوثه في أي مشهد ثلاثي الأبعاد ، أو حتي ثنائي الأبعاد ، حيث أحتاج الي عدد كبير من الرؤوس ، وكل رأس يحتاج الي تسمية خاصة به !

    اذن نعود لاستخدام نظام التدريج القديم ، فتسمية الرأس سوف تكون عبارة عن تسمية رقمية باستخدام تكرارات الواحد والصفر ، مثل نقاط الألوان بالضبط .



    هذا المربع يحتوي علي أربعة رؤوس تحتاج الي التسمية ، يجب الوصول الي تدريج أسماء يكفي هذا العدد ، وأي عدد أكبر منه .

    ليس الأمر بهذه البساطة ، فيجب أن يضع نظام التسمية في اعتباره أي الرؤوس يقع أمام الرؤوس الأخري ، وأي الرؤوس تقع خلفه .


    باستخدام نظام الرؤوس اتضحت الصورة ، المربع علي اليمين يقع أمام المربع علي اليسار .

    الطريقة الوحيدة لتحقيق ذلك ، هي استخدام نظام تدريج ثلاثي ، ومعني ثلاثي أنه يرمز الي الأبعاد الثلاثة ، الطول والعرض والعمق (أو الارتفاع) ، وذلك بعمل شبكة وهمية تحتوي علي التدريج المطلوب :

    X العرض ، Y الطول ، Z العمق


    باستخدام هذا الأسلوب يصبح لكل رأس ثلاثة تدريجات مختلفة ، تمكنه من الحصول علي كينونة مستقلة ، كما تتمكن البطاقة الرسومية من معرفة اي الرؤوس يكون في الأمام وأي الرؤوس يكون في الخلف ، مما يعطي العملية طابع العمق ، أو التجسيم .

    وعلي هذا فالرؤوس هي نقاط عادية من نقاط الشكل ، لكن ما يميزها هو أنها تحتفظ بقيم لثلاثة أبعاد أو تدريجات مختلفة ، ويمكننا أن نخمن أن اي من X أو Y او Z ، قد يحصل علي تدريج بدقّة 4 بت أو 16 بت أو حتي 64 بت ، مما يعني امكانية الحصول علي أعداد غير محدودة من الرؤوس .

    فائدة الرؤوس كما قلنا ، هي ان يكون لكل شكل نقاط تميزه عن الأشكال الأخري ، ومن خلال هذه النقاط يمكنني التحكم في الشكل مباشرة ، وكمثال علي ذلك نعود للخط الأحمر ، وبفرض أن الرأس أ له قيم 3 ، 4 ، 5 ، للابعاد X ، Y ، Z ، ، وأن الرأس ب له قيم 6 ، 8 ، 5 ، لنفس الأبعاد (تم تحويل تكرارت الصفر والواحد الي أرقام للتبسيط) ، فان تصميم معالج بسيط للجمع ، نسمّيه معالج الرؤوس Vertex Processor ، هو كل ما أحتاجه لتحريك هذا الخط يمينا ويسارا ، وفي كل اتجاه ممكن !

    ويتحقق ذلك في بساطة ليس لها مثيل باضافة 5 علي قيمة البعد X فقط ، مما يسبب حركة الخط 5 درجات الي اليمين ، ليصبح للرأس أ قيم 8 ، 4 ، 5 ، وللرأس ب قيم 11، 8 ، 5 ، ويتغير موضع الخط الي اليمين بمقدار 5 درجات!


    اضافة 5 علي البعد X ، تعني أن يتحرك الرأسين أ و ب الي اليمين بمقدار 5 درجات ، وحركة الرأسين تعني حركة الخط الأحمر كله لأنهما جزء منه ، وبذلك أمكنني التحكم في الخط عن طريق تغيير قيم رؤوسه !

    بالمثل عند رغبتي في تحريك هذا الخط الي اليسار ، فانني أطرح من قيمة البعد X ، ما مقداره 5 مثلا ، والطرح لمن لا يعرف هو عملية جمع قيمة سالبة ، أي أنها لا تحتاج الي معالج متخصص في معظم الأحوال !

    لتحريك الخط الي أعلي أو الي أسفل ، فانني أغير من قيمة البعد Y !
    ولتقريب الخط من الشاشة (تكبيره) ، أو ابعاده (تصغيره) ، فانني أغير من قيمة البعد Z !

    عملية في غاية البساطة والتفاهة حقيقة !

    وفيما بعد أضاف المطورون بعدا رابعا سمّوه الوزن Weight ، أي وزن الرأس ، وقابيلتها للحركة ، واختصاره W ، لتصبح قيمة الرأس بأربعة أبعاد X Y Z W .

    وتتكون كل الأجسام ثلاثية الأبعاد من مجموعة رؤوس تحدد تزين حدودها وزواياها :


    تحفظ قيم هذه الرؤوس في الذاكرة ، مثل قيم الألوان ، وتستدعي بطاقة الرسوميات هذه القيم عند رغبتها في معالجتها ، اي في تحريك الأجسام والتحكم فيها .

    لكن عمل بطاقة الرسوميات لا يقتصر علي تحريك الأجسام ، وانما يتضمن أيضا ، تغيير وتحوير شكلها ، باضافة بروزات أو انبعاجات ، بتشويه سطح الجسم ، و باختراق أجسام لأجسام أخري ، وبتلوين مناطق معينة في الشكل بألوان معينة ، واستخدام مؤثرات معينة علي أجزاء معينة من الشكل .

    كل تلك العمليات تتطلب أن تمتلك بطاقة الرسوميات تحكما كاملا في أسطح الأشكال ثلاثية الأبعاد ، وليس في حدودها فقط ، وعلي هذا فيجب أن تحتوي الأسطح علي رؤوس فرعية أخري ، لتوفر التحكم المطلوب ..

    ومن هنا ينبثق نظام المضلّعات .

    ونظام المضلّعات يعني أن يتم تقسيم الشكل الي عدة خلايا فرعية صغيرة ، تسمي مضلّعات Polygons ، هذه الخلايا الصغيرة أو المضلعات تعتبر نقاط تحكم في سطح الشكل كله ، مما يتيح الفرصة لعمل أي شئ وكل شئ للشكل ثلاثي الأبعاد .


    هذه اليد تتكون من آلاف المضلعات الصغيرة ، والتي تتيح التحكم الكامل في كل نقطة علي سطح اليد .

    كل خلية صغيرة ، أو مضلّع ، عبارة عن عدد من الرؤوس المتشابكة ، التي تحدد حدود كل مضلع !


    هذا المربع يتكون من أربعة مضلعات ، وكل مضلع به أربعة رؤوس ، والمجموع الكلّي للرؤوس في الشكل يساوي 9 رؤوس ، ولا يستطيع أحد أن ينكر أن الشكل الآن أصبح أكثر مرونة للتحكم فيه .

    وغني عن الذكر أن كل رأس من الرؤوس التسعة لها وصف منفصل ، يعتمد علي أربعة تدريجات كما قلنا ، وهذا يزيد من عبأ تسجيل قيم كل هذه الرؤوس في الذاكرة ، وعلي الرغم من ذلك ، فان تلك العملية غير قابلة للاستغناء ، بسبب الدقة والمرونة الشديدة التي توفرها .

    ولو نظرنا الي المربع السابق ، سوف نجد أن تقسيمه الي أربعة مربعات هو خطوة منطقية وصحيحة ، وعلي هذا يبدو المربّع مرشحا ممتازا ليكون الشكل العالمي لكل المضلعات ، ولكن هذا غير صحيح ، فكيف يكمن تقسيم الدوائر والأشكال ذات المنحنيات الي مربعات ؟

    ونتيجة لذلك ، اتجه المطورون الي تقسيم كل الأشكال الي مثلثات ، بدلا من مربعات ، ويتيح هذا عمل اي شكل منحني يمكن تخيله ، وأي شكل غير منحني كذلك :


    المستطيلات والدوائر يمكن عملها بالمثلثات بنجاح تام .


    صورة كهف في الجبال من المثلثات .


    صورة وجه انسان من المثلثات .


    صورة وجه عالي الدقة من المثلثات أيضا .

    وكما ذكرنا سابقا ، فان استخدام المضلعات سواء كانت مربعات أو مثلثات ، يتيح تحكم كامل في أي جزء من أجزاء الشكل ثلاثي الأبعاد ، سواء كان وجها أو سيارة او شجرة أو حتي جبلا كاملا .

    فيمكن للبطاقة الرسومية الآن تحريك الشكل كله الي اي اتجاه ممكن ، ويمكنها أيضا لفه وقلبه وتكبيره وتصغيره ، أو تكبير وتصغير أي جزء منه ، كما يمكنها تلوينه بعدة ألوان مختلفة ، كما يمكنها الاقتصاص منه ، أو تدميره ، أو تعديل سطحه .. وعمليات أخري كثيرة لا حصر لها ..

    بالطبع يحتاج كل ذلك الي معالجات قوية وسريعة ، ولهذا تخصص معالجات جمع وضرب منفصلة لكل تلك العمليات ، والتي تجري علي قيم رؤوس الشكل كما شرحنا في مثال الخط الأحمر ، ومع استخدام اسلوب المضلعات ، أصبح عدد رؤوس الشكل الواحد مقدرا بالآلاف ، وعدد رؤوس المشهد الكامل متجاوزا للملايين ، مما يؤكد علي حاجة البطاقة الرسومية الي معالجات قوية لأداء كل تلك العمليات .

    تسمي كل تلك العمليات باسم تنصيب الرؤوس Vertex Setup ، وتقوم بها معالجات Vertex Processors ، سابقا ، والآن يمكن القيام بها باستخدام أي من معالجات التظليل العادية Shader Processors .

    ***

    الاقلاع !

    الصدمة الثالثة في هذا المقال ، أن الأشكال ثلاثية الأبعاد لا تتواجد الا في صورة رؤوس داخل معالجات التظليل ، ولا تحتوي علي أية خطوط علي الاطلاق ، وذلك لتسهيل التحكم في الرؤوس فقط ، دون الالتزام بأي خطوط أخري.

    بعد ان تنتهي البطاقة الرسومية من أداء كل حساباتها علي الرؤوس ، تبدأ في التفكير في رسم الخطوط ، والخطوط بالطبع ترسم عن طريق النقاط Pixels .

    وهنا يبدأ الابداع الحقيقي ، هنا يقلع الصاروخ حاملا القمر الصناعي ، هنا يبدأ المرح الذي ليس له مثيل !

    يجب علي طباقة الرسوميات الآن توصيل كل الرؤوس ببعضها ، في عملية تسمي Interpolation ، أو التوصيل ، وكأنها لعبة توصيل النقاط كالتي نراها في مجلات الأطفال .



    Interpolation ، أو فن توصيل النقاط ، هو علم حسابي صعب ، يختص بالكيفية المثلي لتوصيل مجموعة من النقاط التي لا يربطها رابط ، والتوصيل يتم برسم نقاط Pixels علي شكل خطوط .


    بعد الانتهاء من التوصيل .. ، النقاط الحمراء هي الرؤوس ، والخط الأزرق ليس الا مجموعة كبيرة من الـ Pixels الزرقاء.

    تستخدم بطاقة الرسوميات الذاكرة كمرجع يتيح لها توصيل الرؤوس توصيلا دقيقا ، للحصول علي الأشكال ثلاثية الأبعاد الصحيحة ، وهنا يظهر الشكل ثلاثي الأبعاد بمنظر المضلعات المتشابك هذا :


    هذا الوجه لم يكن الا مجموعة من النقاط المتفرقة ، قبل أن يتم توصيل كل تلك النقاط لتكون مضلعات ، والمضلعات تكون الوجه في النهاية .

    بعد ذلك يبدأ ملأ كل مضلع (مثلث) ، بالنقاط Pixels ، ليظهر الشكل بالألوان الملائمة :


    يبدأ التلوين بحواف المثلث (المضلع) أولا ، ثم يمتد الي مركزه .


    تم الانتهاء من اغراق المثلث بالنقاط Pixels ، ويتكرر الأمر مع كل مضلعات الشكل ، حتي يتم تلوينه كله .

    ولمن كانت ذاكرته متطايرة ، نذكره أن التلوين يتم بدقة 24 بت ، وتتيح هذه الدقة 16 مليون لون ، هم حصيلة اختلاط الألوان الثلاثة الأساسية : الأحمر والأخضر والأزرق ، بتدرجات غاية في الدقة ، تتيحها الشاشات الحديثة .

    وفي الوقت الحالي يتم التلوين باستخدام 24 بت كألوان ، بالاضافة الي 8 بت اضافية خاصة بشفافية اللون ، وتسمّي Alpha Composition ، وهي تحدد شفافية اللون والتي تتيح ظهور الأجسام الأخري خلفه ، وتستخدم تلك الخاصية في عمل الزجاج والمياه واللذان يمتازان بشفافية طبيعية .


    كل من هؤلاء الدوائر الثلاثة يتلون بلون شفاف ، أي يظهر ما خلفه .

    اذن 24 بت للألوان ، و 8 بت للشفافية ، يصبح المجموع هو 32 بت ، كدقّة لأي لون ، ويسمي تلك الدقة باسم RGBA ، أي Red , Green , Blue , Alpha .

    تسمّي عملية التلوين باسم الرسم Rasterization ، وتقوم بها معالجات النقاط ، Pixel Processors ، في السابق ، والآن تقوم بها معالجات التظليل Shader Processors ، في البطاقات الحديثة .

    ومعالجات التظليل تقوم بتطبيق الألوان بأسوب الجمع أيضا ، فلتفتيح صورة أو لون ما ، فان كل نقطة Pixel في هذه الصورة يجب أن يتغير لونها الي لون أفتح ، ولون كل نقطة هو القيمة الكلية لثلاث ألوان : الأحمر والأخضر والأزرق كما ذكرنا .

    فمثلا ، اللون الأصفر يتكون عن طريق اعطاء اللون الأحمر قيمة 140 ، والأزرق 12 والأخضر 45 .

    تفتيح اللون الأصفر يتطلب تغيير قيمة الأحمر الي 146 والأزرق الي 18 والأخضر الي 51 ، أي اضافة 6 علي كل لون ، ويمكن للعالجات أيضا طرح 10 من كل قيمة للحصول علي لون جديد .. وهكذا ..

    ***

    الاضاءة ، الاضاءة ، الاضاءة
    بعد الانتهاء من عمل نقاط الألوان والرؤوس ، تبدأ عملية الاضاءة ، وترجع أهمية هذه العملية الي أنها تعطي الي الناظر الوهم في أنه ينظر الي شكل ثلاثي الأبعاد .


    تعطينا الاضاءة الوهم ..بأن الاجسام ثلاثية الأبعاد .. علي الرغم من أنها ليست كذلك .

    يتم عمل الاضاءة ، بتحديد مصدر ضوء أولا ، وهو أي شكل ثلاثي الأبعاد ، ثمّ بمدّ جزء حوله يمثّل أشعة الضوء الصادرة منه ، هذا الجزء يحتوي علي لون محدد ، هو لون الاضاءة .


    القمع البرتقالي في الصورة هو امتداد اشعة الضوء الصادرة من المصباح ، وهي تبدو كأنها جسم هلامي من الضوء ،ولون الاضاءة هنا برتقالي بالطبع .

    الوان الاضاءة هي ألوان RGB عادية ، و عند سقوط اشعة الضوء الوهمية علي أي جسم في طريقها ، فان لون الجسم يتأثر بها ، حيث يتم ضرب لون الضوء في لون الجسم ، ليخرج لون جديد ، يتلون به الجسم ، والضرب هنا يقصد به الخلط ، أي خلط اللونين حرفيا ، ولأننا نتعامل مع تكرارات للواحد والصفر ، فالطريقة المثلي لخلط هذه التكرارات هي الضرب !

    بالطبع تقوم بهذه العملية معالجات التظليل أيضا ، والتي هي عبارة عن معالجات جمع وضرب في نفس الوقت !

    ***

    أنا أشتري كسائي لأوفّر مالي !

    ليست تلك العبارة متناقضة الي الدرجة التي تبدو عليها، فالكساءات في عالم الرسوم صمّمت أساسا لتوفير مجهود رسم التفاصيل علي الأجسام و ..

    أتوقف قليلا لأجيب عن سؤال صديقي رجل الكهف .. ما معني الكساءات ؟

    الكساءات Textures هي صور عاديّة تحتوي علي تفاصيل وألوان مختلفة، تقوم معالجات مخصصة بلفها حول الشكل ثلاثي الأبعاد لتعطي الايحاء بأن الشكل يحتوي علي هذه التفاصيل ، بينما هي في الحقيقة مجرد ملصق علي الشكل أو مجرد كساء .


    صورة كساء عادية ، تحتوي علي شعار وكتابة رقمية .


    صورة الجسم المراد اكساؤه ...


    صورة الجسم بعد الاكساء ، وقد ظهرت عليه تفاصيل الشعار والكتابة .. بالأحري لصقت عليه لصقا .

    وكما رأينا وفّرت هذه الطريقة علي المطورين الحاجة لرسم هذا الشعار بالمضلعات و حفر الكتابة بالمضلعات أيضا ، الأمر الذي يوفّر في عدد المضلعات الكلي ، وبالتالي عدد الروؤس ، وبالتالي المجهود المبذول من معالجات الرؤوس.


    صورة لكساء وجه ، قبل أن يتم لفّه .

    ومعالجات الاكساء Texture Units تحقق هدفها بتصميم فريد من نوعه ، فهي تحتوي علي مسجلات(ذواكر صغيرة) لعناوين صور الكساءات في الذاكرة الرئيسية ، والجزء الباقي منها يقوم باستخراج هذه الصور ، واستخراج كل نقطة Pixel فيها ، واستبدالها بنقاط الجسم ثلاثي الأبعاد ، أي كأنه يقوم بلصق هذه الصور نقطة بنقطة علي الشكل ثلاثي الأبعاد Pixel By Pixel ، واذا لزم الأمر يتم تطبيق الاضاءة علي الجسم المكسيّ ، باتباع أسلوب الضرب الحسابي أيضا .



    أعلي اليسار .. المشهد باضاءة بدائية ، أسفل اليسار ، نفس المشهد بدون اضاءة لكن باستخدام كساءات ، والي اليمين المشهد بالكساءات مطبّق عليها الاضاءة الابتدائية .

    ***

    الي الشاشة ... بسرعة !

    بعد أن تنتهي معمعة الرؤوس والألوان والكساءات ، يأتي دور معالجات الاخراج ROPS ، وهي تختص بعمل الاخراج النهائي علي المشهد ، واضافة اللمسات الأخيرة ، فتقوم بأخذ صورة ثابتة سريعة من المشهد ، هذه الصورة لا تحتوي الا علي النقاط Pixels النهائية فقط ، بدون بيانات رؤوس وبدون بيانات كساءات وبدون بيانات اضاءة أو غيره .

    والملاحظ أن معالجات الرؤوس والنقاط والكساءات تقوم بكل الأعمال السابقة ، حتي تحصل علي ألوان واضحة ونقية ، لتعطينا الايحاء بأن الأجسام التي أمامنا حقيقية ، أي ان كل هذا المجهود المبذول قد بذل لمجرد الحصول علي تلوين دقيق ومنتظم بشكل كاف ليقتنع المشاهد أن ما أمامه هو أشكال حقيقية متحركة .

    فمعالجات الرؤوس وفرت الهيكل الذي توضع عليه الألوان ، ومعالجات النقاط ، وضعت النقاط علي تلك الهياكل ولونتها ، ثم طبقت عليها الاضاءة ، ومعالجات الاكساء كست تلك الهياكل بتفاصيل جديدة ، كل هذا ولم تتغير الحقيقة الصادمة ، فطال الأمر أم قصر ، تعقد أم تبسط ، كل هذا الهراء مجرد ألوان !

    ومعالجات الاخراج تتعامل بهذه الحقيقة ولا شئ غيرها ، فهي تأخذ تلك الألوان في صورتها النهائية ، وتطبق عليها بعض المؤثرات مثل تنعيم الحواف مثلا ، Anti-Aliasing ، وقد تحتصر من تلك الألوان الأجزاء الزائدة ، أو الأجزاء غير المرغوب فيها ، وبعدما تنتهي من مهمتها السهلة ، تحفظ الألوان علي شكل صورة عادية ، بدقة 1920x1080 مثلا ، في ذاكرة بطاقة الرسوميات ، تمهيدا لارسالها الي الشاشة لتعرضها مثلما تعرض أي صورة عادية ، مثلما وضّحنا في بداية المقال !

    ولا أندهش عندما يضرب صديقي رجل الكهف يدا بيد ، كل هذا التعب والحسابات المعقدة ، من أجل بضعة ألوان تحفظها معالجات الاخراج في شكل صورة حقيرة لا تساوي بضعة ميجابايتات !!!

    ***

    وأزيد صديقي غيظا عندما أخبره أن كلّ هذا لا يهم ، فكل شئ محفوظ في الذاكرة ، فمضلعات الأجسام ثلاثية الأبعاد محفوظة في ملفات اللعبة علي القرص الصلب ، وألوان هذه الجسام محفوظة أيضا في ملفات اللعبة ، و كساءات هذه الأجسام محفوظة أيضا في ملفات اللعبة علي القرص الصلب ، وفائدة البطاقة الرسومية هي خلط هذه الأشياء مع بعضها ، لتكوين عدة صور متتابعة ، توحي بأن كل ذلك يتحرك في عالم واقعي ملموس .

    بطاقة الرسوميات ما هي الا عامل في مسرح ، يقوم بتحريك مجموعة من العرائس باستخدام خيوط دقيقة ، فلم يصنع العامل العرائس ، ولا حتي الخيوط ، لكنه يقوم بتحريكها فقط ، وهو ماهر في ذلك حقّا .

    بطاقة الرسوميات هي اليد التي تدير مفتاح المذياع ، فلا صنعت المذياع ولا مفتاحه ، فالمذياع صنع لاستقبال الصوت بنجاح ، والمفتاح صنع لتعديل الصوت بنجاح ، وليس لليد دخل في ذلك ، هي فقط تحرّك المفتاح .

    وكفانا كلاما عن المذياع ، فلقد أوشك مذياعي العتيق أن يخاصمني ..

    ________________________________________________
    ملحوظة : بعض الصور المستخدمة في المقال مأخوذة من موضوع الأستاذ رامي والمأخوذة بدورها من موقع Toms hardware .. كما تم اختصار الكيفية التي تعمل بها بطاقة الرسوميات مع الحفاظ علي دقتها العلمية ، والكاتب مستعد للاجابة عن أي استفسار يختص بالشرح الكامل لاي خطوة من الخطوات المشروحة .

    ملحوظة 2 : شخصية رجل الكهف المذكورة في المقال هي شخصية تخيلية ، ولا أساس لها في الواقع ، وكذا الأمر مع مذياعي العتيق !
    كاتب هذا الابداع الاصلى هو شخص اسمة حميدو موجود فى منتدى عرب هردوير


    عدل سابقا من قبل miro the king في الثلاثاء ديسمبر 15, 2009 9:00 am عدل 1 مرات
    Master
    Master
    عضو جديد


    عدد المساهمات : 20
    نقاط : 5810
    السٌّمعَة : 3
    تاريخ التسجيل : 12/12/2009
    العمر : 29

    كيف تعمل البطاقة الرسومية (كروت الشاشة) Empty رد: كيف تعمل البطاقة الرسومية (كروت الشاشة)

    مُساهمة  Master الإثنين ديسمبر 14, 2009 12:37 pm

    شكرا على الشرح بس فين منتدى البرامج..... Surprised

      الوقت/التاريخ الآن هو الجمعة مايو 10, 2024 3:39 am