Graphics pipeline
کمپیوٹر گرافکس پائپ لائن، جسے رینڈرنگ پائپ لائن یا گرافکس پائپ لائن بھی کہا جاتا ہے، کمپیوٹر گرافکس کے اندر ایک فریم ورک ہے جو اسکرین پر تین جہتی (3D) منظر کو دو جہتی (2D) نمائندگی میں تبدیل کرنے کے لیے ضروری طریقہ کار کا خاکہ پیش کرتا ہے۔ ایک بار تھری ڈی ماڈل تیار ہونے کے بعد، چاہے وہ ویڈیو گیم کے لیے ہو یا تھری ڈی کمپیوٹر اینیمیشن کی کسی اور شکل کے لیے، گرافکس پائپ لائن ماڈل کو کمپیوٹر ڈسپلے پر بصری طور پر قابل فہم شکل میں تبدیل کر دیتی ہے۔ مخصوص سافٹ ویئر، ہارڈ ویئر کی ترتیبات، اور مطلوبہ ڈسپلے صفات پر انحصار کی وجہ سے، عالمگیر طور پر قابل اطلاق گرافکس پائپ لائن موجود نہیں ہے۔ بہر حال، گرافکس ایپلیکیشن پروگرامنگ انٹرفیس (APIs)، جیسے کہ ڈائریکٹ 3 ڈی اور اوپن جی ایل، عام طریقہ کار کو معیاری بنانے اور دیئے گئے ہارڈ ویئر ایکسلریٹر کے گرافکس پائپ لائن کی نگرانی کے لیے تیار کیے گئے تھے۔ یہ APIs بنیادی ہارڈ ویئر پر ایک تجریدی پرت فراہم کرتے ہیں، جس سے پروگرامرز کو کوڈ لکھنے کی ضرورت سے راحت ملتی ہے جس میں واضح طور پر مختلف گرافکس ہارڈ ویئر ایکسلریٹرز جیسے AMD، انٹیل، Nvidia، اور دیگر کو نشانہ بنایا جاتا ہے۔ گرافکس پائپ لائن کا ماڈل عام طور پر ریئل ٹائم رینڈرنگ میں استعمال ہوتا ہے۔ اکثر، پائپ لائن کے زیادہ تر مراحل ہارڈ ویئر میں نافذ کیے جاتے ہیں، جو خصوصی اصلاح کی اجازت دیتا ہے۔ "پائپ لائن" کی اصطلاح پروسیسرز میں پائپ لائن کے لیے اسی طرح استعمال کی جاتی ہے: پائپ لائن کے انفرادی مراحل متوازی طور پر چلتے ہیں جب تک کہ کسی بھی مرحلے میں اس کی ضرورت ہو۔ تھری ڈی پائپ لائن عام طور پر کمپیوٹر تھری ڈی رینڈرنگ کی سب سے عام شکل سے مراد ہے جسے تھری ڈی پولیگن رینڈرنگ کہا جاتا ہے، جو ریٹریسنگ اور ری کاسٹنگ سے الگ ہے۔ ری کاسٹنگ میں، ایک شعاع اس مقام سے نکلتی ہے جہاں کیمرہ رہتا ہے، اور اگر وہ شعاع کسی سطح سے ٹکراتی ہے، تو اس سطح پر اس مقام کا رنگ اور روشنی جہاں شعاع ٹکراتی ہے اس کا حساب لگایا جاتا ہے۔ تھری ڈی پولیگن رینڈرنگ میں الٹا ہوتا ہے-کیمرے کے نظر میں آنے والے علاقے کا حساب لگایا جاتا ہے اور پھر کیمرے کے نظر میں ہر سطح کے ہر حصے سے شعاعیں پیدا کی جاتی ہیں اور کیمرے کا سراغ لگایا جاتا ہے۔ ساخت ایک گرافکس پائپ لائن کو تین اہم حصوں میں تقسیم کیا جا سکتا ہے: اطلاق، جیومیٹری اور رسٹرائزیشن۔ درخواست کا مرحلہ مرکزی پروسیسر (سی پی یو) پر سافٹ ویئر کے ذریعے انجام دیا جاتا ہے۔ درخواست کے مرحلے کے دوران، ضرورت کے مطابق منظر میں تبدیلیاں کی جاتی ہیں، مثال کے طور پر، ان پٹ ڈیوائسز کے ذریعے یا حرکت پذیری کے دوران صارف کے تعامل کے ذریعے۔ نئے منظر کو اس کے تمام ابتدائی پہلوؤں، عام طور پر مثلث، لکیروں اور نکات کے ساتھ، پھر پائپ لائن کے اگلے مرحلے پر منتقل کیا جاتا ہے۔ درخواست کے مرحلے میں عام طور پر کیے جانے والے کاموں کی مثالیں تصادم کا پتہ لگانے، حرکت پذیری، مورفنگ، اور ایکسلریشن تکنیک ہیں جو مقامی ذیلی تقسیم اسکیموں جیسے کواڈٹریس یا آکٹریس کا استعمال کرتی ہیں۔ ان کا استعمال ایک مقررہ وقت پر درکار مرکزی میموری کی مقدار کو کم کرنے کے لیے بھی کیا جاتا ہے۔ جدید کمپیوٹر گیم کی "دنیا" اس سے کہیں زیادہ بڑی ہے جو ایک ہی وقت میں میموری میں فٹ ہو سکتی ہے۔ جیومیٹری مرحلہ (جیومیٹری پائپ لائن کے ساتھ)، جو کثیر الاضحی اور ان کے عمودی حصوں (ورٹیکس پائپ لائن کے ساتھ) کے ساتھ زیادہ تر کارروائیوں کے لیے ذمہ دار ہے، کو درج ذیل پانچ کاموں میں تقسیم کیا جا سکتا ہے۔ یہ اس بات پر منحصر ہے کہ ان کاموں کو حقیقی متوازی پائپ لائن اقدامات کے طور پر کس طرح منظم کیا جاتا ہے۔ تعریفیں ایک عمودی (جمع: عمودی) دنیا میں ایک نقطہ ہے۔ سطحوں کو جوڑنے کے لیے بہت سے نکات استعمال کیے جاتے ہیں۔ خاص صورتوں میں، پوائنٹ کلاؤڈز براہ راست کھینچے جاتے ہیں، لیکن یہ اب بھی مستثنی ہے۔ مثلث کمپیوٹر گرافکس کا سب سے عام ہندسی ابتدائی ہے۔ اس کی تعریف اس کے تین عمودی اور ایک عام ویکٹر سے کی جاتی ہے-عام ویکٹر مثلث کے سامنے والے چہرے کی نشاندہی کرنے کا کام کرتا ہے اور یہ ایک ویکٹر ہے جو سطح پر عمودی ہوتا ہے۔ مثلث کو رنگ کے ساتھ یا ساخت کے ساتھ فراہم کیا جا سکتا ہے (اس کے اوپر تصویر "چپکی ہوئی")۔ مثلثوں کو مستطیلوں پر ترجیح دی جاتی ہے کیونکہ ان کے تین نکات ہمیشہ ایک ہی سطح پر موجود ہوتے ہیں۔ ورلڈ کوآرڈینیٹ سسٹم ورلڈ کوآرڈینیٹ سسٹم وہ کوآرڈینیٹ سسٹم ہے جس میں ورچوئل دنیا بنائی جاتی ہے۔ مندرجہ ذیل ریاضی کو آسانی سے لاگو کرنے کے لیے اسے چند شرائط کو پورا کرنا چاہیے: یہ ایک آئتاکار کارٹیزین کوآرڈینیٹ سسٹم ہونا چاہیے جس میں تمام محوروں کو یکساں طور پر ماپا جاتا ہے۔ کوآرڈینیٹ سسٹم کی اکائی کی وضاحت کیسے کی جاتی ہے، یہ ڈویلپر پر چھوڑ دیا جاتا ہے۔ لہذا، آیا نظام کا یونٹ ویکٹر حقیقت میں ایک میٹر سے مطابقت رکھتا ہے یا اینگسٹروم اطلاق پر منحصر ہے۔ چاہے دائیں ہاتھ کا کوآرڈینیٹ سسٹم استعمال کیا جائے یا بائیں ہاتھ کا کوآرڈینیٹ سسٹم استعمال کرنے کے لیے گرافک لائبریری کے ذریعے طے کیا جا سکتا ہے۔ مثال: اگر ہمیں فلائٹ سمیلیٹر تیار کرنا ہے، تو ہم ورلڈ کوآرڈینیٹ سسٹم کا انتخاب کر سکتے ہیں تاکہ ابتدا زمین کے وسط میں ہو اور یونٹ ایک میٹر پر مقرر ہو۔ اس کے علاوہ، حقیقت کے حوالے کو آسان بنانے کے لیے، ہم اس بات کی وضاحت کرتے ہیں کہ X محور کو خط استوا کو صفر مریدین پر کاٹنا چاہیے، اور Z محور قطبوں سے گزرتا ہے۔ دائیں ہاتھ کے نظام میں، Y-محور 90° مشرقی مریدین (بحر ہند میں کہیں) سے گزرتا ہے۔ اب ہمارے پاس ایک مربوط نظام ہے جو زمین پر ہر نقطہ کو تین جہتی کارٹیشین نقاط میں بیان کرتا ہے۔ اس مربوط نظام میں اب ہم اپنی دنیا، پہاڑوں، وادیوں اور سمندروں کے اصولوں کا نمونہ بنا رہے ہیں۔ نوٹ: کمپیوٹر جیومیٹری کے علاوہ، جغرافیائی نقاط زمین، یعنی عرض البلد اور طول البلد کے ساتھ ساتھ سطح سمندر سے بلندی کے لیے استعمال ہوتے ہیں۔ تخمینہ تبدیلی-اگر کوئی اس حقیقت پر غور نہیں کرتا ہے کہ زمین ایک قطعی دائرہ نہیں ہے-تو یہ آسان ہے: R = زمین کا رداس [6.378.137m] کے ساتھ، لیٹ = عرض البلد، لمبا = طول البلد، ہیسل = سطح سمندر سے اونچائی۔ مندرجہ ذیل تمام مثالیں دائیں ہاتھ کے نظام میں لاگو ہوتی ہیں۔ بائیں ہاتھ کے نظام کے لیے علامتوں کو آپس میں تبدیل کرنے کی ضرورت پڑ سکتی ہے۔ منظر کے اندر موجود اشیاء (مکانات، درخت، کاریں) کو اکثر آسان ماڈلنگ کی وجوہات کی بناء پر ان کے اپنے آبجیکٹ کوآرڈینیٹ سسٹم (جسے ماڈل کوآرڈینیٹ سسٹم یا لوکل کوآرڈینیٹ سسٹم بھی کہا جاتا ہے) میں ڈیزائن کیا جاتا ہے۔ ان اشیاء کو ورلڈ کوآرڈینیٹ سسٹم یا پورے منظر کے گلوبل کوآرڈینیٹ سسٹم میں کوآرڈینیٹ تفویض کرنے کے لیے، آبجیکٹ کوآرڈینیٹ ترجمہ، گردش یا اسکیلنگ کے ذریعے تبدیل کیے جاتے ہیں۔ یہ متعلقہ تبدیلی میٹرکس کو ضرب دے کر کیا جاتا ہے۔ اس کے علاوہ، ایک شے سے کئی مختلف طور پر تبدیل شدہ کاپیاں بنائی جا سکتی ہیں، مثال کے طور پر درخت سے جنگل ؛ اس تکنیک کو انسٹانسنگ کہا جاتا ہے۔ دنیا میں ہوائی جہاز کے ماڈل کو رکھنے کے لیے، ہم پہلے چار میٹرکس کا تعین کرتے ہیں۔ چونکہ ہم تین جہتی خلا میں کام کرتے ہیں، اس لیے ہمیں اپنے حساب کے لیے چار جہتی یکساں میٹرکس کی ضرورت ہوتی ہے۔ سب سے پہلے، ہمیں تین گردش میٹرکس کی ضرورت ہے، یعنی تین ہوائی جہاز کے محور (عمودی محور، ٹرانسورس محور، طول البلد محور) میں سے ہر ایک کے لیے ایک۔ X محور کے ارد گرد (عام طور پر آبجیکٹ کوآرڈینیٹ سسٹم میں ایک طول البلد محور کے طور پر بیان کیا جاتا ہے) Y محور کے ارد گرد (عام طور پر آبجیکٹ کوآرڈینیٹ سسٹم میں ٹرانسورس محور کے طور پر بیان کیا جاتا ہے) Z محور کے ارد گرد (عام طور پر آبجیکٹ کوآرڈینیٹ سسٹم میں عمودی محور کے طور پر بیان کیا جاتا ہے) ہم ایک ترجمہ میٹرکس بھی استعمال کرتے ہیں جو ہوائی جہاز کو ہماری دنیا میں مطلوبہ نقطہ پر لے جاتا ہے: تبصرہ: مذکورہ بالا میٹرکس کو آرٹیکل گردش میٹرکس کے حوالے سے منتقل کیا گیا ہے۔ اس کی وجہ کی وضاحت کے لیے نیچے مزید دیکھیں۔ اب ہم ان چار میٹرکس کے ساتھ ہر نقطہ کو لگاتار ضرب دے کر عالمی نقاط میں ہوائی جہاز کے عمودی حصوں کی پوزیشن کا حساب لگا سکتے ہیں۔ چونکہ ویکٹر کے ساتھ میٹرکس کا ضرب کافی مہنگا ہوتا ہے (وقت طلب)، اس لیے عام طور پر ایک دوسرا راستہ اختیار کرتا ہے اور پہلے چار میٹرکس کو ایک ساتھ ضرب دیتا ہے۔ دو میٹرکس کا ضرب اور بھی زیادہ مہنگا ہے، لیکن پورے آبجیکٹ کے لیے صرف ایک بار اسے انجام دیا جانا چاہیے۔ ضرب اور مساوی ہیں۔ اس کے بعد، نتیجے میں آنے والے میٹرکس کو عمودی حصوں پر لگایا جا سکتا ہے۔ عملی طور پر، تاہم، عمودی کے ساتھ ضرب اب بھی لاگو نہیں ہوتی ہے، لیکن کیمرہ میٹرکس (نیچے دیکھیں) کا تعین پہلے کیا جاتا ہے۔ تاہم، اوپر سے ہماری مثال کے لیے، ترجمہ کا تعین کچھ مختلف طریقے سے کرنا پڑتا ہے، کیونکہ قطب شمالی کے علاوہ اوپر کا مشترکہ معنی مثبت زیڈ محور کی ہماری تعریف سے مطابقت نہیں رکھتا ہے اور اس لیے ماڈل کو بھی زمین کے مرکز کے گرد گھمایا جانا چاہیے: پہلا قدم ماڈل کی ابتدا کو زمین کی سطح سے اوپر صحیح اونچائی پر دھکیلتا ہے، پھر اسے عرض البلد اور طول البلد سے گھمایا جاتا ہے۔ جس ترتیب میں میٹرکس کا اطلاق ہوتا ہے وہ اہم ہے، کیونکہ میٹرکس کا ضرب متغیر نہیں ہے۔ یہ تین گردشوں پر بھی لاگو ہوتا ہے، جسے ایک مثال سے ظاہر کیا جا سکتا ہے: نقطہ (1، 0، 0) X-محور پر واقع ہے، اگر کوئی اسے پہلے X-کے ارد گرد 90° سے اور پھر Y-محور کے ارد گرد گھومتا ہے، تو یہ Z-محور پر ختم ہوتا ہے (X-محور کے ارد گرد گردش کا محور پر موجود نقطہ پر کوئی اثر نہیں ہوتا ہے)۔ اگر، دوسری طرف، کوئی پہلے Y-محور کے ارد گرد اور پھر X-محور کے ارد گرد گھومتا ہے، تو نتیجہ نقطہ Y-محور پر واقع ہوتا ہے۔ ترتیب خود من مانی ہوتی ہے جب تک کہ یہ ہمیشہ ایک جیسی رہے۔ x، پھر y، پھر z (رول، پچ، ہیڈنگ) کے ساتھ ترتیب اکثر سب سے زیادہ بدیہی ہوتی ہے، کیونکہ گردش کمپاس کی سمت کو "ناک" کی سمت کے ساتھ موافق بناتی ہے۔ ان میٹرکس کی وضاحت کے لیے دو کنونشن بھی ہیں، یہ اس بات پر منحصر ہے کہ آپ کالم ویکٹرز کے ساتھ کام کرنا چاہتے ہیں یا قطار ویکٹرز کے ساتھ۔ مختلف گرافکس لائبریریوں کی یہاں مختلف ترجیحات ہیں۔ اوپن جی ایل کالم ویکٹرز، ڈائریکٹ ایکس قطار ویکٹرز کو ترجیح دیتا ہے۔ فیصلہ اس بات کا تعین کرتا ہے کہ پوائنٹ ویکٹروں کو کس طرف سے ٹرانسفارمیشن میٹرکس سے ضرب دی جانی ہے۔ کالم ویکٹروں کے لیے، ضرب دائیں طرف سے کی جاتی ہے، یعنی۔ جہاں vout اور vin 4x1 کالم ویکٹر ہیں۔ میٹرکس کا امتزاج بھی دائیں سے بائیں کیا جاتا ہے، یعنی، مثال کے طور پر، جب پہلے گھومتا ہے اور پھر منتقل ہوتا ہے۔ صف ویکٹروں کے معاملے میں، یہ بالکل دوسرے طریقے سے کام کرتا ہے۔ ضرب اب 1x4 صف کے ویکٹروں کی طرح بائیں سے ہوتی ہے اور کنکیٹیشن تب ہوتا ہے جب ہم بھی پہلے گھومتے ہیں اور پھر حرکت کرتے ہیں۔ اوپر دکھائے گئے میٹرکس دوسرے کیس کے لیے درست ہیں، جبکہ کالم ویکٹر کے لیے ٹرانسپوز کیے گئے ہیں۔ قاعدہ لاگو ہوتا ہے، جس کا مطلب ہے کہ ویکٹروں کے ساتھ ضرب کا مطلب یہ ہے کہ آپ میٹرکس کو منتقل کرکے ضرب کی ترتیب کو تبدیل کر سکتے ہیں۔ اس میٹرکس چیننگ کے بارے میں دلچسپ بات یہ ہے کہ ایک نیا کوآرڈینیٹ سسٹم اس طرح کی ہر تبدیلی سے متعین ہوتا ہے۔ اسے اپنی مرضی کے مطابق بڑھایا جا سکتا ہے۔ مثال کے طور پر، ہوائی جہاز کا پروپیلر ایک علیحدہ ماڈل ہو سکتا ہے، جسے پھر ہوائی جہاز کی ناک میں ترجمہ کے ذریعے رکھا جاتا ہے۔ اس ترجمہ کو صرف ماڈل کوآرڈینیٹ سسٹم سے پروپیلر کوآرڈینیٹ سسٹم میں تبدیلی کو بیان کرنے کی ضرورت ہے۔ پورے طیارے کو کھینچنے کے لیے، طیارے کے لیے ٹرانسفارمیشن میٹرکس کا پہلے تعین کیا جاتا ہے، پوائنٹس کو تبدیل کیا جاتا ہے، اور پھر پروپیلر ماڈل میٹرکس کو طیارے کے میٹرکس سے ضرب دی جاتی ہے، اور پھر پروپیلر پوائنٹس کو تبدیل کیا جاتا ہے۔ اس طرح سے شمار کیے جانے والے میٹرکس کو ورلڈ میٹرکس بھی کہا جاتا ہے۔ پیش کرنے سے پہلے دنیا میں ہر شے کے لیے اس کا تعین کیا جانا چاہیے۔ ایپلیکیشن یہاں تبدیلیاں متعارف کرا سکتی ہے، مثال کے طور پر ہر فریم کے بعد رفتار کے مطابق ہوائی جہاز کی پوزیشن تبدیل کریں۔ کیمرہ کی تبدیلی اشیاء کے علاوہ، منظر ایک ورچوئل کیمرہ یا ناظرین کی بھی وضاحت کرتا ہے جو اس منظر کی پوزیشن اور سمت کی نشاندہی کرتا ہے جس سے منظر پیش کیا جاتا ہے۔ منظر کو تبدیل کر دیا گیا ہے تاکہ کیمرہ Z محور کے ساتھ اصل میں نظر آئے۔ نتیجے میں آنے والے کوآرڈینیٹ سسٹم کو کیمرہ کوآرڈینیٹ سسٹم کہا جاتا ہے اور اس تبدیلی کو کیمرہ ٹرانسفارمیشن یا ویو ٹرانسفارمیشن کہا جاتا ہے۔ ویو میٹرکس کا تعین عام طور پر کیمرے کی پوزیشن، ٹارگٹ پوائنٹ (جہاں کیمرہ نظر آتا ہے) اور "اپ ویکٹر" (ناظرین کے نقطہ نظر سے "اپ") سے کیا جاتا ہے۔ پہلے تین معاون ویکٹر درکار ہوتے ہیں: نارمل کے ساتھ (v) = ویکٹر v کی نارملائزیشن ؛ کراس (v1، v2) = v1 اور v2 کا کراس پروڈکٹ۔ آخر میں، میٹرکس: ڈاٹ کے ساتھ (v1، v2) = v1 اور v2 کا ڈاٹ پروڈکٹ۔ پروجیکشن تھری ڈی پروجیکشن مرحلہ دیکھنے کے حجم کو کونے کے نقطہ نقاط (-1،-1، 0) اور (1، 1، 1) کے ساتھ مکعب میں تبدیل کر دیتا ہے۔ کبھی کبھار ہدف کے دیگر حجم بھی استعمال کیے جاتے ہیں۔ اس مرحلے کو پروجیکشن کہا جاتا ہے، حالانکہ یہ حجم کو دوسرے حجم میں تبدیل کرتا ہے، کیونکہ اس کے نتیجے میں Z نقاط تصویر میں محفوظ نہیں ہوتے ہیں، بلکہ بعد کے رسٹرنگ مرحلے میں صرف Z-بفرنگ میں استعمال ہوتے ہیں۔ ایک نقطہ نظر کی عکاسی میں، ایک مرکزی پروجیکشن استعمال کیا جاتا ہے۔ دکھائے گئے اشیا کی تعداد کو محدود کرنے کے لیے، دو اضافی کلپنگ طیاروں کا استعمال کیا جاتا ہے۔ اس لیے بصری حجم ایک کٹا ہوا اہرام (فرسٹم) ہے۔ متوازی یا آرتھوگنل پروجیکشن کا استعمال، مثال کے طور پر، تکنیکی نمائندگی کے لیے کیا جاتا ہے کیونکہ اس کا فائدہ یہ ہے کہ آبجیکٹ اسپیس میں تمام متوازی بھی امیج اسپیس میں متوازی ہوتے ہیں، اور سطحیں اور حجم دیکھنے والے سے فاصلے سے قطع نظر ایک ہی سائز کے ہوتے ہیں۔ نقشہ جات، مثال کے طور پر، ایک آرتھوگنل پروجیکشن (نام نہاد آرتھوفوٹو) کا استعمال کرتے ہیں، لیکن کسی زمین کی تزئین کی متروک تصاویر کو اس طرح سے استعمال نہیں کیا جا سکتا-حالانکہ انہیں تکنیکی طور پر پیش کیا جا سکتا ہے، وہ اتنے مسخ شدہ لگتے ہیں کہ ہم ان کا کوئی استعمال نہیں کر سکتے۔ نقطہ نظر کی نقشہ سازی کے میٹرکس کا حساب لگانے کا فارمولا یہ ہے: ایچ = کوٹ (فیلڈ اوف ویو/2) (کیمرے کا یپرچر اینگل) ؛ ڈبلیو = ایچ/پہلو تناسب (ہدف کی تصویر کا پہلو تناسب) ؛ قریب = نظر آنے والا سب سے چھوٹا فاصلہ ؛ دور = نظر آنے والا سب سے طویل فاصلہ۔ یہاں سب سے چھوٹا اور سب سے بڑا فاصلہ کیوں دیا جانا چاہیے اس کی وجوہات یہ ہیں کہ، ایک طرف، اس فاصلے کو اس سے تقسیم کیا جاتا ہے تاکہ منظر کی اسکیلنگ تک پہنچ سکے (زیادہ دور کی اشیاء قریب کی اشیاء کے مقابلے میں نقطہ نظر کی تصویر میں چھوٹی ہوتی ہیں)، اور دوسری طرف Z-بفر کو پر کرنے کے لیے Z اقدار کو 0.1 کی حد تک پیمانہ کرنا۔ اس بفر میں اکثر صرف 16 بٹس کا ریزولوشن ہوتا ہے، یہی وجہ ہے کہ قریب اور دور کی اقدار کو احتیاط سے منتخب کیا جانا چاہیے۔ قریب اور دور کی قیمت کے درمیان بہت بڑا فرق زیڈ بفر کے کم ریزولوشن کی وجہ سے نام نہاد زیڈ فائٹنگ کا باعث بنتا ہے۔ فارمولے سے یہ بھی دیکھا جا سکتا ہے کہ قریب کی قدر 0 نہیں ہو سکتی، کیونکہ یہ نقطہ پروجیکشن کا فوکس پوائنٹ ہے۔ اس وقت کوئی تصویر موجود نہیں ہے۔ مکمل ہونے کی خاطر، متوازی پروجیکشن کا فارمولا (آرتھوگنل پروجیکشن): ڈبلیو = ٹارگٹ کیوب کی چوڑائی کے ساتھ (ورلڈ کوآرڈینیٹ سسٹم کی اکائیوں میں طول و عرض) ؛ ایچ = ڈبلیو/پہلو تناسب (ٹارگٹ امیج کا پہلو تناسب) ؛ قریب = نظر آنے والا سب سے چھوٹا فاصلہ ؛ دور = نظر آنے والا سب سے طویل فاصلہ۔ کارکردگی کی وجوہات کی بناء پر، کیمرہ اور پروجیکشن میٹرکس کو عام طور پر ایک ٹرانسفارمیشن میٹرکس میں ملایا جاتا ہے تاکہ کیمرہ کوآرڈینیٹ سسٹم کو خارج کر دیا جائے۔ نتیجے میں میٹرکس عام طور پر ایک تصویر کے لیے یکساں ہوتا ہے، جبکہ ورلڈ میٹرکس ہر شے کے لیے مختلف نظر آتا ہے۔ عملی طور پر، اس لیے، ویو اور پروجیکشن کا پہلے سے حساب لگایا جاتا ہے تاکہ ڈسپلے کے دوران صرف ورلڈ میٹرکس کو ڈھالنا پڑے۔ تاہم، زیادہ پیچیدہ تبدیلیاں جیسے کہ ورٹیکس بلینڈنگ ممکن ہیں۔ آزادانہ طور پر پروگرام کے قابل جیومیٹری شیڈرز جو جیومیٹری میں ترمیم کرتے ہیں انہیں بھی انجام دیا جا سکتا ہے۔ اصل رینڈرنگ مرحلے میں، ورلڈ میٹرکس * کیمرا میٹرکس * پروجیکشن میٹرکس کا حساب لگایا جاتا ہے اور پھر آخر میں ہر ایک نقطہ پر لاگو ہوتا ہے۔ اس طرح، تمام اشیاء کے نکات براہ راست اسکرین کوآرڈینیٹ سسٹم میں منتقل کیے جاتے ہیں (کم از کم تقریبا، محوروں کی قدر کی حد اب بھی مرئی رینج کے لیے-1 ہے، سیکشن "ونڈو-ویوپورٹ-ٹرانسفارمیشن" دیکھیں)۔ روشنی اکثر کسی منظر میں روشنی کے ذرائع ہوتے ہیں جو مختلف مقامات پر رکھے جاتے ہیں تاکہ اشیاء کی روشنی زیادہ حقیقت پسندانہ نظر آئے۔ اس صورت میں، ساخت کے لیے ایک فائدہ عنصر کا حساب روشنی کے ذرائع اور متعلقہ مثلث سے وابستہ مادی خصوصیات کی بنیاد پر ہر سرے کے لیے کیا جاتا ہے۔ رسٹرائزیشن کے بعد کے مرحلے میں، مثلث کی عمودی اقدار کو اس کی سطح پر انٹرپولیٹ کیا جاتا ہے۔ تمام سطحوں پر ایک عام روشنی (وسیع روشنی) لگائی جاتی ہے۔ یہ منظر کی پھیلی ہوئی اور اس طرح سمت سے آزاد چمک ہے۔ سورج روشنی کا ایک براہ راست ذریعہ ہے، جس کے بارے میں یہ فرض کیا جا سکتا ہے کہ وہ لامحدود دور ہے۔ سطح پر سورج کی طرف سے متاثر ہونے والی روشنی کا تعین سورج سے دشاتمک ویکٹر کے اسکیلر پروڈکٹ اور سطح کے نارمل ویکٹر کی تشکیل سے ہوتا ہے۔ اگر قیمت منفی ہے، تو سطح سورج کی طرف ہے۔ کلپنگ صرف ابتدائی جو بصری حجم کے اندر ہیں انہیں اصل میں رسٹر (تیار) کرنے کی ضرورت ہے۔ اس بصری حجم کو فرسٹم کے اندرونی حصے کے طور پر بیان کیا گیا ہے، جو ایک اہرام کی شکل میں ایک کٹ آف ٹاپ کے ساتھ ہے۔ ابتدائی جو بصری حجم سے مکمل طور پر باہر ہوتے ہیں انہیں خارج کر دیا جاتا ہے ؛ اسے فرسٹم کلنگ کہا جاتا ہے۔ مزید کلنگ کے طریقے جیسے کہ بیک فیس کلنگ، جو غور کرنے کے لیے پرائمیٹوز کی تعداد کو کم کرتے ہیں، نظریاتی طور پر گرافکس پائپ لائن کے کسی بھی مرحلے میں انجام دیے جا سکتے ہیں۔ ابتدائی جو صرف جزوی طور پر مکعب کے اندر ہوتے ہیں انہیں مکعب کے سامنے کاٹا جانا چاہیے۔ پچھلے پروجیکشن مرحلے کا فائدہ یہ ہے کہ کلپنگ ہمیشہ ایک ہی مکعب کے خلاف ہوتی ہے۔ صرف-ممکنہ طور پر کلپ شدہ-ابتدائی، جو بصری حجم کے اندر ہیں، کو آخری مرحلے میں بھیج دیا جاتا ہے۔ ونڈو ویو پورٹ تبدیلی اسکرین کے کسی بھی ٹارگٹ ایریا (ویو پورٹ) میں تصویر کو آؤٹ پٹ کرنے کے لیے، ایک اور تبدیلی، ونڈو ویو پورٹ تبدیلی، کا اطلاق کرنا ضروری ہے۔ یہ ایک شفٹ ہے، جس کے بعد اسکیلنگ ہوتی ہے۔ نتیجے میں آنے والے کوآرڈینیٹ آؤٹ پٹ ڈیوائس کے ڈیوائس کوآرڈینیٹ ہیں۔ ویو پورٹ 6 اقدار پر مشتمل ہوتا ہے: پکسلز میں ونڈو کی اونچائی اور چوڑائی، ونڈو کوآرڈینیٹس میں ونڈو کا اوپری بائیں کونہ (عام طور پر 0، 0) اور زیڈ کے لیے کم از کم اور زیادہ سے زیادہ اقدار (عام طور پر 0 اور 1)۔ رسمی طور پر: وی پی = ویوپورٹ کے ساتھ ؛ وی = پوائنٹ آفٹر پروجیکشن جدید ہارڈ ویئر پر، جیومیٹری کے زیادہ تر حساب کتاب کے مراحل ورٹیکس شیڈر میں انجام دیے جاتے ہیں۔ یہ، اصولی طور پر، آزادانہ طور پر پروگرام کے قابل ہے، لیکن عام طور پر کم از کم پوائنٹس کی تبدیلی اور روشنی کا حساب انجام دیتا ہے۔ ڈائریکٹ ایکس پروگرامنگ انٹرفیس کے لیے، ورژن 10 سے کسٹم ورٹیکس شیڈر کا استعمال ضروری ہے، جبکہ پرانے ورژن میں اب بھی ایک معیاری شیڈر ہوتا ہے۔ رسٹرائزیشن مرحلہ فریگمنٹ شیڈر پائپ لائن سے پہلے کا آخری مرحلہ ہے جس کے ساتھ تمام پرائمیٹوز کو رسٹرائز کیا جاتا ہے۔ رسٹرائزیشن مرحلے میں، مسلسل پرائمیٹوز سے مجرد ٹکڑے بنائے جاتے ہیں۔ گرافکس پائپ لائن کے اس مرحلے میں، زیادہ امتیازی ہونے کی خاطر گرڈ پوائنٹس کو ٹکڑے بھی کہا جاتا ہے۔ ہر ٹکڑا فریم بفر میں ایک پکسل سے مطابقت رکھتا ہے اور یہ اسکرین کے ایک پکسل سے مطابقت رکھتا ہے۔ یہ رنگین ہو سکتے ہیں (اور ممکنہ طور پر روشن)۔ مزید برآں، اوور لیپنگ پولیگنز کی صورت میں، نظر آنے والے، مبصر کے ٹکڑے کے قریب کا تعین کرنا ضروری ہے۔ زیڈ بفر عام طور پر اس نام نہاد پوشیدہ سطح کے تعین کے لیے استعمال ہوتا ہے۔ کسی ٹکڑے کا رنگ نظر آنے والے قدیم کی روشنی، ساخت اور دیگر مادی خصوصیات پر منحصر ہوتا ہے اور اکثر مثلث ورٹیکس کی خصوصیات کا استعمال کرتے ہوئے اس کی مداخلت کی جاتی ہے۔ جہاں دستیاب ہو، ایک فریگمنٹ شیڈر (جسے پکسل شیڈر بھی کہا جاتا ہے) کو آبجیکٹ کے ہر ٹکڑے کے لیے رسٹرنگ مرحلے میں چلایا جاتا ہے۔ اگر کوئی ٹکڑا نظر آتا ہے، تو اسے اب تصویر میں پہلے سے موجود رنگین اقدار کے ساتھ ملایا جا سکتا ہے اگر شفافیت یا ملٹی سیمپلنگ کا استعمال کیا جائے۔ اس مرحلے میں، ایک یا زیادہ ٹکڑے پکسل بن جاتے ہیں۔ اس بات کو روکنے کے لیے کہ صارف پرائمیٹوز کی بتدریج رسٹرائزیشن دیکھتا ہے، ڈبل بفرنگ ہوتی ہے۔ رسٹرائزیشن ایک خصوصی میموری ایریا میں کی جاتی ہے۔ ایک بار جب تصویر کو مکمل طور پر رسٹرائز کیا جاتا ہے، تو اسے امیج میموری کے مرئی علاقے میں کاپی کیا جاتا ہے۔ الٹا استعمال ہونے والے تمام میٹرکس نان سنگولر ہوتے ہیں اور اس طرح الٹا ہوتے ہیں۔ چونکہ دو نان سنگولر میٹرکس کا ضرب ایک اور نان سنگولر میٹرکس بناتا ہے، اس لیے پورا ٹرانسفارمیشن میٹرکس بھی الٹا ہوتا ہے۔ اسکرین کوآرڈینیٹس سے ورلڈ کوآرڈینیٹس کا دوبارہ حساب لگانے کے لیے انورس کی ضرورت ہوتی ہے-مثال کے طور پر، ماؤس پوائنٹر سے کلک کردہ آبجیکٹ کی پوزیشن کا تعین کرنے کے لیے۔ تاہم، چونکہ اسکرین اور ماؤس کے صرف دو طول و عرض ہیں، اس لیے تیسرا نامعلوم ہے۔ لہذا، دنیا میں کرسر پوزیشن پر ایک کرن پیش کی جاتی ہے اور پھر دنیا میں کثیر الاضحی کے ساتھ اس کرن کے چوراہے کا تعین کیا جاتا ہے۔ شیڈر کلاسک گرافکس کارڈ اب بھی گرافکس پائپ لائن کے نسبتا قریب ہیں۔ جی پی یو پر بڑھتی ہوئی مانگ کے ساتھ، مزید لچک پیدا کرنے کے لیے پابندیوں کو بتدریج ہٹا دیا گیا۔ جدید گرافکس کارڈ آزادانہ طور پر پروگرام کے قابل، شیڈر کنٹرولڈ پائپ لائن کا استعمال کرتے ہیں، جو انفرادی پروسیسنگ کے مراحل تک براہ راست رسائی کی اجازت دیتا ہے۔ مرکزی پروسیسر کو راحت دینے کے لیے، اضافی پروسیسنگ کے مراحل کو پائپ لائن اور جی پی یو میں منتقل کر دیا گیا ہے۔ سب سے اہم شیڈر اکائیاں ورٹیکس شیڈرز، جیومیٹری شیڈرز اور پکسل شیڈرز ہیں۔ تمام اکائیوں سے مکمل فائدہ اٹھانے کے لیے یونیفائیڈ شیڈر متعارف کرایا گیا ہے۔ یہ شیڈر یونٹس کا ایک بڑا پول فراہم کرتا ہے۔ ضرورت کے مطابق پول کو شیڈروں کے مختلف گروپوں میں تقسیم کیا جاتا ہے۔ اس لیے شیڈر کی اقسام کے درمیان سخت علیحدگی اب کارآمد نہیں ہے۔ جی پی یو پر گرافک کے ڈسپلے سے کسی بھی حساب کو انجام دینے کے لیے نام نہاد کمپیوٹ شیڈر کا استعمال کرنا بھی ممکن ہے۔ فائدہ یہ ہے کہ وہ بہت متوازی چلتے ہیں، لیکن حدود ہیں۔ ان عالمگیر حسابات کو گرافکس پروسیسنگ یونٹس پر جنرل پرپز کمپیوٹنگ، یا مختصر طور پر جی پی جی پی یو بھی کہا جاتا ہے۔ میش شیڈرز ایک حالیہ اضافہ ہے، جس کا مقصد جیومیٹری پائپ لائن فکسڈ لے آؤٹ کی رکاوٹوں پر قابو پانا ہے۔ یہ بھی دیکھیں پائپ لائن (کمپیوٹنگ) انسٹرکشن پائپ لائننگ ہارڈ ویئر ایکسلریشن ذرائع حوالہ جات بیرونی لنکس 3D رینڈرنگ گرافکس ہارڈ ویئر