একাধিক অবজেক্ট রেন্ডার করতে আমার কতগুলি ওপেনজিএল প্রোগ্রাম ব্যবহার করা উচিত?


10

আমার দৃশ্যে এটিতে একাধিক অবজেক্ট রয়েছে। (আসুন আমরা 3 কিউব, 1 সিলিন্ডার, 8 গোলক বলি)) আমি ধরে নিই আমার প্রত্যেকটির জন্য একটি ভার্টেক্স শেডার তৈরি করা উচিত। আমার কয়টি প্রোগ্রাম করা উচিত?

বিকল্প:

  • প্রতি বস্তুতে একটি প্রোগ্রাম
  • সমস্ত কিউবগুলির জন্য একটি প্রোগ্রাম এবং সমস্ত ক্ষেত্রের জন্য আরেকটি প্রোগ্রাম (ধরে নিলে তারা একই শেডার ব্যবহার করে)
  • প্রতিটি কিছুর জন্য একটি বড় প্রোগ্রাম

সঠিক পন্থাটি কী?


1
"আমি ধরে নিলাম প্রত্যেকের জন্য আমার একটি ভার্টেক্স শেডার তৈরি করা উচিত।" আপনি কেন এটা ধরে নিচ্ছেন? একটি ভার্টেক্স শ্যাডার আপনার মডেল এবং ম্যাট্রিক্স দেখার অনুসারে শীর্ষকে রূপান্তরিত করবে এবং আপনি প্রায় সবসময় এটি সব কিছুর জন্য একই হতে চান।
usm

উত্তর:


8

আপনার শেডার প্রোগ্রামগুলিকে রাজ্যের অনুরূপ অংশ হিসাবে টেক্সচার হিসাবে বিবেচনা করা উচিত। রাষ্ট্র পরিবর্তন করা ব্যয়বহুল, সুতরাং আপনি টেক্সচারের পরিবর্তনগুলি এড়াতে একাধিক টেক্সচারের সাথে একত্রিত হয়ে পালাতে সক্ষম হতে পারেন; একইটি শেডারগুলিতে প্রযোজ্য - আপনি রাষ্ট্র পরিবর্তনগুলি এড়াতে বেশ কয়েকটি শেডারকে একত্রিত করতে সক্ষম হতে পারেন।

একইভাবে টেক্সচারের সংমিশ্রণের জন্য শেডারগুলির সংমিশ্রণটি একটি ওভারহেডের সাথে আসে - আপনি যদি 4096x4096 টেক্সচারের মধ্যে কেবল 16x16 পিক্সেল অঞ্চল রেন্ডার করেন তবে আপনি হার্ডওয়্যারটি দক্ষতার সাথে ব্যবহার করছেন না। একইভাবে, আপনি যে জিনিসটি রেন্ডার করেন তা যদি আপনার শেডারে কোডের কেবল 10% ব্যবহার করে তবে এটি সম্ভব (এবং এমনকি সম্ভবত) যে গ্রাফিক্স কার্ড অকারণে প্রচুর স্টাফ গণনা করছে।

সংক্ষেপে, "নির্ভরশীল"।


4
এছাড়াও, অনেক ক্ষেত্রে আপনি কেবল একটি শেডার দিয়ে পালাতে পারেন। পার্থক্যগুলি কেবলমাত্র আপনি ইউনিফর্মগুলিতে
শ্যাডারে

হ্যাঁ, উদাহরণস্বরূপ আপনার কাছে একটি "স্কলে" শেডার থাকতে পারে যা টুকরো টুকরো টুকরো করে যা স্কেল দেখায় এবং এমনভাবে কাজ করে (বেশিরভাগ শেডাররা ...) যা আপনি সমস্ত 3 কিউব, 1 সিলিন্ডার এবং 8 গোলক ব্যবহার করে রেন্ডার করতে পারেন that একটি শেডার (অবশ্যই জ্যামিতির আদিমতার সাথে)। এখানে ইউনিফর্মগুলির একটি যুক্তিসঙ্গত সেট রঙের সংজ্ঞা দেয় এমন ভেক্টর মান হতে পারে এবং কয়েকটি স্কেলার বা ভিজ্যুয়াল প্রভাবটি কীভাবে "স্কালি" বা "চকচকে" হবে তা প্রভাবিত করে এমন কিছু হতে পারে। তারপরে আপনার একটি শেডার রয়েছে এবং আপনি পৃথক জ্যামিতির অঙ্কনের মধ্যে ইউনিফর্ম পরিবর্তন করে শেডার কীভাবে টুকরো টুকরো করে তা পরিবর্তন করেন।
স্টিভেন লু

5

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

শেডার পরিচালনার বিষয়ে বেশ কয়েকটি মতামত রয়েছে এবং এটির কাছে যাওয়ার কোনও "অনুকূল" উপায় নেই। এমনকি আমি কিছু শেডার বাস্তবায়নও দেখেছি যেখানে প্রতিটি শেডারটি ফ্লাইট ভিত্তিতে অফ প্যারামিটারগুলি তৈরি করে (যেমন অবাস্তব ইঞ্জিনে )।

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

এই জাতীয় পদ্ধতির উদ্দেশ্য বিষয়গুলি সহজ রাখা। মাত্র। রাখুন। এটা তোলে। সহজ।


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