জটিল থ্রি দৃশ্যে আলফা মিশ্রণটি কীভাবে যথাযথভাবে প্রয়োগ করা যায়?


11

আমি জানি এই প্রশ্নের উত্তর দিতে কিছুটা সহজ শোনায় তবে এটি আমাকে পাগল করছে। অনেকগুলি সম্ভাব্য পরিস্থিতি রয়েছে যেগুলি একটি ভাল আলফা মিশ্রণ প্রক্রিয়াটি পরিচালনা করা উচিত এবং প্রতিটি অ্যালগরিদমের জন্য আমি ভাবতে পারি যে এখানে কিছু অনুপস্থিত রয়েছে।

এগুলি এখনও পর্যন্ত আমি এই পদ্ধতিগুলি করেছি:

  • আমি প্রথমে যদিও গভীরতার সাথে বস্তু বাছাইয়ের বিষয়ে, এটি কেবলমাত্র ব্যর্থ হয় কারণ অবজেক্টগুলি সাধারণ আকার নয়, তাদের বক্ররেখা থাকতে পারে এবং একে অপরের ভিতরে লুপ হতে পারে। সুতরাং আমি সবসময় বলতে পারি না কোনটি ক্যামেরার নিকটে রয়েছে।

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

  • পরবর্তী জিনিসটি গভীরতা বাফারটি ব্যবহার করছিল, কমপক্ষে আমাদের গভীরতার বাফার হওয়ার মূল কারণটি আমি উল্লেখ করেছি বাছাইয়ের ক্ষেত্রে সমস্যাগুলি রয়েছে তবে এখন আমরা অন্য একটি সমস্যা পেয়েছি। যেহেতু বস্তু স্বচ্ছ হতে পারে, একটি একক পিক্সেল সেখানে হতে পারে আরো একাধিক বস্তু দৃশ্যমান। সুতরাং আমি কোন বস্তুর জন্য পিক্সেল গভীরতা সঞ্চয় করব?

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

  • পরিশেষে আমি যে কাজটি করতে সক্ষম হয়েছি তা কেবলমাত্র সমস্ত বস্তুকে বিভিন্ন রেন্ডার লক্ষ্যগুলিতে রেন্ডার করা এবং তারপরে সেই স্তরগুলি বাছাই করা এবং চূড়ান্ত আউটপুট প্রদর্শন করা। তবে এবার আমি জানি না কীভাবে আমি এই অ্যালগোরিদমটি প্রয়োগ করতে পারি।

উত্তর:


11

সংক্ষিপ্ত উত্তর

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

দীর্ঘ উত্তর

এটি একটি কঠিন প্রশ্ন। বেশিরভাগ বই আমি পড়তে পেরেছি এবং এটিকে এখানে রেখেছি:

সমস্ত অস্বচ্ছ বস্তু রেন্ডার করে শুরু করুন এবং তারপরে স্বচ্ছ বস্তুগুলিকে উপরে-সামনের ক্রমের সাথে মিশ্রিত করুন।

চেয়ে সহজ যদিও সম্পন্ন হলে, কারণ তাদের centroids দ্বারা বাছাই বস্তুর সুস্পষ্ট পদ্ধতির হয়ে বলেছিল না সঠিক সাজানোর ক্রম গ্যারান্টি।

চিত্রশিল্পীর অ্যালগরিদম কেন সাধারণ ক্ষেত্রে কাজ করে না এবং ঠিক ততই একই সমস্যার কারণ এটি একটি গভীর সমস্যা

এই কথাটি বলে, আমার একটি বইতে কয়েকটি সমাধানের উল্লেখ রয়েছে:

  • গভীরতা পিলিং - একটি মাল্টি-পাস সমাধান যা কেবলমাত্র নিকটতমটি নয়, আমাদের নবম নিকটতম টুকরোগুলি দিয়ে গভীরতার বাফার সীমাবদ্ধতা অতিক্রম করে। সর্বাধিক সুবিধা হ'ল আপনি যে কোনও ক্রমে স্বচ্ছ বস্তুগুলি সরবরাহ করতে পারেন এবং বাছাই করার দরকার নেই। একাধিক পাসের কারণে এটি ব্যয়বহুল হতে পারে তবেআমি উপরেযে লিঙ্কটি দিয়েছি তা কার্যকারিতা উন্নত বলে মনে হচ্ছে।

  • স্টেনসিল রুটেড কে-বাফার - প্রতি জ্যামিতি পাসে প্রতি পিক্সেল খণ্ডের বহুগুণ স্তরগুলি ক্যাপচার করতে স্টেনসিল রাউটিং ব্যবহার করুন। প্রধান অসুবিধাটি হ'ল টুকরোগুলি পোস্ট-প্রসেসিং পাসে বাছাই করা দরকার।

এটি সমস্যার একটি হার্ডওয়্যার সমাধানেরও উল্লেখ করেছে, তবে আমি মনে করি না এটি আসলে উপলভ্য:

  • এফ-বাফার - মাল্টি-পাস রেন্ডারিংয়ের জন্য একটি পুনর্নির্মাণ-আদেশের ফিফো বাফার। তবুও একটি ভাল পঠন এবং প্রবর্তনটি স্বচ্ছতা সাজানোর আদেশ সমস্যা এবং বর্তমান সমাধানগুলি সম্পর্কেও কিছুটা কথা বলে।

অন্যান্য কাজের ক্ষেত্রগুলি যা নিখুঁত ফলাফল সরবরাহ করে না তবে কিছুই না থেকে ভাল:

  • সমস্ত অস্বচ্ছ বস্তু রেন্ডার করার পরে, স্বচ্ছ বস্তুর জন্য জেড-বাফার পরীক্ষা করা চালিয়ে যান তবে জেড-বাফার লেখা অক্ষম করুন । আপনি ভুল বাছাই থেকে কিছু শৈলী পেতে পারেন তবে কমপক্ষে সমস্ত স্বচ্ছ বস্তু দৃশ্যমান হবে।

এবং উপরে এফ-বাফার শ্বেতপত্রকে উদ্ধৃত করে:

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


11

সঠিক উত্তরটি হল # 1: আপনার সমস্ত জিনিস গভীরতার সাথে বাছাই করুন এবং তাদের রেন্ডার করুন (স্পষ্টতই গভীরতার লেখা বন্ধ করুন, তবে পরীক্ষা নিচ্ছেন না)। একটি "জিনিস" কি?

প্রতিটি "জিনিস" অবশ্যই উত্তল বস্তু হতে হবে; এটি স্ব-ওভারল্যাপ করতে পারে না। যদি আপনার অবতল থাকে এমন কোনও বস্তু থাকে তবে এটি অবশ্যই উত্তল টুকরো টুকরো হয়ে যেতে হবে।

এই একটি স্বচ্ছ দৃশ্য রেন্ডারিং এর আদর্শ উপায়। এটি ইন্টারপেনেটেটিং কেসগুলি সমাধান করে? না। এটি কি এমন ক্ষেত্রে সমাধান করে যেখানে আপনার 3 টি অবজেক্ট রয়েছে যেখানে কোনও গভীরতার অর্ডার নির্ধারণ করা যায় না? না। এটি কি এমন ক্ষেত্রে সমাধান করে যেখানে আপনার একটি দীর্ঘ অবজেক্ট রয়েছে যা তার কেন্দ্রের গভীরতায় খুব ছোট একটি দিয়ে ওভারল্যাপ করে? না।

তবে এটি যথেষ্ট ভাল কাজ করে । গেমগুলি গভীরতার পিলিং ব্যবহার করে না। তারা স্টেনসিল রাউটেড কে-বাফার ব্যবহার করে না। তারা এফ-বাফার ব্যবহার করে না। কেন? কারণ এই জিনিসগুলি অবিশ্বাস্যভাবে ধীর।

আপনি স্ট্যান্ডার্ড পদ্ধতিতে শিল্পকর্মগুলি পেতে পারেন। তবে কমপক্ষে আপনার গেমটি যুক্তিসঙ্গত দ্রুত চলে।

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

আমি জানি না প্রযুক্তিটির একটি স্বতঃস্ফূর্ত নাম আছে কিনা তবে প্রাক GL4.2 এর জন্য একটি বাস্তবায়ন এখানে পাওয়া যাবে। একটি ডি 3 ডি 11 সংস্করণ এখানে পাওয়া যাবে (পাওয়ারপয়েন্ট, পিপিএসএক্স, লিব্রে সামঞ্জস্যপূর্ণ)।


এই উত্তর ভাল পয়েন্ট। আমি ব্যক্তিগতভাবে যথেষ্ট পরিমাণে স্থির হয়েছি (যা আমি আমার উত্তরে বর্ণনা করেছি, এটি একটি কার্যকার্য হিসাবে) কারণ আমি তালিকাভুক্ত বেশিরভাগ কৌশলগুলি সম্ভবত মূল্যবান হওয়ার চেয়ে বেশি সমস্যাযুক্ত। এছাড়াও, আকর্ষণীয় কৌশলটি শেষে, আমার মনে হয় না যে এটি রিয়েল-টাইম রেন্ডারিংয়ের তালিকাভুক্ত ছিল যার উপরে আমি আমার উত্তরটি গবেষণা করেছি। DX11 স্তরের বৈশিষ্ট্যগুলি এলে আমি একটি সম্পূর্ণ নুব।
ডেভিড গওভিয়া

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