হাল, ডোমেন এবং জ্যামিতি শেডারগুলি কীসের জন্য ব্যবহৃত হয়?


21

আমি আমার (প্রাক্তন) নিয়োগকর্তার জন্য এবং আমার নিজস্ব ইন্ডি গেমসের জন্য আমার নিজস্ব কাস্টম ইঞ্জিনগুলিতে 3 ডি গেম প্রোগ্রামিংয়ের ন্যায্য অংশটি করেছি।

প্রথমদিকে, আমি ডাইরেক্ট 3 ডি 9, এবং ডি 3 ডিএক্স 9 দিয়ে শুরু করেছি যা আমার পক্ষে বেশ কিছু করেছে এবং শেডারের দিক থেকে আমাকে মোটেও ভাবার দরকার হয়নি।

এর পরে, আমি আমার প্রথম ডিরেক্ট 3 ডি 9 শেডার লিখলাম, তবে বেশিরভাগ ক্ষেত্রে আমি যা কিছু করি তার জন্য একটি খুব সাধারণ শেডার ব্যবহার করি।

আমার গেম ইঞ্জিনের সাম্প্রতিকতম পুনরাবৃত্তিতে আমি ডাইরেক্ট 3 ডি 11 এ চলে এসেছি এবং এর সাথে আমি প্রচুর শেডার তৈরি করেছি। আমি জিপিইউতে স্কিনিং, জিপিইউ গণনা করা কণা, প্রচুর আলো এবং পোস্ট প্রসেসিং এফেক্টস সবই জিপিইউতে করেছি। সত্যিই দুর্দান্ত জিনিস।

এখনও অবধি আমি কেবল ভার্টেক্স এবং পিক্সেল / টুকরা শেডার ব্যবহার করেছি। যদিও এখনও আমি প্রচুর জিনিস এখনও করি নি, আমি বিশ্বাস করি যে আমার ভার্টেক্স এবং পিক্সেল / খণ্ডের শেডারগুলি কী করে এবং কীভাবে সমস্ত সম্পূর্ণ 3 ডি পাইপলাইনে ফিট করে into

আরও সাম্প্রতিক ঘটনাবলিগুলির সাথে তাল মিলিয়ে আমি আরও নতুন শেডার স্টেজগুলির সাথে খুব আগ্রহী হয়ে উঠছি। এটি হ'ল জ্যামিতি শেডার, এবং আরও নতুন, হাল এবং ডোমেন শেডার।

আমি এই স্তরগুলি কখনও ব্যবহার করি নি, তবে আমি যা জানি, জ্যামিতি শেডারটি যদি সক্ষম করা হয় তবে প্রতিটি রূপান্তরিত ভার্টেক্সের জন্য একবার (বা একবার আদিম?) এর জন্য ভার্টেক্স শ্যাডারের পরে চালিত হয় এবং আপনাকে শীর্ষবিন্দু (এবং আদিম?) বাতিল করতে দেয়? , এবং নতুন তৈরি করুন (যা আমি পাইপলাইনের শুরুতে ফিরে যাব বলে মনে করি?)।

আমার অনুমান যে জ্যামিতি শেডারের মূল ব্যবহারটি জিপিইউতে জিওমেট্রিটি প্রোগ্রামগতভাবে তৈরি করা হবে। একটি সাধারণ ব্যবহার হ'ল একক ভার্টেক্সের উপর ভিত্তি করে বিলবোর্ডের কোয়াড তৈরি করা, তবে ফ্র্যাকটালগুলি এবং অন্যান্য স্টাফ তৈরির পরিবর্তে আমি অন্যান্য অনেক সাধারণ পরিস্থিতি সত্যই কল্পনা করতে পারি না আপনি 100% প্রোগ্রামক্রমে তৈরি করতে পারেন।

হাল এবং ডোমেন শেডারগুলির ক্ষেত্রে, দেখে মনে হচ্ছে এগুলি টেসলেশন সম্পর্কিত (রুক্ষ পৃষ্ঠতলগুলি থেকে মসৃণ পৃষ্ঠগুলি তৈরি করা?), এবং অবশ্যই একসাথে ব্যবহার করা উচিত বা আদৌ নয়। "প্যাচ" শব্দটি এখানে প্রচলিত বলে মনে হয়।

ব্যবহারিক দিক থেকে, কেউ কী আমাকে এই ব্যাখ্যা করার জন্য যত্ন নেবে যে এই নতুন-ইশ শ্যাডার পর্যায়গুলি কী, তারা কীভাবে 3 ডি পাইপলাইনে ফিট করে এবং কোন ক্ষেত্রে আমি সেগুলি ব্যবহার করার কথা বিবেচনা করব?


আমি মনে করি আপনি ভুল উপায়ে জিজ্ঞাসা করছেন - "তারা কীসের জন্য ব্যবহৃত হয়" এর পরিবর্তে আপনার "জিজ্ঞাসা করা উচিত" তারা কী করবেন "- যদি আপনি প্রদত্ত সংস্থানগুলি (এবং তাদের নীচের দিকের ধারণাগুলি) বুঝতে পারেন তবে কেবল আকাশই আপনার সীমিত আসলে তাদের সাথে করতে সক্ষম।
আশ্চর্য 16

@ ওয়ানড্রা: এটি প্রায় একই প্রশ্ন, তবে তারা কী করে তার তাত্ত্বিক ব্যাখ্যা না দিয়ে আমি ব্যবহারিক ব্যবহারের নমুনাগুলিতে আরও বেশি মনোযোগ দিতে চাই। আসলে, এমএসডিএন সম্পর্কে একটি ওভারভিউ রয়েছে যা আমি বহুবার পড়েছি, তবে তারা আমার জন্য কী করতে পারে তা এখনও বুঝতে পারি না। আমি একজন বুদ্ধিমান সত্তা, এবং আমি এ এবং বি সংযুক্ত করতে পারি এবং সেখান থেকে সি, ডি, ই এবং এফ বের করতে পারি।
পান্ডা পাইজামা

আমি জানি, "ব্যবহারিক ব্যবহারের উদাহরণগুলি" আমার কাছে কিছুটা বিস্তৃত মনে হয়। যদিও আমি এটিতে ছুরিকাঘাত করেছি, তবে এই মন্তব্যের আগে এটি আপনার পক্ষে "তারা কী করে" তার প্রতি খুব বেশি মনোযোগ দিতে পারে।

@ জোশ: আপনি কি বাস্তব জগতে এই সমস্ত স্তর ব্যবহার করেছেন?
পান্ডা পাইজামা 17

1
যাদের ডাইরেক্টেক্স ব্যাকগ্রাউন্ড রয়েছে (আমার মতো) তাদের জন্য একটি এফওয়াইআই, এই দু'জনকে ওপেনজিএল এবং ভুলকানে "টেসেল্লেশন কন্ট্রোল শেডার" এবং "টেসেল্লেশন মূল্যায়ন শেডার" বলা হয়।
শাহবাজ

উত্তর:


13

হাল ও ডোমেনগুলি

হুল এবং ডোমেন শেডার পর্যায়গুলি জিপিইউর টেস্টেলেশন পাইপলাইনের একটি অংশ। এগুলি সাধারণত নিম্ন-বিশিষ্ট ইনপুট পৃষ্ঠ জ্যামিতির উপর ভিত্তি করে উচ্চ-বিশদ পৃষ্ঠের জ্যামিতি গণনা করতে ব্যবহৃত হয়, যা ত্রিভুজ বা কোয়াডস (এট সিটিরা) হিসাবে সংজ্ঞায়িত হয়। নিম্ন-বিশদ ইনপুট আদিমগুলিকে "প্যাচস" বলা হয় এবং এটি লক্ষণীয় গুরুত্বপূর্ণ যে তারা প্রকৃত জ্যামিতির প্রতিনিধিত্ব করতে পারে না যা অবশেষে উপস্থিত থাকবে (যদিও তারা পারত)। একটি পৃষ্ঠ ছাড়াও বেজিয়ার কার্ভের নিয়ন্ত্রণ পয়েন্টগুলির মতো আরও ভাবুন।

হুল শেডার একটি ইনপুট প্যাচ নেয় এবং একটি আউটপুট প্যাচ তৈরি করে (বা প্যাচগুলি; এটির ফলে প্যাচটির মহকুমা সাধারণত ঘটে থাকে)। প্যাচ সম্পর্কে কনস্ট্যান্ট মেটাডেটা হুল শেডার এবং পাইপলাইনের পরবর্তী পর্যায়ে প্রক্রিয়াজাতকরণের জন্য আউটপুট হিসাবে গণনা করা যেতে পারে।

হুল শেডারের আউটপুটটি একটি (স্থির ফাংশন) টেসলেসেশন পর্যায়ে চলে যা উপযুক্ত টাইপের টাইলযুক্ত, সাধারণ ডোমেনগুলি তৈরি করে (যেমন, কোয়াডস বা ত্রিভুজ)।

উপরোক্ত টেসেলেলেশনের ফলে প্রাপ্ত ডোমেনের যে কোনও নির্দিষ্ট বিন্দুর প্রকৃত শীর্ষস্থানীয় অবস্থান গণনা করার জন্য এই ডোমেনগুলির বিরুদ্ধে ডোমেন শেডার কার্যকর করা হয়। ডোমেন শেডার এইভাবে একটি শীর্ষস্থানীয় অবস্থানকে আউটপুট করে।

পাইপলাইনে ভারটেক্স শ্যাডার পর্যায়ের পরে টেসলেসেশন পর্ব ঘটে।

জ্যামিতি শেডারস

জ্যামিতির শেডারগুলি একরকম সরলিকৃত হাল / ডোমেন শেডারগুলির মতো। এগুলি কেবল ইনপুট শীর্ষকে নিয়ে যায় এবং আউটপুট শীর্ষকে উত্পন্ন করে। প্রদত্ত ইনপুট ভার্টেক্সের জন্য, অনেক আউটপুট শীর্ষকোষ তৈরি করা যায়, তাই এগুলি "জ্যামিতি তৈরি করতে" ব্যবহৃত হতে পারে।

জ্যামিতি শেডার পর্যায়টি ভার্টেক্স শ্যাডার এবং টেসলেসেশন পর্যায়ে পরে ঘটে।

ব্যবহারসমূহ

জ্যামিতি শেডার পাইপলাইনের রাস্টেরাইজেশন এবং টুকরা শেডিং পর্যায়ে সরাসরি খাওয়ানোর পরিবর্তে আউটপুট বাফারগুলিকে স্ট্রিম লিখতে পারে; এর কার্যকরভাবে আপনি অন্য একটি ভার্টেক্স শ্যাডার পর্যায়ে বা যে কোনও কিছুতে অতিরিক্ত কাজ সম্পাদনের জন্য পাইপলাইনের মাধ্যমে কোনও ভার্টেক্স / হাল / ডোমেন / জ্যামিতি শেডার পুনরাবৃত্তির সংমিশ্রণে উত্পাদিত জ্যামিতিকে পুনরায় চালাতে পারবেন means

কি তাই আমি সত্যিই যে ঠিকানায় প্রচেষ্টা করা হবে না আপনার জন্য এই ব্যবহার করতে পারেন, বরং একটি বিস্তৃত, কার্যকরীভাবে-সীমাহীন বিষয়। তবে কিছু প্রেরণাদায়ক কারণগুলি সেগুলি ব্যবহার করার বিষয়ে বিবেচনা করার জন্য ... এই ছায়াময় ধাপগুলির বড় বিষয় হ'ল তারা আপনাকে সমস্ত সময়ের জন্য মেমরি বা ব্যান্ডউইথ ব্যয় না করেই সম্ভাব্য যথেষ্ট পরিমাণে অতিরিক্ত বিশদ পেতে দেয়। এবং সিপিইউ থেকে জিপিইউতে প্রসেসিং সরানো।

টেরিন যেখানে আপনি এই প্রযুক্তিটির কিছুটা ব্যবহার করতে চাইতে পারেন তার একটি দুর্দান্ত উদাহরণ, কারণ আপনাকে সাধারণত এটি উভয়ই খুব কাছাকাছি (আপনার চরিত্রটি যেমন দাঁড়িয়ে আছে) এবং খুব দূরে (দূরত্বের পর্বতমালা) এবং সক্ষম হওয়া উভয়ই দেখতে হবে এই ছায়াময় স্তরগুলির মধ্য দিয়ে আপনি "উড়ানের উপরে" ভূখণ্ডের জ্যামিতিতে কোথায় এবং কতটা বিশদ রেখেছেন তা নিয়ন্ত্রণ করতে খুব শক্তিশালী। বিকল্পগুলি historতিহাসিকভাবেই এই অঞ্চলের জন্য সর্বদা স্থির গড় ব্যয় করে আসছে (সর্বনিম্ন-সাধারণ-ডিনোমিনিটর পদ্ধতির) বা জিপিইউ মেমরির বাইরে এবং বাইরে বিভিন্ন স্তরের বিশদটির জন্য জ্যামিতির কয়েকটি অংশকে ম্যানুয়ালি পেজিং করা হয়েছে, যা ক্লান্তিকর এবং ব্যয়বহুল।

একই ধরণের পরিস্থিতি যেখানে আপনার স্তরের মাত্রার বিস্তৃত বিস্তৃত বিস্তৃত বিবরণ থাকতে পারে আপনার কিছু জাল বা মডেলকে সমর্থন করতে হবে যা যুক্তিসঙ্গতভাবে বিভাজনীয় এছাড়াও এই ছায়াগুলির সাথে কিছু চালাক করার জন্য প্রার্থী হতে পারে। যদিও মহকুমা পৃষ্ঠতল শৈলী অপ্টিমাইজেশনে সবকিছুই ভালভাবে অনুবাদ হয় না । আপনি সম্ভবত এটি কাপড় এবং চুলের জন্যও ব্যবহার করতে পারেন।

আরও পড়ার জন্য, আমি যুক্তিসঙ্গতভাবে মনে রাখতে পারি বা এখানে প্রবেশ করতে পারি তার চেয়ে আরও বিস্তৃত বিশদ সহ:


4
মনে রাখবেন যে হাল এবং ডোমেন শেডারগুলির জন্য ডাইরেক্ট 3 ডি বৈশিষ্ট্য স্তর 11.0 বা তার পরে হার্ডওয়্যার প্রয়োজন হয় এবং জ্যামিতি শেডারগুলির জন্য ডাইরেক্ট 3 ডি বৈশিষ্ট্য স্তর 10.0 বা তার পরে হার্ডওয়্যার প্রয়োজন। এছাড়াও, বেশিরভাগ ভিডিও কার্ড ডিজাইন জ্যামিতি শেডার স্টেজটি কোনও ডেডিকেটেড হার্ডওয়ারকে খুব সামান্য দেয়, তাই অনুশীলনে তাদের উপযোগটি তাদের ধারণা হিসাবে কল্পনা করা হয়েছিল তুলনায় অনেক কম।
চক ওয়ালবর্ন

@ চকওয়ালবার্ন: আমি আলাদাভাবে উত্তর চাইলে আমি আরও বেশি কিছু শুনতে চাই
পান্ডা পাজামা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.