Shading language
একটি শেডিং ভাষা হল একটি গ্রাফিক্স প্রোগ্রামিং ভাষা যা প্রোগ্রামিং শেডার প্রভাবের সাথে খাপ খাইয়ে নেয়। ছায়াছবি ভাষাগুলি সাধারণত "ভেক্টর", "ম্যাট্রিক্স", "রঙ" এবং "স্বাভাবিক" এর মতো বিশেষ তথ্য প্রকার নিয়ে গঠিত। অফলাইন রেন্ডারিংয়ে ব্যবহৃত অফলাইন রেন্ডারিং শেডিং ভাষাগুলি প্রাকৃতিক ভাষার কাছাকাছি থাকে, যাতে প্রোগ্রামিংয়ের কোনও বিশেষ জ্ঞানের প্রয়োজন হয় না। অফলাইন রেন্ডারিংয়ের লক্ষ্য হল রিয়েল-টাইম রেন্ডারিংয়ের চেয়ে বেশি সময় এবং গণনার ব্যয়ে সর্বাধিক মানের ছবি তৈরি করা। রেন্ডারম্যান শেডিং ল্যাঙ্গুয়েজ রেন্ডারম্যান শেডিং ল্যাঙ্গুয়েজ (আরএসএল বা এসএল, সংক্ষেপে), রেন্ডারম্যান ইন্টারফেস স্পেসিফিকেশনে সংজ্ঞায়িত, উৎপাদন-মানের রেন্ডারিংয়ের জন্য একটি সাধারণ শেডিং ভাষা। এটি এখন পর্যন্ত বাস্তবায়িত প্রথম ছায়াছবি ভাষাগুলির মধ্যে একটি। এটি ছয়টি প্রধান শেডার প্রকারকে সংজ্ঞায়িত করেঃ আলোর উৎস শেডার একটি আলোর উৎসের একটি বিন্দু থেকে একটি লক্ষ্য পৃষ্ঠের একটি বিন্দুতে নির্গত আলোর রঙ গণনা করে। সারফেস শেডারগুলি আগত আলো এবং বস্তুর ভৌত বৈশিষ্ট্যের উপর ভিত্তি করে কোনও বস্তুর পৃষ্ঠের বিন্দুগুলির রঙ এবং অবস্থানের মডেল তৈরি করে। স্থানচ্যুতি শেডারগুলি রঙ থেকে স্বাধীনভাবে পৃষ্ঠের জ্যামিতিকে পরিচালনা করে। বিকৃতি শেডারগুলি পুরো স্থানটিকে রূপান্তরিত করে। শুধুমাত্র একটি রেন্ডারম্যান বাস্তবায়ন, সিটেক্স গ্রাফিক্সের এআইআর রেন্ডারার, এই শেডার প্রকারটি প্রয়োগ করেছে, যা স্থানটিতে প্রয়োগ করা শুধুমাত্র একটি রৈখিক রূপান্তরকে সমর্থন করে। ভলিউম শেডারগুলি একটি ভলিউমের মধ্য দিয়ে যাওয়ার সময় আলোর রঙকে পরিচালনা করে। এগুলি কুয়াশার মতো প্রভাব তৈরি করে। ইমেজার শেডারগুলি চূড়ান্ত পিক্সেল মানগুলিতে একটি রঙের রূপান্তর বর্ণনা করে। এটি একটি ইমেজ ফিল্টারের মতো, তবে ইমেজার শেডার কোয়ান্টাইজেশনের আগে ডেটাতে কাজ করে। এই ধরনের তথ্যের একটি সাধারণ আউটপুট ডিভাইসে প্রদর্শিত হওয়ার চেয়ে বেশি গতিশীল পরিসীমা এবং রঙ রেজোলিউশন রয়েছে। হুডিনি ভিইএক্স ছায়াছবি ভাষা হুডিনি ভিইএক্স (ভেক্টর এক্সপ্রেশন) ছায়াছবি ভাষা (প্রায়শই সংক্ষেপে "ভিইএক্স") রেন্ডারম্যানের পরে ঘনিষ্ঠভাবে মডেল করা হয়। যাইহোক, একটি সম্পূর্ণ 3D প্যাকেজে এর সংহতকরণের অর্থ হল যে শেডার লেখক শেডারের ভিতরে তথ্য অ্যাক্সেস করতে পারেন, এমন একটি বৈশিষ্ট্য যা সাধারণত রেন্ডারিং প্রসঙ্গে উপলব্ধ হয় না। আরএসএল এবং ভিইএক্স-এর মধ্যে ভাষার পার্থক্য মূলত শব্দার্থগত, পাশাপাশি বেশ কয়েকটি ছায়াপথের নামের নাম সম্পর্কিত পার্থক্য রয়েছে। হুদিনীর ভিইএক্স-এর মতো গেলাটো শেডিং ল্যাঙ্গুয়েজ গেলাটো-র শেডিং ভাষাটি রেন্ডারম্যানের অনুকরণে তৈরি করা হয়েছে। গেলাটো শেডিং ল্যাঙ্গুয়েজ এবং আরএসএল-এর মধ্যে পার্থক্যগুলি মূলত বাক্য গঠনমূলক-গেলাটো ফাংশনের সংজ্ঞায় আর্গুমেন্টগুলি পৃথক করতে কমার পরিবর্তে অর্ধ-কোলন ব্যবহার করে এবং কয়েকটি শেডোপের বিভিন্ন নাম এবং পরামিতি রয়েছে। ওপেন শেডিং ল্যাঙ্গুয়েজ ওপেন শেডিং ল্যাঙ্গুয়েজ (ওএসএল) সনি পিকচার্স ইমেজওয়ার্কস দ্বারা তার আর্নল্ড রেন্ডারারে ব্যবহারের জন্য তৈরি করা হয়েছিল। এটি ব্লেন্ডারের সাইকেল রেন্ডার ইঞ্জিন দ্বারাও ব্যবহৃত হয়। ওএসএল-এর পৃষ্ঠ এবং ভলিউম শেডারগুলি সংজ্ঞায়িত করে যে কীভাবে পৃষ্ঠতল বা ভলিউমগুলি আলোকে এমনভাবে ছড়িয়ে দেয় যা গুরুত্বের নমুনার জন্য অনুমতি দেয়; এইভাবে, এটি শারীরিক-ভিত্তিক রেন্ডারারদের জন্য উপযুক্ত যা রশ্মি অনুধাবন এবং বিশ্বব্যাপী আলোকসজ্জাকে সমর্থন করে। রিয়েল-টাইম রেন্ডারিংয়ের জন্য রিয়েল-টাইম রেন্ডারিং শেডিং ভাষাগুলি এখন ব্যাপক। এগুলি পূর্ববর্তী দৃষ্টান্তগুলির তুলনায় উচ্চতর হার্ডওয়্যার বিমূর্ততা এবং আরও নমনীয় প্রোগ্রামিং মডেল উভয়ই সরবরাহ করে, যা হার্ডকোডেড রূপান্তর এবং ছায়াছবি সমীকরণ। তারা কম ওভারহেড সহ আরও নিয়ন্ত্রণ এবং সমৃদ্ধ বিষয়বস্তু সরবরাহ করে। যে শেডারগুলি সরাসরি জিপিইউ-তে কার্যকর করার জন্য ডিজাইন করা হয়েছে সেগুলি তাদের স্ট্রিম প্রোগ্রামিং মডেলের কারণে উচ্চ-থ্রুপুট সাধারণ প্রক্রিয়াকরণের জন্য দরকারী হয়ে ওঠে; এটি অনুরূপ হার্ডওয়্যারে চলমান কম্পিউট শেডারগুলির বিকাশের দিকে পরিচালিত করে (আরও দেখুনঃ জিপিজিপিইউ)। ঐতিহাসিকভাবে, এই ধরনের কয়েকটি ভাষা বাজারে আধিপত্য বিস্তার করেছিল; সেগুলি নীচে বর্ণনা করা হয়েছে। ওপেনজিএল আর্কিটেকচার রিভিউ বোর্ড 2002 সালে প্রোগ্রামেবল গ্রাফিক্স প্রসেসরের জন্য একটি মানক নিম্ন-স্তরের নির্দেশ সেট হিসাবে এআরবি অ্যাসেম্বলি ভাষা প্রতিষ্ঠা করে। উচ্চ-স্তরের ওপেনজিএল শেডিং ভাষাগুলি প্রায়শই লোডিং এবং কার্যকর করার জন্য এআরবি সমাবেশে সংকলন করে। উচ্চ-স্তরের ছায়াছবি ভাষার বিপরীতে, এআরবি সমাবেশ নিয়ন্ত্রণ প্রবাহ বা শাখা সমর্থন করে না। তবে, যখন ক্রস-জিপিইউ বহনযোগ্যতার প্রয়োজন হয় তখন এটি ব্যবহার করা অব্যাহত থাকে। ওপেনজিএল ছায়াছবি ভাষা জিএলএসএল বা গ্লসল্যাঙ্গ নামেও পরিচিত, এই প্রমিত ছায়াছবি ভাষাটি ওপেনজিএল-এর সাথে ব্যবহার করা হয়। শর্তসাপেক্ষ লুপ এবং শাখাগুলির অনুমতি দিয়ে ভাষাটি একক নির্দেশের সেটের মধ্যে শীর্ষ এবং খণ্ড প্রক্রিয়াকরণকে একত্রিত করে। জি. এল. এস. এল-এর আগে এ. আর. বি অ্যাসেম্বলি ভাষা ছিল। সি. জি প্রোগ্রামিং ভাষা এন. ভি. আই. ডি. আই. এ দ্বারা বিকশিত সি. জি ভাষা সহজ এবং দক্ষ উৎপাদন পাইপলাইন সংহতকরণের জন্য ডিজাইন করা হয়েছিল। এটিতে এপিআই-এর স্বাধীনতা রয়েছে এবং সম্পদ ব্যবস্থাপনার উন্নতির জন্য অনেক বিনামূল্যে সরঞ্জাম রয়েছে। 2012 সালে সিজির বিকাশ বন্ধ করে দেওয়া হয় এবং ভাষাটি এখন অবহেলিত। ডাইরেক্টএক্স শেডার অ্যাসেম্বলি ল্যাঙ্গুয়েজ শেডার মডেল 1.0/1.1,2 এবং 3-এ ভার্টেক্স এবং পিক্সেল শেডারের জন্য ডাইরেক্ট3ডি 8 এবং 9-এ শেডার অ্যাসেম্বলি ল্যাঙ্গুয়েজ হল প্রধান প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটি মধ্যবর্তী শেডার বাইটকোডের একটি সরাসরি উপস্থাপনা যা কার্যকর করার জন্য গ্রাফিক্স ড্রাইভারের কাছে প্রেরণ করা হয়। শেডার অ্যাসেম্বলি ভাষা সরাসরি ইউনিফাইড শেডার মডেল 4.0,4.1,5 এবং 5.1 প্রোগ্রাম করার জন্য ব্যবহার করা যাবে না, যদিও এটি ডিবাগের উদ্দেশ্যে মধ্যবর্তী বাইটকোডের প্রতিনিধিত্ব হিসাবে তার কার্যকারিতা বজায় রাখে। ডাইরেক্টএক্স হাই-লেভেল শেডার ল্যাঙ্গুয়েজ হাই-লেভেল শেডিং ল্যাঙ্গুয়েজ (এইচএলএসএল) হল ডাইরেক্টএক্স 9 এবং উচ্চতর এবং এক্সবক্স গেম কনসোলের জন্য একটি সি-স্টাইল শেডার ভাষা। এটি এনভিডিয়ার সিজির সাথে সম্পর্কিত, তবে শুধুমাত্র ডাইরেক্টএক্স এবং এক্সবক্স দ্বারা সমর্থিত। এইচএলএসএল প্রোগ্রামগুলি ডাইরেক্টএক্স শেডার অ্যাসেম্বলি ভাষার সমতুল্য বাইটকোডে সংকলিত হয়। এইচ. এল. এস. এল-কে ডাইরেক্ট3ডি 9-এ শেডার অ্যাসেম্বলি ভাষার বিকল্প হিসাবে চালু করা হয়েছিল, তবে ডাইরেক্ট3ডি 10 এবং তার বেশি ক্ষেত্রে এটি একটি প্রয়োজনীয়তা হয়ে ওঠে, যেখানে শেডার অ্যাসেম্বলি ভাষা অবহেলিত। অ্যাডোবি পিক্সেল বেন্ডার এবং অ্যাডোবি গ্রাফিক্স অ্যাসেম্বলি ল্যাঙ্গুয়েজ অ্যাডোবি সিস্টেমস অ্যাডোবি ফ্ল্যাশ 10 এপিআই-এর অংশ হিসাবে পিক্সেল বেন্ডার যুক্ত করেছে। পিক্সেল বেন্ডার শুধুমাত্র পিক্সেল প্রক্রিয়া করতে পারে কিন্তু থ্রিডি-ভার্টেক্স ডেটা নয়। ফ্ল্যাশ 11 স্টেজ 3ডি নামে একটি সম্পূর্ণ নতুন 3ডি এপিআই চালু করেছে, যা অ্যাডোব গ্রাফিক্স অ্যাসেম্বলি ল্যাঙ্গুয়েজ (এজিএএল) নামে নিজস্ব ছায়াছবি ভাষা ব্যবহার করে, যা সম্পূর্ণ 3ডি ত্বরণ সমর্থন প্রদান করে। পিক্সেল বেন্ডারের জন্য জিপিইউ ত্বরণ ফ্ল্যাশ 11.8-এ সরানো হয়েছিল। এজিএএল একটি নিম্ন-স্তরের কিন্তু প্ল্যাটফর্ম-স্বাধীন ছায়াছবি ভাষা, যা সংকলিত করা যেতে পারে, উদাহরণস্বরূপ, বা জিএলএসএল। প্লেস্টেশন শেডার ল্যাঙ্গুয়েজ সনি ঘোষণা করেছে যে প্লেস্টেশন শেডার ল্যাঙ্গুয়েজ (পি. এস. এস. এল) সি. জি/এইচ. এল. এস. এল-এর মতো একটি ছায়াছবি ভাষা, তবে প্লেস্টেশন 4-এর জন্য নির্দিষ্ট। পি. এস. এস. এল পিসিতে এইচ. এল. এস. এল শেডারের সাথে মূলত সামঞ্জস্যপূর্ণ বলে মনে করা হয়, তবে পি. এস. 4 প্ল্যাটফর্মের জন্য অতিরিক্ত বৈশিষ্ট্য সহ। মেটাল শেডিং ল্যাঙ্গুয়েজ অ্যাপল মেটাল নামে একটি নিম্ন-স্তরের গ্রাফিক্স এপিআই তৈরি করেছে, যা 2012 সাল থেকে তৈরি বেশিরভাগ ম্যাকে, 5এস থেকে আইফোন এবং আইপ্যাড এয়ার থেকে আইপ্যাডগুলিতে চলে। ধাতুর নিজস্ব ছায়াছবি রয়েছে যাকে মেটাল শেডিং ল্যাঙ্গুয়েজ (এম. এস. এল) বলা হয়, যা সি + + 14-এর উপর ভিত্তি করে এবং ক্ল্যাং এবং এল. এল. ভি. এম ব্যবহার করে প্রয়োগ করা হয়। এমএসএল ভার্টেক্স, ফ্র্যাগমেন্ট এবং কম্পিউট প্রসেসিংকে একত্রিত করে। ওয়েবজিপিইউ শেডিং ল্যাঙ্গুয়েজ ওয়েবজিপিইউ শেডিং ল্যাঙ্গুয়েজ (ডব্লিউজিএসএল) হল ওয়েবজিপিইউর শেডার ভাষা। অর্থাৎ, ওয়েবজিপিইউ এপিআই ব্যবহার করে একটি অ্যাপ্লিকেশন ডাব্লুজিএসএল ব্যবহার করে প্রোগ্রামগুলি প্রকাশ করতে, যা শেডার নামে পরিচিত, যা জিপিইউতে চলে। অনুবাদ শেডারগুলিকে এক ছায়াছবি থেকে অন্য ছায়াছবিতে পোর্ট করতে, কয়েকটি পদ্ধতি ব্যবহার করা হয়ঃ একটি সাধারণ ইন্টারফেস সংজ্ঞায়িত করুন। উদাহরণস্বরূপ, সিজি/এইচএলএসএল, জিএলএসএল এবং এমএসএল সকলেই সি প্রিপ্রসেসর ম্যাক্রো প্রয়োগ করে, তাই সমস্ত বিভিন্ন ক্রিয়াকলাপকে একটি সাধারণ ইন্টারফেসে মোড়ানো সম্ভব। ভালভের সোর্স 2 এবং এনভিডিয়ার এফএক্সএএ 3.11 এটি করে। একটি ভাষা থেকে অন্য ভাষায় অনুবাদ করুন। উদাহরণস্বরূপ, ডাইরেক্টএক্স বাইটকোডকে এইচএলএসএলসিসির মাধ্যমে আংশিকভাবে জিএলএসএল-এ রূপান্তরিত করা যেতে পারে এবং জিএলএসএল-কে এইচএলএসএল-এ রূপান্তর করার জন্য বেশ কয়েকটি সরঞ্জাম রয়েছে যেমন এঙ্গেল এবং এইচএলএসএল2জিএলএসএল। একটি মধ্যবর্তী ভাষার সংজ্ঞা দিন। এসপিআইআর-ভি আংশিকভাবে এই উদ্দেশ্যে তৈরি করা হয়েছে। এটি এইচ. এল. এস. এল বা জি. এল. এস. এল থেকে তৈরি করা যেতে পারে এবং এইচ. এল. এস. এল, জি. এল. এস. এল বা এম. এস. এল-এ বিভক্ত করা যেতে পারে। রেফারেন্স নোট ওপেনজিএল-এর জন্য পূর্ববর্তী ভার্টেক্স শেডিং ভাষাগুলির (কোনও নির্দিষ্ট ক্রমে নয়) মধ্যে রয়েছে ইএক্সটি _ ভার্টেক্স _ শেডার, এনভি _ ভার্টেক্স _ প্রোগ্রাম, পূর্বোক্ত এআরবি _ ভার্টেক্স _ প্রোগ্রাম, এনভি _ ভার্টেক্স _ প্রোগ্রাম 2 এবং এনভি _ ভার্টেক্স _ প্রোগ্রাম 3। ফ্রেগমেন্ট শেডিংয়ের জন্য এনভিপার্স সম্ভবত প্রথম শেডিং ভাষা যা এনভি _ রেজিস্টার _ কম্বাইনার, পিক্সেল ম্যাথের জন্য এনভি _ রেজিস্টার _ কম্বাইনার 2 এবং টেক্সচার লুকআপের জন্য এনভি _ টেক্সচার _ শেডার, এনভি _ টেক্সচার _ শেডার 2 এবং এনভি _ টেক্সচার _ শেডার 3-এর উপর ভিত্তি করে উচ্চ-স্তরের বিমূর্ত বৈশিষ্ট্যযুক্ত। এটিআই _ ফ্র্যাগমেন্ট _ শেডার এমনকি একটি "স্ট্রিং ভিত্তিক" পার্সিং সুবিধা প্রদান করেনি (যদিও এটি পরে এটিআই _ টেক্সট _ ফ্র্যাগমেন্ট _ শেডার দ্বারা যোগ করা হয়েছে)। এআরবি _ ফ্র্যাগমেন্ট _ প্রোগ্রাম, খুব সফল হয়েছে। এনভি _ ফ্র্যাগমেন্ট _ প্রোগ্রাম এবং এনভি _ ফ্র্যাগমেন্ট _ প্রোগ্রাম 2 আসলে একই রকম যদিও পরেরটি অন্যদের ক্ষেত্রে অনেক বেশি উন্নত কার্যকারিতা সরবরাহ করে। এনভিডিয়া হোম পেজ থেকে এফএক্স সুরকার, রুডি কর্টেস এবং সত্য রাঘবাচারীঃ দ্য রেন্ডারম্যান শেডিং ল্যাঙ্গুয়েজ গাইড, কোর্স টেকনোলজি পিটিআর, 1 সংস্করণ (ডিসেম্বর 27,2007), প্রোগ্রামিং ভাষার শ্রেণিবিন্যাস