المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : استفسار عن الـShader في كروت الشاشة



The_Wolf88
06-01-2008, 00:57
السلام عليكم

اثناء قرائتي لمقارنات بين عدد من Graphic Cards لاحظت ان هناك سرعة ثالثة في بعض الكروت غير سرعة المعالج والذاكرة وتسمى بـ Shader فما فائدة هذه الخاصية؟

لأني أيضا لاحظت ان هذه الخاصية لا تتوفر الا في كروت الفئة الثامنة من خلال موقع XFX حيث اخترت عدة كروت من الفئة 6, 7, 8 وفقط الثامنة هي التي كانت سرعة Shader موجودة في Product Specification والفئتين 6, 7 لا يوجد غير سرعة GPU, RAM اما الفئة الثامنة فيوجد فيها GPU, RAM بالإضافة إلى ما يسمى Shader؟

قرأت ان Shader هي معالجة الكرت للتغيرات في اللعبة مثل الأضواء والانفجارات والنيران وما الى ذلك فهل هذا صحيح؟؟

ارجو من الأعضاء التوضيح.

وشكرا.

NVIDIA 8800
06-01-2008, 01:29
هي مايميز الكروت عن سابقيها وهذا هو السبب التي ادت الى رفع اسعارها وهي سرعة الاضاءة (تحسين جودة الالعاب والمرئيات وتسريع dx10()
موفق

HESHAM.SY
06-01-2008, 02:37
سرعة ال Shader هي السرعة التي تعمل بها وحدات ال SP أي Stream Processors..
لم تكن موجودة في كروت الجيل السادس والسابع من NVIDIA لأن وحدات الستريم لم تكن موجودة أصلاً في تصميم ال GPUs وقتها..
التصميم القديم لل GPUs كان مبنياً على البايب لاين PIPELINE فكان يوجد عدد محدد من البايب لمعالجة أوامر البيكسل تدعى هذه الأوامر Pixel Shaders وعدد أخر لمعالجة أوامر الفرتكس أو ما تسمى Vertex Shaders..
و طبعاً البايب لاين يحتوي على وحدات معالجة مصغرة هي من تقوم بالمعالجة الفعلية..
تصميم المعالجات الداعمة ل DX10 أخذ منحى مختلف حيث اعتمد على بنية Unified Shaders أي جعل أوامر البيكسل والفرتكس تعالج معاً وبشكلٍ موحد من قبل وحدات تسمى SP أو المعالجات الدفقية وتم وضع تردد منفصل لها في كروت Nvidia كونها تقدر على العمل بسرعات عالية ..
وحسابات الاضاءة ورسم الانفجارات وال HDR وغيرها تقوم بها هذه الوحدات كما ذكرت..
وتبقى عمليات اكساء الأجسام بالأنسجة من اختصاص وحدات ال TMUs ..
هذا طبعاً بشكلٍ مختصر ..

Ronin
06-01-2008, 06:59
أخي هشام مشكور على شرحك الرائع
ولكن لدي سؤال
هل كل مازاد الستريم بروسيسور كان لذلك أثر أكبر في زيادة قوة الكرت أم أن تأثيره محدود ؟

CyberPunk
06-01-2008, 09:48
أخي هشام مشكور على شرحك الرائع
ولكن لدي سؤال
هل كل مازاد الستريم بروسيسور كان لذلك أثر أكبر في زيادة قوة الكرت أم أن تأثيره محدود ؟

لي تجربة هنا (https://www.cyberforce-me.com/forums/showthread.php?tid=69) في زيادة سرعة الـShaders/Stream Processors مع الشرح الكامل والنواتج.

Ronin
06-01-2008, 11:22
لي تجربة هنا (https://www.cyberforce-me.com/forums/showthread.php?tid=69) في زيادة سرعة الـShaders/Stream Processors مع الشرح الكامل والنواتج.


تسلم أخوي سايبر على الإفادة من موضوعك الدسم :)

The_Wolf88
06-01-2008, 13:02
شكرا للجميع على التوضيح

الخلف
07-01-2008, 16:28
في المسرعات الرسومية قبل Radeon 2xxxx و GeForce 8xxx كانت هناك عمليتان تتمان بشكل منفصل العمليات هي تظليل المضلعات وتضليل البكسلات، العمليتين هاتين هما اللتان تعطيان التأثيرات الجميلة التي تراها، حيث تتولى عمليات تظليل المضلعات Vertix Shading مهمات تحوير الأجسام الثلاثية الأبعاد لكي تكون ذات أشكال معقدة دون الحاجة لرسمها بشكل منفصل، فمثلاً هي التي تعطي الدخان شكله المتموج العشوائي هذا مع الريح، بالمقابل تتولى عمليات تظليل البكسلات Pixel Shading المهام البصرية واللونية لتلك المضلعات، فهي التي تعطي لون الدخان - مثلاً - تدرجاته الرمادية وهي التي تعطي الصفات الشفافة الانكسارية للماء...

كانت المسرعات الرسومية تتضمن وحدات معالجة متخصصة لكل نوع من تلك العمليات، فهناك وحدات معالجة خاصة بالبكسلات وهي تسمى مظللات البكسلات Pixel Shaders وكانت هناك وحدات أخرى مختلفة تتولى مهام المضلعات وتسمى مظللات المضلعات Vertix Shaders...

المشكلة الجوهرية كانت في عدد تلك الوحدات، فشركتي nVIDIA و ATi اختلفت آراؤهما بشأن النسبة المناسبة المناسب من وحدات المعالجة الصغيرة تلك...
فشركة ATi كانت تعتقد أنه يجب زيادة وحدات الـ Pixel Shaders عن عدد وحدات Vertix Shaders بشكل كبير والسبب أن الألعاب في ذلك الوقت كانت تتجه لاستخدام تأثيرات بصرية أكثر من التأثيرات الشكلية...
فمثلاً مسرع Radeon X1950 Pro كانت يتضمن 36 وحدة Pixel Shaders بينما كان يتضمن 8 وحدات Vertix Shaders أي بنسبة 4.5 إلى 1
بالمقابل كانت nVIDIA تضع عدد أقل من وحدات Pixel Shaders مع الحفاظ على عدد عادي من Vertix Shaders فمثلاً المسرع الرسومي Geforce 7950GT كان يتضمن 24 وحدة Pixel Shaders بينما كان يتضمن 8 وحدات Vertix Shaders أي بنسبة 3 إلى 1

وذلك على الرغم من أن المعالجين الرسوميين المذكورين سابقاً يعتبران في نفس المستوى من الأداء مع تفوق بسيط للـ GeForce 7950GT على نظيره Radeon X1950 Pro

ظهرت عدة مشاكل من هذه الناحية مثلاً
1- تختلف الألعاب ومحركات اللعب في مدى استخدامها من تلك الوحدات، فبعض الألعاب عندما يمتلك 8 وحدات معالجة أشكال كانت تكفيه مثلاً 30 وحدة معالجة بصرية، وهذا يجعل عدد الوحدات في معالجات NVIDIA أقل من اللازم، وفي ذات الوقت عدد تلك الوحدات في معالجات ATi أكبر من اللازم، وستجد حينها أن معالجات ATi أقوى من معالجات nVIDIA في تلك اللعبة، بينما في ألعاب أخرى تنقلب الحكاية رغم أن كلا اللعبتين تستخدمان نفس محرك اللعب الذي لم يتم تحسين أداءه في معالج رسومي من شركة معينة...
2- بدأت بعض الألعاب تطلب قوة أكبر في مجال التأثيرات الشكلية خصوصاً مع بروز حكايات التسريع الفيزيائي حيث حركة السوائل والدخان والبخار ووووو الكثير غيرها من التأثيرات القريبة من الواقع
3- صار هناك خليط بين المتطلبات فلايمكن اعتماد رؤية محددة لنسبة تلك الوحدات من لعبة لأخرى مما جعل كل رؤية من رؤى الشكتين باطلة...
4- حتى في نفس اللعبة تأتي مشاهد تتطلب نسب أخرى مختلفة بين تلك الوحدات فصارت بعض الخرائط مثلاً أو الإضافات تعمل بشكل أفضل على معالج رسومي مختلف بينما اللعبة كلها تعمل بشكل أفضل على معالج رسومي آخر

أتى الحل بشكل بسيط، بدلاً من جعل وحدات Pixel Shaders و Vertix Shaders منفصلين لماذا لا نجعلهما وحدات واحدة ؟ وكل وحدة يمكنها أن تعالج أي من تلك العمليات بشكل عادي... سميت تلك الوحدات بـ المظللات الموحدة Unfied Shaders وذلك بسبب طبيعتها

اختلفت تسميات تلك الوحدات بشكل تجاري حيث تمت تسميتها باسم Stream Processors لكلا الشركتين


وأتت هذه التقنية أول مرة بمعالج رسومي من ATi في جهاز xBox 360، ولكن على واقع الأجهزة الشخصية كانت nVIDIA سباقة في طرح GeForce 8xxx وسبب تأخر ATi في طرح سلسلة Radeon 2xxxx تفوقاً أكبر...

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

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

ولكن ظهرت نقطة لدى NVIDIA لأنه لا يمكن لها أن تنتج معالجات رسومية بترددات مرتفعة فالأمر صعب جداً، لهذا قامت بتقسيم تردد المعالج لترددين، تردد لنواة المعالج وهو يكون بسيط وتردد آخر أعلى منه يكون لوحدات الـ Stream Processors، فصارت معالجات NVIDIA تمتلك عدداً بسيطاً من تلك الوحدات ( مثلاً أكبر عدد حالياً هو 128 وحدة في معالجات GeForce 8800GTX و Ultra ) وصارت ATI تمتلك عدداً كبيراً من تلك الوحدات مثل معالج Radeon 2900 بواقع 320 وحدة

فأضافت NVIDIA تردد آخر مختلف عن تردد النواة وصار يمكن تغييره أيضاً ليعطيك مجالاً أوسع للعب بأداء المعالج الرسومي إن كنت من هواة تغيير التردد :)


ومعذرة على الإطالة :)

NVIDIA 8800
07-01-2008, 17:23
في المسرعات الرسومية قبل Radeon 2xxxx و GeForce 8xxx كانت هناك عمليتان تتمان بشكل منفصل العمليات هي تظليل المضلعات وتضليل البكسلات، العمليتين هاتين هما اللتان تعطيان التأثيرات الجميلة التي تراها، حيث تتولى عمليات تظليل المضلعات Vertix Shading مهمات تحوير الأجسام الثلاثية الأبعاد لكي تكون ذات أشكال معقدة دون الحاجة لرسمها بشكل منفصل، فمثلاً هي التي تعطي الدخان شكله المتموج العشوائي هذا مع الريح، بالمقابل تتولى عمليات تظليل البكسلات Pixel Shading المهام البصرية واللونية لتلك المضلعات، فهي التي تعطي لون الدخان - مثلاً - تدرجاته الرمادية وهي التي تعطي الصفات الشفافة الانكسارية للماء...

كانت المسرعات الرسومية تتضمن وحدات معالجة متخصصة لكل نوع من تلك العمليات، فهناك وحدات معالجة خاصة بالبكسلات وهي تسمى مظللات البكسلات Pixel Shaders وكانت هناك وحدات أخرى مختلفة تتولى مهام المضلعات وتسمى مظللات المضلعات Vertix Shaders...

المشكلة الجوهرية كانت في عدد تلك الوحدات، فشركتي nVIDIA و ATi اختلفت آراؤهما بشأن النسبة المناسبة المناسب من وحدات المعالجة الصغيرة تلك...
فشركة ATi كانت تعتقد أنه يجب زيادة وحدات الـ Pixel Shaders عن عدد وحدات Vertix Shaders بشكل كبير والسبب أن الألعاب في ذلك الوقت كانت تتجه لاستخدام تأثيرات بصرية أكثر من التأثيرات الشكلية...
فمثلاً مسرع Radeon X1950 Pro كانت يتضمن 36 وحدة Pixel Shaders بينما كان يتضمن 8 وحدات Vertix Shaders أي بنسبة 4.5 إلى 1
بالمقابل كانت nVIDIA تضع عدد أقل من وحدات Pixel Shaders مع الحفاظ على عدد عادي من Vertix Shaders فمثلاً المسرع الرسومي Geforce 7950GT كان يتضمن 24 وحدة Pixel Shaders بينما كان يتضمن 8 وحدات Vertix Shaders أي بنسبة 3 إلى 1

وذلك على الرغم من أن المعالجين الرسوميين المذكورين سابقاً يعتبران في نفس المستوى من الأداء مع تفوق بسيط للـ GeForce 7950GT على نظيره Radeon X1950 Pro

ظهرت عدة مشاكل من هذه الناحية مثلاً
1- تختلف الألعاب ومحركات اللعب في مدى استخدامها من تلك الوحدات، فبعض الألعاب عندما يمتلك 8 وحدات معالجة أشكال كانت تكفيه مثلاً 30 وحدة معالجة بصرية، وهذا يجعل عدد الوحدات في معالجات NVIDIA أقل من اللازم، وفي ذات الوقت عدد تلك الوحدات في معالجات ATi أكبر من اللازم، وستجد حينها أن معالجات ATi أقوى من معالجات nVIDIA في تلك اللعبة، بينما في ألعاب أخرى تنقلب الحكاية رغم أن كلا اللعبتين تستخدمان نفس محرك اللعب الذي لم يتم تحسين أداءه في معالج رسومي من شركة معينة...
2- بدأت بعض الألعاب تطلب قوة أكبر في مجال التأثيرات الشكلية خصوصاً مع بروز حكايات التسريع الفيزيائي حيث حركة السوائل والدخان والبخار ووووو الكثير غيرها من التأثيرات القريبة من الواقع
3- صار هناك خليط بين المتطلبات فلايمكن اعتماد رؤية محددة لنسبة تلك الوحدات من لعبة لأخرى مما جعل كل رؤية من رؤى الشكتين باطلة...
4- حتى في نفس اللعبة تأتي مشاهد تتطلب نسب أخرى مختلفة بين تلك الوحدات فصارت بعض الخرائط مثلاً أو الإضافات تعمل بشكل أفضل على معالج رسومي مختلف بينما اللعبة كلها تعمل بشكل أفضل على معالج رسومي آخر

أتى الحل بشكل بسيط، بدلاً من جعل وحدات Pixel Shaders و Vertix Shaders منفصلين لماذا لا نجعلهما وحدات واحدة ؟ وكل وحدة يمكنها أن تعالج أي من تلك العمليات بشكل عادي... سميت تلك الوحدات بـ المظللات الموحدة Unfied Shaders وذلك بسبب طبيعتها

اختلفت تسميات تلك الوحدات بشكل تجاري حيث تمت تسميتها باسم Stream Processors لكلا الشركتين


وأتت هذه التقنية أول مرة بمعالج رسومي من ATi في جهاز xBox 360، ولكن على واقع الأجهزة الشخصية كانت nVIDIA سباقة في طرح GeForce 8xxx وسبب تأخر ATi في طرح سلسلة Radeon 2xxxx تفوقاً أكبر...

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

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

ولكن ظهرت نقطة لدى NVIDIA لأنه لا يمكن لها أن تنتج معالجات رسومية بترددات مرتفعة فالأمر صعب جداً، لهذا قامت بتقسيم تردد المعالج لترددين، تردد لنواة المعالج وهو يكون بسيط وتردد آخر أعلى منه يكون لوحدات الـ Stream Processors، فصارت معالجات NVIDIA تمتلك عدداً بسيطاً من تلك الوحدات ( مثلاً أكبر عدد حالياً هو 128 وحدة في معالجات GeForce 8800GTX و Ultra ) وصارت ATI تمتلك عدداً كبيراً من تلك الوحدات مثل معالج Radeon 2900 بواقع 320 وحدة

فأضافت NVIDIA تردد آخر مختلف عن تردد النواة وصار يمكن تغييره أيضاً ليعطيك مجالاً أوسع للعب بأداء المعالج الرسومي إن كنت من هواة تغيير التردد :)


ومعذرة على الإطالة :)


تعريف الكلام : هو كل ماخرج باللسان او كتبه القلم له معنى يفيض العقل تركيزاً الى المتكلم
او الكاتب فيبهر المستمع او القارئ عجباً لما يسمع.

وشكراً لكلامك الذي نطقته في الاعلى

CyberPunk
07-01-2008, 18:23
والغريب يا جماعة انه ما فيه أي لعبة كانت افضل في الأداء على DX10 من DX9. حتى في الألعاب الي ما فيها اختلاف مرئي يكاد يلاحظ.

| Fusion |
08-01-2008, 18:33
استاذنا الخلف, ما شاء الله عليك !Clap , زادك الله علما..

m4design
08-01-2008, 19:14
شكراً لك أخي الخلف على التوضيح الرائع وهذا ليس بغريب عليك..
وفقك الله
وشكراً لك أخي HESHAM.SY

HESHAM.SY
09-01-2008, 17:07
شكراً أستاذ الخلف على مشاركتك المتميزة ..
لتوضيح أمر مهم للأعضاء فتعبير Shader جاء من الأساس من البرمجة وهو برنامج أو تابع رسومي من أجل اجراء حسابات معينة على أحد النقاط أو الذرى في الصورة وذلك لاظهار تأثيرات مرئية جميلة وتحاكي الواقع ومنها الظلال..
لذلك تعبير Pixel Shaders يدل على مجموعة من التوابع الرسومية التي تستخدم للتلاعب بكل بكسل على حدة في الصورة وهي تطور كل فترة معينة وتضاف لها توابع جديدة وكلكم سمعتم بكلمة Shader Model مثل SM2.0 و SM3.0 و SM4.0 وفي كل SM أعلى يتم منح المبرمجين تحكم أكبر لاضافة تأثيرات أكثر على الصورة عن طريق ابتكار توابع جديدة مثلاً أو تطوير القديمة وغير ذلك ..
والأمر نفسه بالنسبة ل Vertex Shaders ولكنها للتلاعب واظهار التأثيرات على زوايا أو رؤوس المضلعات Polygons التي يتكون منها الشكل الرسومي..
فالتسمية الفيزيائية جاءت من التسمية البرمجية لذلك أستطيع القول:
ال Pixel Shader Units هي وحدات أو معالجات مصغرة في ال GPU لتنفيذ أوامر أو توابع تظليل البيكسل Pixel Shaders..
ال Vertex Shader Units هي وحدات أو معالجات مصغرة في ال GPU لتنفيذ أوامر أو توابع تظليل الفيرتكس Vertex Shaders..
تحياتي..

NVIDIA 8800
09-01-2008, 17:37
جزاك الله الف خير موضوع مفيد

Brigadier
10-01-2008, 12:29
ممتاز حصلت على معلومات هائله من الموضوع واشكر كل من ساهم في وضع معلومه.