Shading language
شیڈنگ زبان ایک گرافکس پروگرامنگ زبان ہے جو پروگرامنگ شیڈر اثرات کے مطابق ڈھال لی گئی ہے۔ شیڈنگ زبانیں عام طور پر خصوصی ڈیٹا اقسام پر مشتمل ہوتی ہیں جیسے "ویکٹر"، "میٹرکس"، "کلر" اور "نارمل"۔ آف لائن رینڈرنگ میں استعمال ہونے والی شیڈنگ زبانیں قدرتی زبان کے قریب ہوتی ہیں، تاکہ پروگرامنگ کے کسی خاص علم کی ضرورت نہ پڑے۔ آف لائن رینڈرنگ کا مقصد ریئل ٹائم رینڈرنگ سے زیادہ وقت اور کمپیوٹ کی قیمت پر زیادہ سے زیادہ معیار کی تصاویر تیار کرنا ہے۔ رینڈر مین شیڈنگ زبان (آر ایس ایل یا ایس ایل، مختصر طور پر)، جس کی وضاحت رینڈر مین انٹرفیس اسپیسیفیکیشن میں کی گئی ہے، پیداوار کے معیار کی انجام دہی کے لیے ایک عام شیڈنگ زبان ہے۔ یہ اب تک نافذ کی جانے والی پہلی شیڈنگ زبانوں میں سے ایک ہے۔ یہ شیڈر کی چھ بڑی اقسام کی وضاحت کرتا ہے: لائٹ سورس شیڈرز روشنی کے منبع پر ایک نقطہ سے ہدف کی سطح پر ایک نقطہ تک خارج ہونے والی روشنی کے رنگ کا حساب لگاتے ہیں۔ سرفیس شیڈرز آنے والی روشنی اور شے کی جسمانی خصوصیات کی بنیاد پر کسی شے کی سطح پر پوائنٹس کے رنگ اور پوزیشن کا نمونہ بناتے ہیں۔ نقل مکانی کے شیڈر رنگ سے آزاد سطح کی جیومیٹری میں ہیرا پھیری کرتے ہیں۔ ڈیفارمیشن شیڈرز پوری جگہ کو بدل دیتے ہیں۔ صرف ایک رینڈر مین نفاذ، سیٹیکس گرافکس کے ذریعہ اے آئی آر رینڈرر نے اس شیڈر کی قسم کو نافذ کیا، جس سے خلا میں لاگو ہونے والی صرف ایک لکیری تبدیلی کی حمایت ہوتی ہے۔ حجم کے شیڈر روشنی کے رنگ میں ہیرا پھیری کرتے ہیں کیونکہ یہ حجم سے گزرتا ہے۔ وہ دھند جیسے اثرات پیدا کرتے ہیں۔ امیجر شیڈرز رنگ کی تبدیلی کو حتمی پکسل اقدار میں بیان کرتے ہیں۔ یہ ایک امیج فلٹر کی طرح ہے، سوائے اس کے کہ امیجر شیڈر کوانٹائزیشن سے پہلے ڈیٹا پر چلتا ہے۔ اس طرح کے ڈیٹا میں عام آؤٹ پٹ ڈیوائس پر دکھائے جانے سے زیادہ متحرک رینج اور رنگین ریزولوشن ہوتا ہے۔ ہودینی وی ای ایکس شیڈنگ لینگویج ہودینی وی ای ایکس (ویکٹر ایکسپریشنز) شیڈنگ لینگویج (اکثر مختصر طور پر "وی ای ایکس") کو رینڈر مین کے قریب سے ماڈل کیا جاتا ہے۔ تاہم، ایک مکمل 3D پیکیج میں اس کے انضمام کا مطلب یہ ہے کہ شیڈر رائٹر شیڈر کے اندر کی معلومات تک رسائی حاصل کر سکتا ہے، ایک ایسی خصوصیت جو عام طور پر رینڈرنگ کے تناظر میں دستیاب نہیں ہوتی ہے۔ آر ایس ایل اور وی ای ایکس کے درمیان زبان کے فرق بنیادی طور پر نحو ہیں، اس کے علاوہ کئی شیڈوپ ناموں کے ناموں کے حوالے سے بھی اختلافات ہیں۔ گیلاٹو شیڈنگ لینگویج گیلاٹو کی شیڈنگ زبان، ہوڈینی کے وی ای ایکس کی طرح، رینڈر مین کے قریب سے ماڈلنگ کی گئی ہے۔ گیلاٹو شیڈنگ لینگویج اور آر ایس ایل کے درمیان فرق بنیادی طور پر نحو ہے-گیلاٹو فنکشن کی تعریفوں میں دلائل کو الگ کرنے کے لیے کوما کے بجائے سیمی کولن کا استعمال کرتا ہے اور چند شیڈوپس کے مختلف نام اور پیرامیٹرز ہوتے ہیں۔ اوپن شیڈنگ لینگویج (او ایس ایل) کو سونی پکچرز امیج ورکس نے اپنے آرنلڈ رینڈرر میں استعمال کے لیے تیار کیا تھا۔ یہ بلینڈر سائیکل رینڈر انجن کے ذریعہ بھی استعمال ہوتا ہے۔ او ایس ایل کی سطح اور حجم شیڈرز اس بات کی وضاحت کرتے ہیں کہ کس طرح سطحیں یا حجم روشنی کو اس طرح بکھرے ہوئے ہیں جو اہمیت کے نمونے لینے کی اجازت دیتا ہے۔ اس طرح، یہ جسمانی طور پر مبنی رینڈررز کے لیے اچھی طرح سے موزوں ہے جو رے ٹریسنگ اور عالمی روشنی کی حمایت کرتے ہیں۔ ریئل ٹائم رینڈرنگ کے لیے ریئل ٹائم رینڈرنگ شیڈنگ زبانیں اب وسیع پیمانے پر پھیلی ہوئی ہیں۔ وہ پچھلے نمونوں کے مقابلے میں اعلی ہارڈ ویئر تجریدی اور زیادہ لچکدار پروگرامنگ ماڈل دونوں فراہم کرتے ہیں، جو ہارڈ کوڈڈ تبدیلی اور شیڈنگ مساوات ہیں۔ وہ کم اوور ہیڈ کے ساتھ زیادہ کنٹرول اور بہتر مواد فراہم کرتے ہیں۔ شیڈرز جو براہ راست جی پی یو پر انجام دینے کے لیے ڈیزائن کیے گئے ہیں، ان کے اسٹریم پروگرامنگ ماڈل کی وجہ سے ہائی تھرو پٹ جنرل پروسیسنگ کے لیے مفید ہو گئے۔ اس کی وجہ سے اسی طرح کے ہارڈ ویئر پر چلنے والے کمپیوٹ شیڈرز کی ترقی ہوئی (یہ بھی دیکھیں: جی پی جی پی یو)۔ تاریخی طور پر، ایسی چند زبانوں نے بازار پر غلبہ حاصل کیا ؛ وہ ذیل میں بیان کی گئی ہیں۔ اے آر بی اسمبلی زبان اوپن جی ایل آرکیٹیکچر ریویو بورڈ نے 2002 میں اے آر بی اسمبلی زبان کو پروگرام کے قابل گرافکس پروسیسرز کے لیے ایک معیاری نچلی سطح کے انسٹرکشن سیٹ کے طور پر قائم کیا۔ اعلی سطحی اوپن جی ایل شیڈنگ زبانیں اکثر لوڈنگ اور عمل درآمد کے لیے اے آر بی اسمبلی میں مرتب ہوتی ہیں۔ اعلی سطح کی شیڈنگ زبانوں کے برعکس، اے آر بی اسمبلی کنٹرول فلو یا برانچنگ کی حمایت نہیں کرتی ہے۔ تاہم، جب کراس-جی پی یو پورٹیبلٹی کی ضرورت ہوتی ہے تو اس کا استعمال جاری رہتا ہے۔ اوپن جی ایل شیڈنگ زبان جسے جی ایل ایس ایل یا گلسلانگ بھی کہا جاتا ہے، اس معیاری شیڈنگ زبان کا مقصد اوپن جی ایل کے ساتھ استعمال کرنا ہے۔ زبان ورٹیکس اور فریگمنٹ پروسیسنگ کو ایک ہی انسٹرکشن سیٹ میں متحد کرتی ہے، جس سے مشروط لوپس اور شاخوں کی اجازت ملتی ہے۔ جی ایل ایس ایل سے پہلے اے آر بی اسمبلی زبان تھی۔ سی جی پروگرامنگ زبان این وی آئی ڈی اے کے ذریعہ تیار کردہ سی جی زبان کو آسان اور موثر پروڈکشن پائپ لائن انضمام کے لیے ڈیزائن کیا گیا تھا۔ اس میں اے پی آئی کی آزادی کی خصوصیات ہیں اور اثاثہ جات کے انتظام کو بہتر بنانے کے لیے بہت سے مفت ٹولز کے ساتھ آتا ہے۔ سی جی کی ترقی کو 2012 میں روک دیا گیا تھا، اور اب اس زبان کو خارج کر دیا گیا ہے۔ ڈائریکٹ ایکس شیڈر اسمبلی زبان ڈائریکٹ 3 ڈی 8 اور 9 میں شیڈر اسمبلی زبان شیڈر ماڈل 1.0/1.1، 2.0، اور 3.0 میں ورٹیکس اور پکسل شیڈرز کے لیے اہم پروگرامنگ زبان ہے۔ یہ انٹرمیڈیٹ شیڈر بائٹ کوڈ کی براہ راست نمائندگی ہے جو عمل درآمد کے لیے گرافکس ڈرائیور کو منتقل کیا جاتا ہے۔ شیڈر اسمبلی زبان کو براہ راست یونیفائیڈ شیڈر ماڈل 4.0، 4.1، 5.0، اور 5.1 پروگرام کرنے کے لیے استعمال نہیں کیا جا سکتا، حالانکہ یہ ڈیبگ کے مقاصد کے لیے انٹرمیڈیٹ بائٹ کوڈ کی نمائندگی کے طور پر اپنے فنکشن کو برقرار رکھتی ہے۔ ڈائرکٹ ایکس ہائی لیول شیڈر لینگویج ہائی لیول شیڈر لینگویج (ایچ ایل ایس ایل) ڈائرکٹ ایکس 9 اور اس سے اوپر اور ایکس بکس گیم کنسولز کے لیے سی اسٹائل شیڈر لینگویج ہے۔ اس کا تعلق این ویڈیا کے سی جی سے ہے، لیکن اسے صرف ڈائریکٹ ایکس اور ایکس بکس کی حمایت حاصل ہے۔ ایچ ایل ایس ایل پروگراموں کو ڈائریکٹ ایکس شیڈر اسمبلی زبان کے مساوی بائٹ کوڈ میں مرتب کیا جاتا ہے۔ ایچ ایل ایس ایل کو ڈائریکٹ 3 ڈی 9 میں شیڈر اسمبلی زبان کے اختیاری متبادل کے طور پر متعارف کرایا گیا تھا، لیکن ڈائریکٹ 3 ڈی 10 اور اس سے زیادہ میں یہ ایک ضرورت بن گئی، جہاں شیڈر اسمبلی زبان کو خارج کر دیا گیا ہے۔ ایڈوب پکسل بینڈر اور ایڈوب گرافکس اسمبلی لینگویج ایڈوب سسٹمز نے پکسل بینڈر کو ایڈوب فلیش 10 اے پی آئی کے حصے کے طور پر شامل کیا۔ پکسل بینڈر صرف پکسل پر کارروائی کر سکتا تھا لیکن 3D-ورٹیکس ڈیٹا پر نہیں۔ فلیش 11 نے اسٹیج 3 ڈی نامی ایک مکمل طور پر نیا 3 ڈی اے پی آئی متعارف کرایا، جو ایڈوب گرافکس اسمبلی لینگویج (اے جی اے ایل) نامی اپنی شیڈنگ زبان استعمال کرتا ہے، جو مکمل 3 ڈی ایکسلریشن سپورٹ پیش کرتا ہے۔ پکسل بینڈر کے لیے جی پی یو ایکسلریشن کو فلیش 11.8 میں ہٹا دیا گیا۔ اے جی اے ایل ایک نچلی سطح کی لیکن پلیٹ فارم سے آزاد شیڈنگ زبان ہے، جسے مرتب کیا جا سکتا ہے، مثال کے طور پر، یا جی ایل ایس ایل۔ پلے اسٹیشن شیڈر لینگویج سونی نے پلے اسٹیشن شیڈر لینگویج (پی ایس ایس ایل) کو سی جی/ایچ ایل ایس ایل کی طرح شیڈنگ زبان کے طور پر اعلان کیا، لیکن پلے اسٹیشن 4 کے لیے مخصوص۔ کہا جاتا ہے کہ پی ایس ایس ایل پی سی پر ایچ ایل ایس ایل شیڈروں کے ساتھ بڑی حد تک مطابقت رکھتا ہے، لیکن پی ایس 4 پلیٹ فارم کے لیے اضافی خصوصیات کے ساتھ۔ میٹل شیڈنگ لینگویج ایپل نے ایک نچلی سطح کا گرافکس اے پی آئی بنایا ہے، جسے میٹل کہا جاتا ہے، جو 2012 کے بعد سے بنائے گئے زیادہ تر میکس، 5 ایس کے بعد سے آئی فونز اور آئی پیڈ ایئر کے بعد سے آئی پیڈ پر چلتا ہے۔ دھات کی اپنی شیڈنگ زبان ہے جسے میٹل شیڈنگ لینگویج (ایم ایس ایل) کہا جاتا ہے، جو سی + + 14 پر مبنی ہے اور کلانگ اور ایل ایل وی ایم کا استعمال کرتے ہوئے نافذ کی جاتی ہے۔ ایم ایس ایل ورٹیکس، فریگمنٹ اور کمپیوٹ پروسیسنگ کو یکجا کرتا ہے۔ ویب جی پی یو شیڈنگ لینگویج ویب جی پی یو شیڈنگ لینگویج (ڈبلیو جی ایس ایل) ویب جی پی یو کے لیے شیڈر زبان ہے۔ یعنی ویب جی پی یو اے پی آئی استعمال کرنے والی ایپلی کیشن پروگراموں کو ظاہر کرنے کے لیے ڈبلیو جی ایس ایل کا استعمال کرتی ہے، جسے شیڈرز کہا جاتا ہے، جو جی پی یو پر چلتے ہیں۔ ترجمہ شیڈرز کو ایک شیڈنگ زبان سے دوسری زبان میں پورٹ کرنے کے لیے، چند نقطہ نظر استعمال کیے جاتے ہیں: ایک مشترکہ انٹرفیس کی وضاحت کریں۔ مثال کے طور پر، سی جی/ایچ ایل ایس ایل، جی ایل ایس ایل، اور ایم ایس ایل سبھی سی پری پروسیسر میکرو کو لاگو کرتے ہیں، لہذا تمام مختلف کارروائیوں کو ایک مشترکہ انٹرفیس میں لپیٹنا ممکن ہے۔ والو کا ماخذ 2 اور این ویڈیا کا ایف ایکس اے اے 3.11 ایسا کرتے ہیں۔ ایک زبان سے دوسری زبان میں ترجمہ کریں۔ مثال کے طور پر، ڈائریکٹ ایکس بائٹ کوڈ کو جزوی طور پر ایچ ایل ایس ایل سی سی کے ذریعے جی ایل ایس ایل میں تبدیل کیا جا سکتا ہے، اور جی ایل ایس ایل کو ایچ ایل ایس ایل میں تبدیل کرنے کے لیے کئی ٹولز جیسے اے این جی ایل ای اور ایچ ایل ایس ایل 2 جی ایل ایس ایل موجود ہیں۔ انٹرمیڈیٹ زبان کی وضاحت کریں۔ ایس پی آئی آر-V کو جزوی طور پر اس مقصد کے لیے ڈیزائن کیا گیا ہے۔ اسے ایچ ایل ایس ایل یا جی ایل ایس ایل سے تیار کیا جا سکتا ہے، اور اسے ایچ ایل ایس ایل، جی ایل ایس ایل، یا ایم ایس ایل میں تقسیم کیا جا سکتا ہے۔ حوالہ جات نوٹ اوپن جی ایل کے لیے سابقہ ورٹیکس شیڈنگ زبانوں (کسی خاص ترتیب میں نہیں) میں ای ایکس ٹی ورٹیکس شیڈر، این وی ورٹیکس پروگرام، مذکورہ بالا اے آر بی ورٹیکس پروگرام، این وی ورٹیکس پروگرام 2 اور این وی ورٹیکس پروگرام 3 شامل ہیں۔ فریگمنٹ شیڈنگ کے لیے این وی پارس ممکنہ طور پر پہلی شیڈنگ زبان ہے جس میں این وی _ رجسٹر _ کمبینرز پر مبنی اعلی سطحی تجریدی، پکسل ریاضی کے لیے این وی _ رجسٹر _ کمبینرز 2 اور این وی _ ٹیکسٹچر _ شیڈر، این وی _ ٹیکسٹچر _ شیڈر 2 اور ٹیکسٹچر تلاش کے لیے این وی _ ٹیکسٹچر _ شیڈر 3 شامل ہیں۔ اے ٹی آئی _ فریگمنٹ _ شیڈر نے "سٹرنگ پر مبنی" تجزیہ کی سہولت بھی فراہم نہیں کی (حالانکہ اسے بعد میں اے ٹی آئی _ ٹیکسٹ _ فریگمنٹ _ شیڈر نے شامل کیا ہے)۔ اے آر بی _ فریگمنٹ _ پروگرام بہت کامیاب رہا ہے۔ این وی _ فریگمنٹ _ پروگرام اور این وی _ فریگمنٹ _ پروگرام 2 دراصل ایک جیسے ہیں حالانکہ مؤخر الذکر دوسروں کے حوالے سے بہت زیادہ جدید فعالیت فراہم کرتا ہے۔ این وی آئی ڈی اے کے ہوم پیج سے ایف ایکس کمپوزر، روڈی کورٹس اور ستیہ راگھوچاری: دی رینڈر مین شیڈنگ لینگویج گائیڈ، کورس ٹیکنالوجی پی ٹی آر، 1 ایڈیشن (27 دسمبر 2007)، پروگرامنگ زبان کی درجہ بندی