<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%B8%D9%84%D9%84</id>
	<title>مظلل - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="https://3rabica.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D8%B8%D9%84%D9%84"/>
	<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%85%D8%B8%D9%84%D9%84&amp;action=history"/>
	<updated>2026-06-05T08:52:05Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://3rabica.org/index.php?title=%D9%85%D8%B8%D9%84%D9%84&amp;diff=1308615&amp;oldid=prev</id>
		<title>عبد العزيز: بوت: إصلاح التحويلات</title>
		<link rel="alternate" type="text/html" href="https://3rabica.org/index.php?title=%D9%85%D8%B8%D9%84%D9%84&amp;diff=1308615&amp;oldid=prev"/>
		<updated>2022-12-11T06:34:28Z</updated>

		<summary type="html">&lt;p&gt;بوت: إصلاح التحويلات&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;المظلل&amp;#039;&amp;#039;&amp;#039; {{إنج|&amp;#039;&amp;#039;&amp;#039;Shader&amp;#039;&amp;#039;&amp;#039;}} في مجال رسوميات الحاسوب هو مجموعة محدودة من الحسابات المخصصة للوصول إلى تأثير جرافيكي معين.&lt;br /&gt;
&lt;br /&gt;
== البدايات ==&lt;br /&gt;
ظهرت فكرة المظللات في الإصدارات الأولى من محرك الرسم [[ريندر مان]] كحل تصميمي لتمكين مستخدميه من ابتداع مؤثرات رسومية جديدة دون الحاجة إلى إعادة بناء المحرك في كل مرة&lt;br /&gt;
&amp;lt;ref&amp;gt;Anthony A. Apodaca, Larry Gritz: Advanced RenderMan: Creating CGI for Motion Picture, 1st edition, Morgan Kaufmann Publishers Inc, ISBN 1-55860-618-1&amp;lt;/ref&amp;gt;&lt;br /&gt;
. في بادئ الأمر، كانت مهمة المظللات تماماً كما يظهر من اسمها: حساب تظليل ولون كل [[بكسل]] من الصورة النهائية. تلى ذلك مظللات تقوم بعمليات أكثر تعقيداً من مجرد حساب الضوء المباشر والطيف اللوني (ك[[انعكاس (توضيح)|الانعكاس]]ات و[[انكسار (فيزياء)|الانكسار]]ات مثلاً). فتمدد المصطلح ليشمل أية عملية مخصصة يتم إضافتها لحسابات اللون النهائي للبكسلات في الصورة النهائية.&lt;br /&gt;
&lt;br /&gt;
== تطور المفهوم ==&lt;br /&gt;
تم تبني مفهوم المظللات في العديد من المحركات اللاحقة ل[[ريندر مان]]، وتم تحسينه ليتحول إلى كتلة برمجية صغيرة تستقبل مجموعة محددة وواضحة من المعلومات، وتقوم بتخريج قيمة محددة وواضحة أيضاً بناءً على تلك المدخلات&lt;br /&gt;
&amp;lt;ref&amp;gt;[https://renderman.pixar.com/products/rispec/rispec_pdf/RISpec3_2.pdf واجهة ريندر مان The RenderMan Interface] {{Webarchive|url=https://web.archive.org/web/20160616195438/https://renderman.pixar.com/products/rispec/rispec_pdf/RISpec3_2.pdf |date=16 يونيو 2016}} {{وصلة مكسورة|تاريخ=2020-08-02|bot=JarBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
. كمثال، مظلل يقوم بعكس لون البكسل يقوم ببساطة باستقبال لون البكسل، يحسب معكوسه، ثم يخرج النتيجة الجديدة.&lt;br /&gt;
يمكن ربط المظللات مع بعضها في سلسلة من العمليات المتلاحقة لتشكل تأثيراً أكثر تعقيداً مما يمكن تحقيقه بمظلل واحد فقط. اعتماداً على هذا المفهوم الأخير، نجد أن المحركات مثل [[ريندر مان]] و[[مينتال راي]] تسمح بالتعبير عن المواد Materials باستخدام شجرة من المظللات المرتبطة فيما بينها&lt;br /&gt;
&amp;lt;ref&amp;gt;[http://www.mentalimages.com/2_1_1_technical/index.html#shading خصائص مظللات مينتال راي] {{Webarchive|url=https://web.archive.org/web/20080701205027/http://www.mentalimages.com/2_1_1_technical/index.html |date=01 يوليو 2008}} {{وصلة مكسورة|تاريخ=2020-08-02|bot=JarBot}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
. كل مظلل مستقل بذاته، ويمكن إضافته أو إزالته لتعديل النتائج النهائية. من الجدير بالذكر أن هذه الشجرة ككل أيضاً قد تدعى مظلل. فالمفهوم ما زال حراً وتجده مستخدماً حتى للتعبير عن تأثير جرافيكي كامل يتضمن استخدام عدة مظللات معاً لتحقيقه.&lt;br /&gt;
&lt;br /&gt;
[[ملف:Mrrendertree.jpg|thumb|350px|شجرة من المظللات للتعبير عن مادة الحجر في مينتال راي - سوفت إيماج إكس إس آي]]&lt;br /&gt;
&lt;br /&gt;
== المؤثرات الرسومية باستخدام المظللات ==&lt;br /&gt;
مع ظهور المظللات اختلفت طريقة التفكير في إنجاز المؤثرات الرسومية. يتم أولاً تحليل المؤثر المطلوب، واستنباط الحسابات المكونة له. يتم تحديد المظللات المتاحة في المحرك والتي يمكن الاستفادة منها لأداء الحسابات المطلوبة أو أجزاء منها. قد يظهر أنه لا يوجد مظلل قادر على إنجاز جزء معين من الحسابات المطلوبة، عندها يلجأ إلى كتابة هذا المظلل وإضافته إلى مكتبة المظللات المتاحة من قبل المحرك. بعد ذلك، يتم تركيب المظللات مع بعضها لتمثل الحسابات المطلوبة للتأثير المرغوب.&lt;br /&gt;
حديثاً يتضمن تقييم جودة ال[[محرك ثلاثي الأبعاد]] مدى شمولية مكتبة مظللاته.&lt;br /&gt;
&lt;br /&gt;
== طريقة تعامل المحركات مع المظللات ==&lt;br /&gt;
بسبب الطبيعة المرنة للمواد المبنية باستخدام المظللات، وحقيقة أن هذه العمليات يجب أن يتم تنفيذها على كل بكسل من الصورة النهائية، فإن الحاجة قد برزت لإيجاد طرق لتسريع تنفيذ هذه المظللات. كمثال، لكل مادة، يتم تشكيل النص الكامل والمكون من الأقسام المختلفة المشكلة لكل مظلل على حدة (مكتوبة بلغة مظللات [[ريندر مان]])، ومن ثم يتم ترجمة هذا النص إلى تعليمات بلغة الآلة قبل تنفيذه بشكل سريع على جميع البكسلات التي يتم معالجتها. هذه الطريقة متبعة في كل من [[ريندر مان]] و[[مينتال راي]] (التفاصيل الكاملة للعملية أكثر تعقيداً مما تم شرحه هنا - انظر المصادر).&lt;br /&gt;
الفكرة تكمن في محاولة تفادي كل العمل الذي يمكن إنجازه مرة واحدة فقط. الوضع مشابه أيضاً في حالة المظللات الفورية (انظر في الأسفل)، إلا أن الموضوع ليس اختيارياً أساساً.&lt;br /&gt;
&lt;br /&gt;
== مقارنتها مع المظللات الفورية ==&lt;br /&gt;
لقد أتاح ظهور وتطور [[وحدة معالجة الرسوميات|معالجات الرسوميات]] تنفيذ المظللات المخصصة على هذه المعالجات طالما أن هذه المظللات تحترم مجموعة معينة من القيود (تختلف من جيل من المعالجات إلى آخر). إن مفهوم [[المظلل الفوري]] بدأ من المفهوم الأساسي للمظلل، إلا أنه أصبح أكثر تعميماً كذلك. ف[[المظلل الفوري]] هو ببساطة أي كود مخصص يتم تنفيذه على المعالج الرسومي. من هنا نرى أنه بالإضافة للمظللات التي تعمل على البكسلات، فإنه يوجد أيضاً مظللات تعمل على النقاط (vertices)، ومؤخراً مظللات تعمل على مستوى المجسم ككل، لديها إمكانية تعريف واستحداث مضلعات جديدة ضمن عملية الرسم.&lt;br /&gt;
حتى الآن، فإن الواجهات البرمجية للمظللات الفورية (ك[[دايركت ثري دي]] و[[مكتبة الرسوميات المفتوحة|أوبن جي إل]]) تستقبل فقط نصوصاً كاملة مكتوبة بصيغة خاصة تعبر عن كامل برنامج المظلل. هذا الوضع يختلف عن الفكرة الأساسية الموجودة في مظللات [[ريندر مان]].&lt;br /&gt;
إن القيود المفروضة على المظللات الفورية ناتجة بسبب طبيعة عملها. إذ أن المشاهد المرسومة بهذه المظللات يجب أن تتم خلال أجزاء صغيرة من الثانية للحفاظ على سلاسة الحركة ضمن المشهد الفوري. لذا نرى الكثير من المعالجات الفورية تقدم عدداً محدوداً من التعليمات الممكن تنفيذها ضمن هذه المظللات، كما أنها قد تعمل بدقة رقمية غير تامة لتسريع الأداء&lt;br /&gt;
&amp;lt;ref&amp;gt;[https://docs.microsoft.com/en-us/#Specifying_Full_or_Partial_Precision الدقة الرقمية في المظللات الفورية من الجيل الثالث ضمن مواصفات دايركت ثري دي 9] {{webarchive|url=https://web.archive.org/web/20080708211347/http://msdn.microsoft.com/msdnmag/issues/1100/Registry/#Specifying_Full_or_Partial_Precision |date=8 يوليو 2008 }} {{استشهاد ويب |مسار=https://docs.microsoft.com/en-us/ |عنوان=نسخة مؤرشفة |تاريخ الوصول=12 يوليو 2018 |تاريخ أرشيف=19 مايو 2016 |مسار أرشيف=https://web.archive.org/web/20160519050307/https://msdn.microsoft.com/en-us/library/ee422304(VS.85).aspx |url-status=bot: unknown }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
. المظللات التي تعمل ضمن محركات الرسم للإنتاج عالي الجودة لا تملك هذه القيود لأن رسم الكوادر غير محصور بزمن قصير كذلك في حالة الرسم الفوري.&lt;br /&gt;
&lt;br /&gt;
== أمثلة ==&lt;br /&gt;
=== مظلل لسطح معدني ب[[لغة تظليل ريندرمان]] ===&lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
surface metal(float Ka = 1; float Ks = 1; float roughness = 0.1;)&lt;br /&gt;
{&lt;br /&gt;
  normal Nf = faceforward(normalize(N), I);&lt;br /&gt;
  vector V = - normalize(I);&lt;br /&gt;
  Oi = Os;&lt;br /&gt;
  Ci = Os * Cs * (Ka * ambient() + Ks * specular(Nf, V, roughness));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مظلل [[مينتال راي]] لتلوين متدرج على سطح مستمر بلغة [[سي++]] ===&lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
DLLEXPORT miBoolean Ramp(miColor *result, miState *state, struct Ramp *paras)&lt;br /&gt;
{&lt;br /&gt;
  result-&amp;gt;r = result-&amp;gt;g = result-&amp;gt;b = 0;&lt;br /&gt;
  result-&amp;gt;a = 1;&lt;br /&gt;
&lt;br /&gt;
  int direction = (int)*mi_eval_integer(&amp;amp;paras-&amp;gt;direction);&lt;br /&gt;
  miColor color1 = *mi_eval_color(&amp;amp;paras-&amp;gt;color1);&lt;br /&gt;
  miColor color2 = *mi_eval_color(&amp;amp;paras-&amp;gt;color2);&lt;br /&gt;
  miScalar sharpness = *mi_eval_scalar(&amp;amp;paras-&amp;gt;sharpness);&lt;br /&gt;
  miScalar coord = *mi_eval_scalar(&amp;amp;paras-&amp;gt;coord);&lt;br /&gt;
  miScalar s = (sharpness * 0.4999);&lt;br /&gt;
  miScalar uC = (state-&amp;gt;tex_list[0].x) + (-coord + 0.5);&lt;br /&gt;
  miScalar vC = (state-&amp;gt;tex_list[0].y) + (-coord + 0.5);&lt;br /&gt;
&lt;br /&gt;
  if (uC &amp;gt; 1) uC = 1;&lt;br /&gt;
  if (uC &amp;lt; 0) uC = 0;&lt;br /&gt;
  if (vC &amp;gt; 1) vC = 1;&lt;br /&gt;
  if (vC &amp;lt; 0) vC = 0;&lt;br /&gt;
&lt;br /&gt;
  switch(direction)&lt;br /&gt;
  {&lt;br /&gt;
  case 0: &lt;br /&gt;
    result-&amp;gt;r = XMIX(color1.r, color2.r, uC);&lt;br /&gt;
    result-&amp;gt;g = XMIX(color1.g, color2.g, uC);&lt;br /&gt;
    result-&amp;gt;b = XMIX(color1.b, color2.b, uC);&lt;br /&gt;
    break;&lt;br /&gt;
  case 1:	&lt;br /&gt;
    result-&amp;gt;r = YMIX(color1.r, color2.r, vC);&lt;br /&gt;
    result-&amp;gt;g = YMIX(color1.g, color2.g, vC);&lt;br /&gt;
    result-&amp;gt;b = YMIX(color1.b, color2.b, vC);&lt;br /&gt;
    break;&lt;br /&gt;
  default: result= 0;&lt;br /&gt;
  }&lt;br /&gt;
  return miTRUE;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== مظلل فوري لعكس لون [[إكساء (توضيح)|إكساء]] ب[[لغة التجميع]] ل[[دايركت ثري دي]] 9 ===&lt;br /&gt;
&amp;lt;div dir=ltr&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ps_2_0&lt;br /&gt;
def c0, 1, 0, 0, 0&lt;br /&gt;
dcl t0.xy&lt;br /&gt;
dcl_2d s0&lt;br /&gt;
texld r0, t0, s0&lt;br /&gt;
add r0, -r0, c0.x&lt;br /&gt;
mov oC0, r0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== المصادر ==&lt;br /&gt;
{{مراجع}}&lt;br /&gt;
 &lt;br /&gt;
{{شريط بوابات|صور رقمية|برمجة الكمبيوتر}}&lt;br /&gt;
{{ضبط استنادي}}&lt;br /&gt;
&lt;br /&gt;
[[تصنيف:برمجة]]&lt;br /&gt;
[[تصنيف:تظليل]]&lt;br /&gt;
[[تصنيف:فنون مرئية]]&lt;br /&gt;
[[تصنيف:مصطلحات حوسبة]]&lt;/div&gt;</summary>
		<author><name>عبد العزيز</name></author>
	</entry>
</feed>