কভারেজ - অ্যালগরিদমের ত্রুটি - এর ব্যবহার থেকে কীভাবে মুক্তি পাবেন?


10

ভূমিকা

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

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

এখানে চিত্র বর্ণনা লিখুন

চিত্র 1 : সম্পূর্ণরূপে অ-প্রতিনিধি নমুনা, শীর্ষ সারিটিতে ত্রুটিযুক্ত ত্রিভুজগুলি তৈরি করে এমন একটি আকারের রেন্ডারিংয়ের। এসভিজি উত্স

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

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

প্রশ্ন

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

কীভাবে নিশ্চিত করা যায় যে এই ত্রুটিটি আরও প্রচার বন্ধ করে দিয়েছে?


সংযোজন (তবে আমি এটি সম্পর্কে জিজ্ঞাসা করছি না)

* স্পষ্টতই আমার দাবি যে ত্রুটি ছাড়াই সুপার স্যাম্পলিং কাজ করে অসাধারণ এবং এর জন্য অসাধারণ প্রমাণ প্রয়োজন। ঠিক আছে, সুতরাং সুপার স্যাম্পলিংয়ের কাজের মূল চাবিকাঠিটি হ'ল সুপার স্যাম্পলিং কভারেজ প্রসেসিং করে না। সংক্ষেপে সুপার স্যাম্পলার প্রতিটি নমুনাকে পয়েন্ট নমুনা হিসাবে বিবেচনা করে। যেহেতু বিন্দু নমুনা অন্তর্নিহিত অঞ্চলটির কোনও অনুমান করে না যেখানে এটি ঘটে না যেখানে এটি আলফা তুলনা তৈরি করে না।

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

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

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


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

উত্তর:


6

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

এবং আমি অনুমান করি যে কারণটি আপনি সন্ধান করছেন: আপনি যদি এমন একটি অ্যালগরিদম চান যা খুব বেশি স্মৃতি এবং চলমান সময়ের প্রয়োজন হয় না, নিষ্পাপ "স্বচ্ছতা" পদ্ধতির চেয়ে জিনিসগুলি আরও জটিল হয়ে উঠছে।


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

@ জুজা: আপনি কীভাবে "রেস্টারাইজেশন সেটআপ সংরক্ষণ করে" বোঝাতে চান তার রূপরেখা তৈরি করতে পারেন, বা এমন কোনও লিঙ্ক দিতে পারেন যেখানে পদ্ধতির এমনভাবে ব্যাখ্যা করা হয়েছে যে কোনও একটি> 20 পৃষ্ঠার বৈজ্ঞানিক কাগজের মাধ্যমে নিজেকে খনন করতে হবে না?
ডক ব্রাউন

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

ওহ দুঃখিত, আপনাকে এমনকি নমুনাগুলি সংরক্ষণ করার প্রয়োজন নেই যদি আপনি বাক্স ফিল্টারিং করেন তবে আপনি কেবল চলমান / চলমান গড়ের সূত্রটি ব্যবহার করতে পারেন যা আপনাকে পৃথক নমুনা সংরক্ষণ করার প্রয়োজন হয় না
joojaa

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

6

সুপারসম্পলিং সমস্যাটি সাধারণভাবে সমাধান করবে না: এটি কেবল এটিকে কম লক্ষণীয় করে তুলবে। অর্ধেক আকারের পিক্সেল সহ সমস্যাটি লক্ষণীয় হিসাবে অর্ধেক হয়ে যাবে তবে এটি দূরে যাবে না।

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

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

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


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

@ জাজা গেমগুলি হয় কোনও অ্যান্টি-এলিয়জিং করে না বা অ্যান্টি-এলিয়জিংয়ের জন্য সুপার স্যাম্পলিং ব্যবহার করে না, যা সাধারণত অ্যান্টি-এলিয়জিংয়ের চারটি স্তর দেয়। এটি অ্যান্টি-এলিয়াসিংয়ের উপর প্রায় levels৪ স্তরগুলির উপস্থাপনা মানের গ্রাফিক্সের জন্য যথেষ্ট ভাল নয়। সুতরাং গেমস একটির জন্য অন্য সমস্যার সমাধান করে।
পিট কিরখাম

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