برمجة Direct3D تحتاج لمعرفةفقط بكيفية تطبيق التأثيرات ,, والتقنيات المستخمدة ف كل نوع فقط ليس الا ,, وكل فكرة لديها تكنيك معين عليك اتخاذه لتطبيق النموذج النهائي ,,
........................................................
أمثلة نريد أن نصل لمستواها :
1) في الصورة التالية :

من أمثلة DirectX SDK الجاهزة نموذج لدولفين يتحرك حركة طبيعية مثيرة للأعصاب حقا ,, مع أرضية شبه طبيعية والضوء ينعكس على الأرضية بشكل طبيعي ويتحرك مع حركة المياه في السطح ,, طبعا مع انعكاس الضوء على الدولفين ,,
لاحظ في أعلى الصورة عدد ال FPS الاطر في الثانية وصل الى 109 FPS ,, مع أني أملك كرت شاشة GeForce4 MX440 ,, وهو ليس بهذا المستوى الرائع جدا لتصير نموذج كهذا ,,
لكن في الأمر خدعة وهو أن الأضاءة مع حركتها وحركة الدولفين كلها لاتعمل بالصورة الطبيعية الحقيقية " ملاحظة : تطبيق اضاءه حقيقية 100% لل Real Time Rendering يحتاج لكروت شاشة ومعالجات متفوقة جدا ,, "
تطبيق الاضاءه على السطح تتم عن طريق ال Texturing وليست اضاءة DirectX الطبيعية ,, حيث أن ال Texturing يعطي أداء أفضل من أداء الاضاءة الخاص بال Direct3D ,, مع أداء أفضل ,, لكن يحتاج لتخطيط مسبق جيد ,,
توجد أنواع اضاءة أخرة كال Volume Light لاضاءة الفراغ "وهي تقنية تستخدم مايسمى بال Vertex Shader وال Pixel Shading ,,
المهم يتم تطبيق ال Texture المضيء مع تفعيل عامل المزج AlphaBlending بين المصدر والهدف ,,
وتطبيق ال Texture وبنفس طريقة الحركة المدعومة من قبل ال Vertex Shader وهو ملف .VSH يتحكم في طريقة حركة البكسلات الخاصة بال Texture وال Vertices وغيرها ,, وهو موضوع متقدم قليلا ,, ولاأقول ذلك لأني أحفظه عن ظهر قلب لكني لم أتعامل مع ال Vertex Shading مطلقا ,, فقط قرأت بعض أكواد له لاغير ,,
المثال الثاني :

بنفس فكرة المثال الأول ,, بعد تحميل ملف ال .x الذي يحتوي على مواضع السموت الخاصة بال Object المكتوب ك Microsoft ,,
مع تفعيل مصدر اضاءة خفيف بزاوية ,, ومع تحرك ال Object وهو Microsoft حركة موجية عشوائية باستخدام ال Vertex Shading أيضا وبنفس المبدأ ,, لتعيين مواضع جديدة كل مرة بمعادلة رياضية لمواضع سموت ال Object الذي تم تحميله ك Mesh ,, وكل مرة نرسم السموت الجديدة في الدالة Render ,, بس !!
المثال الثالث :

وأيضا :

المثال يستعرض قدرات اضاءة Direct3D فقط ليس الا ,,
اضاءة Direct3D ممتازة في حال تشكيل سموت كثيفة للمشهد ,, لأن الاضاءة الخاصة ب Direct3D فقط تغير لون السموت التي تصل اليها باستخدام عامل مزج بين لون السمت ومعدن السمت Material وال Specular مدى اللمعان وقوة الاضاءة وبعدها عن السمت ولون الاضاءة ,,
هذه العوامل في النهاية تؤثر على اضاءة كل سمت على حدة لتخرج لنا باللون النهائي للسمت ,, الان تخيل أن لدينا مربع كبير يمكن تشكيله فقط طبعا بمثلثين متلاصقين في الوتر ,, عند تسليط اضاء مباشرة على منتصف المربع سيضيء كله وبطريقة بشعة حتى لو كان مصدر الضوء ضعيفا ومتركز على المنتصف بحزمة صغيرة للغاية ,, والسبب أن المربع المنجز في الاصل متكون من سمتين "مثليثين فقط" وكل منها سيضيء ,,
فلانجاز مشهد كهذا ليصبح بمنظر لائق باستخدام اضاءة Diect3D نستخدم توزيع سموت كثيف نسبيا بحيث لايضر بالاداء وفي نفس الوقت نحصل على اضاءة أفضل من هذا ,,
يمكن لحوالي 30 سموت أن تشكل اضاءة متميزة للمربع ,,
في حال كان لديك عالم ثلاثي الابعاد مليء بالتفاصيل فابتعد عن اضاءة DirectX للاضاءة المركزة واكتفي بالاضاءة المحيطية لتعطي المشهد منظر أفضل ورؤية أوضح فقط ,,
واستخدم اضاءة ال Texturing بعد تحميل خريطة ضوء أو أكثر لتطبقها على الجدران والارضيات والأبواب وبالطريقة التي تعجبك ,, لكن من مساويء اضاءة ال Texturing أنها لاتتأثر بزاوية الرؤية الخاصة بالكاميرا ,, يعني لو تحرك المشهد فمهما كان ستحس وكأن الاضاءة لاتتفاعل مع حركتك وانعكاسها على الكاميرا حسب موضعك من مسقط الاضاءه على الجدار مثلا ,,
المهم في مثالنا استخدمنا جدران في كل جدار 31*31*2 سمت !!
لاحظ عدد ال FPS ممتازة جدا ,,



