لغة التظليل عالية المستوى

لغة التظليل عالية المستوى [ 1 ] أو لغة التظليل عالية المستوى [ 2 ] ( HLSL ) هي لغة تظليل خاصة طورتها مايكروسوفت لواجهة برمجة تطبيقات Direct3D 9 لتعزيز لغة تجميع التظليل ، وأصبحت فيما بعد لغة التظليل المطلوبة لنموذج التظليل الموحد في Direct3D 10 والإصدارات الأحدث. وقد طُوّرت بالتوازي مع لغة التظليل Cg (اختصارًا لـ C للرسومات ) من إنفيديا. كانت الإصدارات الأولى من اللغتين تُعتبر متطابقة، ولم يُسوّق لها إلا اسمان مختلفان. [ 3 ]

على الرغم من أن لغتي Cg وHLSL تشتركان في نفس البنية الأساسية، فقد تم تعديل بعض ميزات لغة C وإضافة أنواع بيانات جديدة لجعل Cg/HLSL أكثر ملاءمة لبرمجة وحدات معالجة الرسومات . [ 4 ] [ 5 ]

يوجد فرعان رئيسيان للغة Cg/HLSL: مُصرّف Nvidia Cg (cgc) الذي يُخرج DirectX أو OpenGL، وMicrosoft HLSL الذي يُخرج تظليلات DirectX بصيغة بايت كود. [ 6 ] [ 7 ] تم إيقاف دعم مُصرّف Nvidia Cgc في عام 2012، دون أي تطوير أو دعم إضافي. [ 8 ]

يمكن لبرامج التظليل HLSL تمكين العديد من المؤثرات الخاصة في كل من رسومات الكمبيوتر ثنائية وثلاثية الأبعاد .

  • كانت لغة Cg/HLSL في الأصل تدعم فقط مُظلِّلات الرؤوس ومُظلِّلات البكسل (أو "القطعة" في GLSL). يُنفَّذ مُظلِّل الرؤوس لكل رأس يُرسَل من التطبيق، وهو المسؤول بشكل أساسي عن تحويل الرأس من فضاء الكائن إلى فضاء العرض، وتوليد إحداثيات النسيج، وحساب معاملات الإضاءة مثل متجهات العمودي والمماسي والمماسي المزدوج للرأس. عندما تمر مجموعة من الرؤوس (عادةً 3 رؤوس لتشكيل مثلث) عبر مُظلِّل الرؤوس، يتم استيفاء موضعها الناتج لتشكيل بكسلات داخل مساحتها؛ تُعرف هذه العملية باسم التنميط النقطي .
  • قدم DirectX 10 (Shader Model 4) و Cg 2.0 تظليلات هندسية . [ 9 ] يأخذ هذا التظليل كمدخل له بعض رؤوس شكل بدائي (مثلث/خط/نقطة) ويستخدم هذه البيانات لإنشاء/تبسيط (أو تقسيم ) أشكال بدائية إضافية أو لتغيير نوع الأشكال البدائية، والتي يتم إرسال كل منها بعد ذلك إلى المُرَسِّم.
  • قدّم DirectX 11 (نموذج التظليل 5) مُظلِّلات الحوسبة ( GPGPU ) ومُظلِّلات التجزئة (الهيكل والنطاق). وتوجد الأخيرة في Cg 3.1.
  • قدم DirectX 12 (Shader Model 6.3) تظليل تتبع الأشعة (توليد الأشعة، التقاطع، أي ضربة / أقرب ضربة / خطأ).

قدمت D3D11.3 و D3D12 نموذج Shader 5.1 [ 10 ] ولاحقًا 6.0. [ 11 ]

خلفية

بفضل التطورات التقنية في أجهزة معالجة الرسومات، أصبحت بعض جوانب برمجة الرسومات ثلاثية الأبعاد معقدة للغاية. ولتبسيط العملية، أُضيفت ميزات جديدة إلى بطاقات الرسومات، بما في ذلك إمكانية تعديل مسارات العرض باستخدام مُظلِّلات الرؤوس والبكسل.

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

من فوائد استخدام Cg/HLSL بدلاً من التجميع:

  • من الأسهل تعلم وبرمجة وقراءة وصيانة التعليمات البرمجية عالية المستوى مقارنة بتعليمات التجميع.
  • إن كود Cg/HLSL قابل للنقل إلى مجموعة واسعة من الأجهزة والمنصات، على عكس كود التجميع، الذي يعتمد عادةً على الأجهزة والمنصات التي كُتب من أجلها.
  • يمكن لمترجم Cg/HLSL تحسين التعليمات البرمجية والقيام بمهام المستوى الأدنى تلقائيًا، والتي يصعب القيام بها وعرضة للأخطاء في لغة التجميع.

لغة

أنواع البيانات

تحتوي لغة Cg/HLSL على ستة أنواع بيانات أساسية. بعضها مماثل لما هو موجود في لغة C، بينما أُضيفت أنواع أخرى خصيصًا لبرمجة وحدات معالجة الرسومات (GPU). وهذه الأنواع هي:

  • float - عدد عشري 32 بت
  • نصف - عدد عشري ذو 16 بت
  • int - عدد صحيح 32 بت
  • ثابت - رقم ذو فاصلة ثابتة مكون من 12 بت
  • bool - متغير منطقي
  • عينة* - تمثل كائن نسيجي

تتضمن مكتبة Cg أيضًا أنواع بيانات متجهة ومصفوفية مبنية على أنواع البيانات الأساسية، مثل float3 و float4x4. تُعد هذه الأنواع شائعة جدًا في برمجة الرسومات ثلاثية الأبعاد. كما تحتوي Cg على أنواع بيانات هيكلية ومصفوفية ، تعمل بطريقة مشابهة لنظيراتها في لغة C.

المشغلون

يدعم Cg مجموعة واسعة من عوامل التشغيل، بما في ذلك عوامل التشغيل الحسابية الشائعة من C، وعوامل التشغيل الحسابية المكافئة لأنواع بيانات المتجهات والمصفوفات، وعوامل التشغيل المنطقية الشائعة .

الوظائف وهياكل التحكم

تشترك لغة Cg مع لغة C في هياكل التحكم الأساسية، مثل if/else و while و for. كما أنها تمتلك طريقة مماثلة لتعريف الدوال.

علم الدلالة

المعالج المسبق

تُنفذ Cg العديد من توجيهات المعالج المسبق للغة C ونظام توسيع الماكرو الخاص بها. وهي تُنفذ [ 12 ]#include .

ميزات HLSL

  • مساحة الاسم
  • شرح

بيئة

تُصمَّم برامج Cg لملفات تعريف تظليل مختلفة ، والتي تُمثِّل وحدات معالجة رسومية (GPUs) ذات قدرات مُتباينة. [ 13 ] تُحدِّد هذه الملفات، من بين أمور أخرى، عدد التعليمات التي يُمكن تضمينها في كل مُظلِّل، وعدد السجلات المُتاحة، ونوع الموارد التي يُمكن للمُظلِّل استخدامها. حتى لو كان البرنامج صحيحًا، فقد يكون مُعقَّدًا للغاية بحيث لا يُمكن العمل عليه باستخدام ملف تعريف مُعيَّن. [ 12 ]

مع ازدياد عدد أنواع الملفات التعريفية والظلال، تحولت مايكروسوفت إلى استخدام مصطلح "نموذج التظليل" لتجميع مجموعة من الملفات التعريفية الموجودة في جيل معين من وحدات معالجة الرسومات. [ 14 ] يدعم Cg بعض الملفات التعريفية الأحدث حتى Shader Model 5.0، بالإضافة إلى الترجمة إلى glsl أو hlsl. [ 13 ]

وحدات معالجة الرسومات المذكورة هي الأجهزة التي دعمت المواصفات المحددة في البداية. يدعم المصنّعون عمومًا جميع نماذج التظليل الأدنى من خلال برامج التشغيل. تجدر الإشارة إلى أن الألعاب قد تدّعي اشتراط إصدار معين من DirectX، ولكنها لا تشترط بالضرورة وحدة معالجة رسومات متوافقة مع المواصفات الكاملة لذلك الإصدار، حيث يمكن للمطورين استخدام إصدار أحدث من واجهة برمجة تطبيقات DirectX لاستهداف الأجهزة ذات مواصفات Direct3D الأقل؛ على سبيل المثال، يُتيح DirectX 9 ميزات من مستوى DirectX 7 لم تكن موجودة في DirectX 7، وذلك لاستهداف مسار T&L ذي الوظائف الثابتة.

مقارنة تظليل البكسل

إصدار مُظلل البكسل1.01.11.2

1.3 [ 15 ]

1.4 [ 15 ]2.0 [ 15 ] [ 16 ]2.0a [ 15 ] [ 16 ] [ 17 ]2.0ب [ 15 ] [ 16 ] [ 18 ]3.0 [ 15 ] [ 19 ]4.0 [ 20 ] 4.1 [ 21 ]

5.0 [ 22 ]

حد النسيج المعتمد44468غير محدود8غير محدودغير محدود
حد تعليمات النسيج4446 * 232غير محدودغير محدودغير محدودغير محدود
حد تعليمات الحساب8888 * 264غير محدودغير محدودغير محدودغير محدود
سجل المناصبلالالالالالالانعمنعم
فتحات التعليمات88 + 48 + 4(8 + 6) * 264 + 32512512≥ 512≥ 65536
تم تنفيذ التعليمات88 + 48 + 4(8 + 6) * 264 + 3251251265536غير محدود
اتجاهات النسيج غير المباشرة44444غير محدود4غير محدودغير محدود
السجلات المُستكملة2 + 42 + 42 + 42 + 62 + 82 + 82 + 81032
إسناد التعليماتلالالالالانعملانعملا
سجلات إدخال الفهرسلالالالالالالانعمنعم
مسجلات درجة الحرارة22 + 43 + 46من 12 إلى 322232324096
سجلات الثوابت888832323222416×4096
خلط عشوائيلالالالالانعملانعمنعم
تعليمات التدرج اللونيلالالالالانعملانعمنعم
سجل عدد الحلقاتلالالالالالالانعمنعم
شاشة عرض الوجه (إضاءة ثنائية الجوانب)لالالالالالانعمنعمنعم
التحكم الديناميكي في التدفقلالالالالالالانعم (24)نعم (64)
عوامل التشغيل الثنائيةلالالالالالالالانعم
الأعداد الصحيحة الأصليةلالالالالالالالانعم
  • PS 1.0 — لعبة 3dfx Rampage غير مُصدرة، DirectX 8
  • PS 1.1GeForce 3 ، DirectX 8
  • PS 1.23Dlabs Wildcat VP، DirectX 8.1
  • PS 1.3 - غيفورسي 4 تي آي ، دايركت إكس 8.1
  • PS 1.4Radeon 8500–9250 ، Matrox Parhelia ، DirectX 8.1
  • نموذج التظليل 2.0Radeon 9500–9800/X300–X600 ، DirectX 9
  • نموذج التظليل 2.0a — نموذج مُحسَّن لبطاقات GeForce FX/PCX ، DirectX 9.0a
  • نموذج التظليل 2.0b — نموذج تظليل Radeon X700–X850 ، DirectX 9.0b
  • نموذج التظليل 3.0 - Radeon X1000 و GeForce 6 ، DirectX 9.0c
  • نموذج التظليل 4.0 - Radeon HD 2000 و GeForce 8 ، DirectX 10
  • نموذج التظليل 4.1 - Radeon HD 3000 و GeForce 200 ، DirectX 10.1
  • نموذج التظليل 5.0 - Radeon HD 5000 و GeForce 400 ، DirectX 11
  • نموذج التظليل 5.1GCN 1+ ، Fermi+، DirectX 12 (11_0+) مع WDDM 2.0
  • نموذج التظليل 6.0 — GCN 1+، Kepler+، DirectX 12 (11_0+) مع WDDM 2.1
  • نموذج التظليل 6.1 — GCN 1+، Kepler+، DirectX 12 (11_0+) مع WDDM 2.3
  • نموذج التظليل 6.2 — GCN 1+، Kepler+، DirectX 12 (11_0+) مع WDDM 2.4
  • نموذج التظليل 6.3 — GCN 1+، Kepler+، DirectX 12 (11_0+) مع WDDM 2.5
  • نموذج التظليل 6.4 — GCN 1+، Kepler+، Skylake+، DirectX 12 (11_0+) مع WDDM 2.6
  • نموذج التظليل 6.5 — GCN 1+، Kepler+، Skylake+، DirectX 12 (11_0+) مع WDDM 2.7
  • نموذج التظليل 6.6 — GCN 4+، Maxwell+، DirectX 12 (11_0+) مع WDDM 3.0
  • نموذج التظليل 6.7 — GCN 4+، Maxwell+، DirectX 12 (12_0+) مع WDDM 3.1
  • نموذج التظليل 6.8 — RDNA 1+، Maxwell 2+، DirectX 12 (12_0+) مع WDDM 3.1 / 3.2 مع Agility SDK

"32 + 64" للتعليمات المنفذة تعني "32 تعليمات نسيجية و 64 تعليمات حسابية".

مقارنة تظليل الرؤوس

إصدار مُظلل الرؤوس1.01.1 [ 23 ]2.0 [ 16 ] [ 23 ] [ 17 ]2.0a [ 16 ] [ 23 ] [ 17 ]3.0 [ 19 ] [ 23 ]4.0 [ 20 ] 4.1 [ 21 ] 5.0 [ 22 ]
عدد خانات التعليمات128128256256≥ 512≥ 65536
الحد الأقصى لعدد التعليمات المنفذة12812810246553665536غير محدود
إسناد التعليماتلالالانعمنعمنعم
مسجلات درجة الحرارة12121216324096
# سجلات ثابتة≥ 96≥ 96≥ 256256≥ 25616×4096
سجل العناوينلانعمنعمنعمنعمنعم
التحكم في التدفق الثابتلالانعمنعمنعمنعم
التحكم الديناميكي في التدفقلالالانعمنعمنعم
عمق التحكم الديناميكي في التدفقغير متوفرغير متوفرغير متوفر242464
جلب نسيج الرؤوسلالالالانعمنعم
أنواع عينات النسيجغير متوفرغير متوفرغير متوفرغير متوفر4128
دعم إنشاء نسخ هندسيةلالالالانعمنعم
عوامل التشغيل على مستوى البتلالالالالانعم
الأعداد الصحيحة الأصليةلالالالالانعم

المكتبة القياسية

كما هو الحال في لغة C، تتضمن لغة Cg/HLSL مجموعة من الدوال للمهام الشائعة في برمجة وحدات معالجة الرسومات. بعض هذه الدوال لها مكافئات في لغة C، مثل الدوال الرياضية abs و sin، بينما بعضها الآخر متخصص في مهام برمجة وحدات معالجة الرسومات، مثل دوال رسم الخرائط النسيجية tex1D و tex2D.

مكتبة وقت التشغيل Cg/HLSL

برامج Cg/HLSL هي مجرد مُظلِّلات للرؤوس والبكسلات، وتحتاج إلى برامج داعمة تُعنى ببقية عملية العرض. يمكن استخدام Cg مع واجهتي برمجة رسومية : OpenGL أو DirectX . لكل منهما مجموعة خاصة من دوال Cg للتواصل مع برنامج Cg، مثل تحديد مُظلِّل Cg الحالي، وتمرير المعاملات، وما شابه ذلك. (يستهدف HLSL واجهة DirectX فقط).

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

لتجنب كشف شفرة المصدر الخاصة بالمظلل، مع الحفاظ على بعض التحسينات الخاصة بالأجهزة، تم تطوير مفهوم الملفات التعريفية. يمكن تجميع المظللات لتناسب منصات أجهزة الرسومات المختلفة (وفقًا للملفات التعريفية). عند تشغيل البرنامج المساعد، يتم تحميل أفضل/أكثر المظللات كفاءةً وفقًا لملفه التعريفي. على سبيل المثال، قد يكون هناك ملف تعريفي لبطاقة رسومات تدعم مظللات البكسل المعقدة، وملف تعريفي آخر لبطاقة تدعم مظللات البكسل البسيطة فقط. من خلال إنشاء مظلل بكسل لكل ملف تعريفي من هذه الملفات، يُوسّع البرنامج المساعد نطاق منصات الأجهزة المدعومة دون التضحية بجودة الصورة على الأنظمة القوية.

المترجمون واللهجات

لم يكن للغة Cg سوى مترجم واحد على الإطلاق، وهو مجموعة أدوات Cg من Nvidia.

أصدرت مايكروسوفت مُترجمين للغة HLSL. كان المُترجم الأصلي هو FXC (مُترجم التأثيرات) مغلق المصدر، والذي استمر دعمه حتى عام 2015. ثم تم إيقاف دعمه لصالح DXC (مُترجم DirectX Shader) مفتوح المصدر والمبني على LLVM، والذي يدعم ميزات HLSL الأحدث. [ 24 ] يُنتج كلا المُترجمين رمزًا وسيطًا: فبينما كان FXC الأقدم يستخدم DXBC، يستخدم DXC الآن DXIL. كما يُمكن لـ DXC أيضًا إنتاج رمز وسيط SPIR-V . [ 25 ]

طوّرت مجموعة كرونوس أيضًا مُصرّف HLSL قائمًا على LLVM، على شكل واجهة أمامية لبرنامج glslang ، وهو مُصرّف GLSL-to-SPIR-V الخاص بهم. يدعم SPIR-V إمكانية تشغيل المُظلّلات على منصات متعددة، ما يُلغي حصرها في بيئة DirectX. [ 26 ] كانت هذه المهمة تُؤدّى سابقًا بواسطة مُحوّلات على مستوى المصدر مثل HLSL2GLSL ، ولكن غالبًا ما يكون الكود الناتج مُضخّمًا. [ 27 ]

اللغات المشتقة

تعتمد لغة تظليل بلاي ستيشن ( PSSL) على لغة Cg/HLSL. [ 28 ]

تعتمد لغة التظليل ReshadeFX أيضًا على Cg/HLSL. يتم تجميع برامج التظليل المكتوبة بلغة ReshadeFX إلى OpenGL أو DX أو Vulkan، ثم تُضاف إلى الألعاب لتعمل كمرشحات للمعالجة اللاحقة. [ 29 ]

طوّرت كرونوس منذ ذلك الحين لغة glslang إلى لغة slang ، وهي لغة تظليل ومترجم متوافقان إلى حد كبير مع لغة HLSL من حيث شفرة المصدر. يمكن ترجمة لغة slang إلى لغات تظليل نصية (GLSL، MSL ، CUDA، WGSL )، ورموز بايت (D3D11، D3D12، Vulkan SPIR-V )، بالإضافة إلى وحدة المعالجة المركزية. كما أنها تحتوي على وضع توافق مع GLSL. [ 30 ]

التطبيقات والألعاب التي تستخدم Cg أو HLSL

انظر أيضاً

مراجع

  1. "كتابة تظليلات HLSL في Direct3D 9" . وثائق مايكروسوفت . تم الاطلاع عليه بتاريخ 22 فبراير 2021 .
  2. "لغة التظليل عالية المستوى (HLSL)" . وثائق مايكروسوفت . تم الاطلاع عليه بتاريخ 22 فبراير 2021 .
  3. "Fusion Industries :: أسئلة وأجوبة حول Cg وHLSL ::" . 24 أغسطس 2012. مؤرشف من الأصل في 24 أغسطس 2012.  
  4. "Fusion Industries :: أسئلة وأجوبة حول Cg وHLSL ::" . 24 أغسطس 2012. مؤرشف من الأصل في 24 أغسطس 2012.  
  5. "دليل Cg - الفصل 1. مقدمة" . developer.download.nvidia.cn .
  6. "كتابة تظليلات HLSL في Direct3D 9 (Windows)" . msdn.microsoft.com . 24 مايو 2021.
  7. "أسئلة وأجوبة حول الرسوميات الحاسوبية" . NVIDIA DesignWorks . 8 مارس 2011. تم الاطلاع عليه في 25 مايو 2017 .
  8. "مجموعة أدوات Cg | مطور NVIDIA" . 8 مارس 2011.
  9. "ملاحظات إصدار Cg 2.0" (ملف PDF) . nvidia.com . يناير 2008.
  10. "كائنات نموذج التظليل 5.1" . وثائق مايكروسوفت . تم الاطلاع عليه بتاريخ 22 فبراير 2021 .
  11. "نموذج تظليل HLSL 6.0" . وثائق مايكروسوفت . تم الاطلاع عليه بتاريخ 22 فبراير 2021 .
  12. 1 2 مارك ج. كيلغارد ، Cg في صفحتين ، 2003.
  13. 1 2 "وثائق ملف تعريف Cg" . مطور Nvidia .
  14. "نماذج التظليل مقابل ملفات تعريف التظليل - تطبيقات Win32" . docs.microsoft.com . 30 يونيو 2021.
  15. 1 2 3 4 5 6 "اختلافات مُظلِّل البكسل" . وثائق مايكروسوفت . 19 أغسطس 2020. تم الاطلاع عليه في 22 فبراير 2021 .
  16. 1 2 3 4 5 بيبر، كريج؛ ميتشل، جيسون ل. (يوليو 2003). "مقدمة إلى لغة التظليل عالية المستوى DirectX 9" . وثائق مايكروسوفت . تم الاسترجاع في 22 فبراير 2021 .
  17. 1 2 3 شيمبي، أناند لال . "إنفيديا تُطلق GeForce FX (NV30)" . أناند تك . مؤرشف من الأصل في 10 يونيو 2013. تم الاطلاع عليه في 22 فبراير 2021 .
  18. ويلسون، ديريك. "وصول بطاقة ATI Radeon X800 Pro وXT Platinum Edition: R420" . موقع AnandTech . مؤرشف من الأصل في 28 سبتمبر 2012. تم الاطلاع عليه في 22 فبراير 2021 .
  19. 1 2 Shader Model 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
  20. 1 2 نظام Direct3D 10، ديفيد بليث، شركة مايكروسوفت، 2006.
  21. 1 2 "السجلات - ps_4_1" . مستندات مايكروسوفت . 23 أغسطس 2019. تم الاطلاع عليه في 22 فبراير 2021 .
  22. 1 2 "السجلات - ps_5_0" . مستندات مايكروسوفت . 23 أغسطس 2019. تم الاطلاع عليه في 22 فبراير 2021 .
  23. 1 2 3 4 "اختلافات تظليل الرؤوس" . مستندات مايكروسوفت . 19 أغسطس 2020. تم الاطلاع عليه في 22 فبراير 2021 .
  24. "نقل الملفات من FXC إلى DXC" . GitHub .
  25. "microsoft/DirectXShaderCompiler: يستضيف هذا المستودع مصدر مُجمِّع تظليل DirectX المبني على LLVM/Clang" . مايكروسوفت. ٢١ أكتوبر ٢٠٢٠.
  26. "glslang: واجهة أمامية مرجعية من كرونوس للغة GLSL/ESSL، وواجهة أمامية جزئية للغة HLSL، ومولد SPIR-V" . مجموعة كرونوس. 21 أكتوبر 2020.
  27. مات تيرنر. فيديو على يوتيوب .
  28. ستينسون، ريتشارد؛ هو، كريس. "لغة تظليل بلاي ستيشن لجهاز PS4" . مؤتمر مطوري الألعاب أوروبا 2013 .
  29. "لغة تظليل ReShade FX" . GitHub . 15 فبراير 2022.
  30. "لغة التظليل العامية" . لغة التظليل العامية. 8 ديسمبر 2025.
  31. "Maya Cg Plug-in | NVIDIA" .
  32. "نظرة عامة على ميزات LightWave - الإصدار 11.6" .
  33. "Unity - Manual: Writing Shaders" .

للمزيد من القراءة

  • رانديما فرناندو، مارك جيه. كيلغارد (2003)، دليل Cg التعليمي : الدليل الشامل للرسومات القابلة للبرمجة في الوقت الحقيقي ، أديسون-ويسلي بروفيشنال، ISBN 0-321-19496-9
  • رانديما فرناندو (2004)، جواهر وحدة معالجة الرسومات: تقنيات البرمجة، والنصائح، والحيل للرسومات في الوقت الحقيقي ، أديسون-ويسلي بروفيشنال، رقم ISBN 0-321-22832-4
  • ويليام ر. مارك، ر. ستيفن غلانفيل، كورت أكلي ، مارك ج. كيلغارد ، Cg: نظام لبرمجة أجهزة الرسومات بلغة تشبه لغة C ، وقائع مؤتمر SIGGRAPH 2003، doi : 10.1145/1201775.882362