عن المشروع

Graphics Foundations هو مورد تعليمي متكامل وذاتي الاحتواء، يتناول أسس رسوميات الحاسوب موضوعًا بموضوع، ويغطي الرياضيات وخط أنابيب العرض والخوارزميات الكامنة وراء الصور اللحظية (real-time) والصور الناتجة عن تتبع الأشعة. نشأ هذا المورد من فصول نقاش امتدت لستة أرباع دراسية في مقرر UCLA CS 174A (مقدمة في رسوميات الحاسوب، 2019–2021)، وأُعيدت كتابته ليصبح موردًا مستقلًا؛ ويذكر المؤلف أنه ليس مادة رسمية للمقرر. البنية والمحتوى تنظم المادة كمسار تعليمي من 13 فصلًا (مرقمة من 0 إلى 12)، ويُقصد قراءتها بالترتيب. يذكر كل فصل ما ستتعلمه، ويشرحه بالرسوم، ويقدم رابطًا لعرض توضيحي، وينتهي بأسئلة مراجعة ذاتية وإجابات مخفية. - الفصل 0: الإعداد وJavaScript للرسوميات (الأدوات، والوحدات، والصنوف، والإغلاقات closures، والمصفوفات المكتوبة typed arrays، وحلقة الإطارات) - الفصل 1: خط أنابيب العرض وGLSL (المظللات vertex/fragment، والتنقيط rasterization، وفضاء القص clip space) - الفصل 2: النقاط والمتجهات وأنظمة الإحداثيات (الفضاءات الألفية affine spaces، والإحداثيات المتجانسة homogeneous والبارicentrics، والجداء النقطي والجداء الاتجاهي) - الفصل 3: نمذجة الأشكال بالمثلثات (التمييز discretization، والشبكات المفهرسة indexed meshes، والأشرطة strips، والاتجاه winding، والمتجهات الطبيعية المسطحة مقابل الملساء) - الفصل 4: التحويلات (الإزاحة، والتدوير، والقياس، والقص shear، والانعكاس؛ والترتيب؛ والهرميات؛ والتحريك) - الفصل 5: تغيير الأساس (الأطر frames، وتحويل الإحداثيات، والكاميرا كإطار) - الفصل 6: الرؤية والإسقاط (look-at، واشتقاق المنظور المتعامد والممنظور، والقص clipping، ومخزن العمق z-buffer) - الفصل 7: الإضاءة والتظليل (Phong وBlinn–Phong، وأنواع الضوء، والتظليل المسطح/Gouraud/Phong، ومصفوفة الطبيعيات normal matrix) - الفصل 8: تعيين النسيج texture mapping (تعيين uv، والترشيح filtering، والخرائط المدرجة mipmaps، والاستيفاء الصحيح منظوريًا perspective-correct interpolation، والخرائط bump/normal/displacement) - الفصل 9: كشف التصادم (المغلّفات المحيطة bounding volumes، ومبرهنة المحور الفاصل separating axis theorem، والمرحلة الواسعة broad phase، والخطوات الزمنية) - الفصل 10: الظلال والمرايا والشفافية (رسم الظلال shadow mapping، والمرايا المستوية، ومزج ألفا alpha blending، وألفا المضاعف مسبقًا premultiplied alpha) - الفصل 11: تتبع الأشعة (توليد الشعاع، والتقاطعات، والأشعة الرجعية، وأشجار الأشعة ray trees، والتسريع) - الفصل 12: بناء مشروع رسوميات تفاعلي (التخطيط، والتوقيت والآلات الحالة، والجسيمات، و skyboxes، والانتقاء picking، والتركيب، والألوان) ترافق الملاحظات مجموعتان من التمارين: المسائل الأولى (الأساسيات، والتحويلات، والرؤية) والمسائل الثانية (الإضاءة، والأنسجة، والتصادمات، وتتبع الأشعة)، ولكل منهما حلول كاملة وموضحة خطوة بخطوة. المتطلبات القبلية هي البرمجة بأي لغة، بالإضافة إلى الجبر الخطي بمستوى المتجهات والمصفوفات والجداء النقطي والاتجاهي؛ ويغطي الفصل 0 ما تحتاجه من JavaScript. العروض التوضيحية تتضمن المادة سبعة عروض توضيحية تفاعلية في المتصفح، مرتبطة بالفصول، وهي متاحة من موقع GitHub Pages مباشر: مثلث الترحيب (WebGL خالص)، والتحويلات، والكاميرا والإسقاط، والإضاءة والتظليل، وتعيين النسيج، وتتبع الأشعة، والمغلّفات المحيطة. صُممت العروض من 02 إلى 07 بالاعتماد على TinyGraphics.js، وهي مكتبة تعليمية صغيرة من إعداد Garett Ridge، وتُحمَّل من نسختها المنشورة بدلًا من تضمينها داخل المستودع. يُقصد بهذه العروض متصفح مكتبي يدعم WebGL 2. ويُوفَّر سكربت خادم محلي (node tools/serve.mjs)، مع خيار التطوير باستخدام نسخة محلية مستنسخة من TinyGraphics.js. هيكل المستودع وفحوصات الجودة يُنظم المستودع إلى: notes/ (الملاحظات)، وexercises/ (التمارين)، وfigures/ (رسومات SVG مولَّدة بواسطة tools/figures.py)، وdemos/ (ملف HTML واحد لكل عرض توضيحي بالإضافة إلى أدوات مساعدة مشتركة)، وtools/. ومن الجدير بالذكر أن الملاحظات تُختبر كما لو كانت كودًا برمجيًا: فالسكربتات تعيد حساب كل رقم محلول في الملاحظات والتمارين، وتتحقق من الروابط والمراسي وأصالة الأشكال وغياب الأمور اللوجستية للمقرر، وتحمّل كل عرض توضيحي في متصفح Chromium بدون واجهة (headless) مع الضغط على كل عنصر تحكم وأخذ لقطات شاشة، وتدقق كيفية عرض الرياضيات على github.com. ويوجد سكربت fix_math.py يعيد كتابة تركيبات LaTeX (مثل \mathbf و\boxed و\tag و\operatorname) التي لا تُعرض صحيحًا كـ MathML أصلي على GitHub. ويتطلب فحص العروض نسخة محلية من Chromium مع WebGL 2، ويكتب لقطات شاشة لمراجعتها يدويًا. الاعتمادات والترخيص بدأت الملاحظات كمواد لفصول النقاش في مقرر UCLA CS 174A، داعمةً لمقررات درّسها البروفيسور Asish Law والبروفيسور Demetri Terzopoulos؛ ويتبع اختيار الموضوعات وترتيبها لتلك المقررات. ولا تُضمَّن شرائح المحاضرات أو أشكال الكتب المدرسية أو الواجبات. المواد الأسبوعية الأصلية للنقاش تظل متاحة في وسْم أرشيف (archive tag) وفي مستودعات لكل ربع دراسي على حدة. الملاحظات والتمارين والأشكال والعروض التوضيحية هي © Yunqi Guo ومرخصة بموجب CC BY-NC-ND 4.0: يُسمح بقراءتها ودراستها ومشاركة نسخ غير معدَّلة لأغراض غير تجارية مع الإشارة إلى المؤلف، بينما لا يُسمح بتوزيع نسخ معدَّلة أو بإجراء استخدام تجاري. TinyGraphics.js مشروع منفصل له شروطه الخاصة.