الشبكة العربية لمطوري الألعاب

موهوب  16mofed84 مشاركة 11

اعتذر عن التأخر..
لم افهم الطريقه جيدا..لكن
هل تقصد:
وضع كل الموديلات جميعا في مخازن الvertex ,index
ثم عند الرسم :(مثلا)ارسم الرؤوس من 20 الى 40
و فقط عند التعديل يتم اعاده نسخها الى المخازن
او هل تقصد:(و قمت بتجربتها و نفس النتيجه 14)
كل مره يرسم فيها يتم نسخ معلومات المقصود رسمه الى الvertex ,index
ثم رسم ؟

صراحه انت اول شخص اتعرف عليه بهذه الخبره العاليه

خبير مدير وسام البهنسي مشاركة 12

وفي 27/شوال/1432 08:19 ص، قال 16mofed84 متحمساً:

وضع كل الموديلات جميعا في مخازن الvertex ,index
ثم عند الرسم :(مثلا)ارسم الرؤوس من 20 الى 40 و فقط عند التعديل يتم اعاده نسخها الى المخازن

الحالة القياسية هي وضع كل مجسم في مخزن رؤوس وفهارس خاصين به. مثلاً، مجسم سيارة لها دواليب. جسم السيارة يتم حفظه في مخزن رؤوس (vertex buffer) مستقل، ومخزن فهارس (index buffer) يبني المثلثات من تلك الرؤوس. أما الدواليب، فتستخدم مخزني رؤوس وفهارس لحفظ مجسم دولاب واحد فقط. كل هذا العمل يتم عند التحميل. أما أثناء اللعب، فكل ما يحصل هو الآتي:

رسم جسم السيارة: عن طريق ربط مخزني الرؤوس والفهارس الخاصين بها، ثم إصدار أمر الرسم DrawIndexedPrimitive.
رسم الدواليب الأربعة: عن طريق ربط مخزني الرؤوس والفهارس الخاصين بالدولاب، ثم إصدار أمر الرسم DrawIndexedPrimitive أربع مرات. في كل مرة تستخدم مصفوفة تحويل (transformation matrix) مختلفة لتوضيع الدولاب في المكان الصحيح.

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

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


وفي 27/شوال/1432 08:19 ص، ظهر شبح ابتسامة على وجه 16mofed84 وهو يقول:

كل مره يرسم فيها يتم نسخ معلومات المقصود رسمه الى الvertex ,indexثم رسم ؟

كلا بالطبع. هذا أيضاً يعطلك عن الوصول للأداء المثالي.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

موهوب  16mofed84 مشاركة 13

عند الLoad Content
قم بوضع معلومات الرؤوس و عناوينها الى indexBufer,VertexBuffer ثم ضعها على الGraphicsDevice  و ستحصل على:

النتيجه النهائيه للطريقه المذكوره من قبل الاستاذ وسام:
131792 مثلث على سرعه : 20 الى 30 (سرعه شبه ممتازه)

باستخدام الطريقه العاديه :
131792 مثلث على سرعه 7 الى 8 (بطيء جدا و غير مثالي ابدا)

و الفائز هو الاستاذ وسام😄

موهوب  16mofed84 مشاركة 14

ما هي التقنيه المستخدمه للرسم في Source engine
half life 2
انظروا الى هذا العدد الهائل:



خبير مدير وسام البهنسي مشاركة 15

بتاريخ 03/ذو القعدة/1432 10:34 ص، قطب 16mofed84 حاجبيه بشدة وهو يقول:

ما هي التقنيه المستخدمه للرسم في Source engine
half life 2
انظروا الى هذا العدد الهائل:

هذا المشهد لا شيء يا رجل ☺  (أتكلم من ناحية عدد المضلعات الكلي). لكن من المهم توضيح أنه من المهارة الحصول على النتائج الجميلة التي نراها في اللعبة من خلال هذا العدد القليل من المضلعات فقط...
 
أما بالنسبة للتقنية، فلا توجد أسرار كبرى هنا. توجد عدة عمليات قياسية لتحسين الأداء يقوم بها محرك Source، كالتجميع والقص ومستويات الدقة. عند تطبيق هذه التحسينات فإنك تستطيع الحصول على مشاهد معقدة مع الحفاظ على أداء عالي.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

موهوب  16mofed84 مشاركة 16

في حقيقه الامر ان الPixel Shader اضعف الاداء كثيرا العدد الذي ذكرته كان تجربه ل Depth map على هذا العدد لكن اذا قمنا بأضافه الصور فان الاداء يعود الى 15 ---10
حيث اني استخدمت كود للتخلص من اي Pixel خارج احداثيات الشاشه (بجعله اسود)