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

محترف  انس مشاركة 1

السلم عليكم
عند بحثي عن مصطلح Shaders في الانترنت اختلطت علي الامور و ذلك لوجود العديد من انواع الـ Shaders فهل ممكن توضيحها ؟
ما وجدته و اريد معرفة دوره هو :
Pixel SHader
Shader
vertex shader


شكرا لكم

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

إبدأ أولاً بمقالة المظلل من قسم المقالات العلمية في الشبكة، والتي هي ببساطة مقالة في ويكيبيديا:
 
http://ar.wikipedia.org/wiki/مظلل
 
ستجد أن المظلل الفوري هو مجرد إجراء يتم استدعاؤه وتنفيذه على معالج الرسوميات بدلاً من المعالج المركزي. بحسب نوع المظلل، فإن توقيت استدعاء الإجراء يختلف. فلدينا:
 
مظلل الرؤوس (Vertex Shader): يستدعى لحساب كل رأس في كل مثلث يتم رسمه.
 
مظلل البكسلات (Pixel Shader): يستدعى لحساب لون كل بكسل في كل مثلث يتم رسمه.
 
في دايركت ثري دي و XNA، نستخدم لغة HLSL الشبيهة بلغة سي لكتابة هذه الإجراءات. مثلاً، المظلل التالي هو مظلل بكسلات يطلي المثلث باللون الأحمر:


float4 PS_Main() : COLOR0
{
  return float4(1,0,0,1); // RGBA
}
 
بما أن هذا الإجراء يتم استدعاؤه على كل بكسل من المثلث، فإن كل بكسل سيطلى بالأحمر، وبالتالي المثلث كله (أو المجسم) سيظهر بالأحمر.

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

خبير  algeria مشاركة 3

شكرا على الشرح  أخ وسام
يعني دون أن نلون كل نقطة على حدى
نقوم بعمل vertex shader

لكن أنت الرجاء لو تشرح لماذا وضعت (float4)

الجزائر قلبي وغزة نبضه

محترف  انس مشاركة 4

شكرا استاذ وسام.

اما عن سبب وجود Float4 فهي خصائص لغة برمجة المظلل. مثل الـ int char double string  الخ

خبير  algeria مشاركة 5

بتاريخ 04 سبتمبر 2010 06:38 م، قطب انس حاجبيه بشدة وهو يقول:

اما عن سبب وجود Float4 فهي خصائص لغة برمجة المظلل. مثل الـ int char double string  الخ
وهل تعبر عن النقاط
يعني لما نمرر لـ float4
(1,0,0,1) //rgba
هل (float4) هي المسؤولة عن تطبيق ذلك اللون على النقاط

الجزائر قلبي وغزة نبضه