এএএ গেমসের সীমা ছাড়িয়ে গেছে


21

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

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

আমি কেবল পোস্ট করতে পারি যে বিকাশকারীরা পর্দা সতেজ করার সময় রঙের বাফারটি সাফ করে না?

এটা কি ঠিক? যদি তাই হয় তবে কেন?


8
বিটিডাব্লু, এটিকে প্রায়শই "হল অফ মিরর" ইফেক্ট বা এইচএম বলা হয়।
নাথান রিড

উত্তর:


35

একসময়, রঙ এবং গভীরতার বাফারগুলি সাফ করতে আসলে সময় নিয়েছিল। একটি পরিষ্কার করার অর্থ গ্রাফিক্স কার্ডের ফ্রেমবফারের প্রতিটি পিক্সেল হাঁটা এবং এটিতে একটি মান লিখতে হবে।

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

রঙ বাফারটি উপেক্ষা করা সহজ। গভীরতা বাফার কম সহজ, কারণ এটি পুরানো ডেটা দিয়ে দূষিত হবে। সুতরাং তারা কি সহজ ছিল।

ফ্রেম 0, তারা একটি সঙ্গে রেন্ডার হবে glDepthRange(0, 0.5) এর (বা D3D সমতুল্য), এবং তারা একটি ব্যবহার করেন glDepthFuncএর GL_LESS(বা GL_LEQUAL)। এর অর্থ হ'ল গভীরতা বাফারে আপনি যে দূরতম গভীরতার মান পাবেন তা 0.5 হয়। সুতরাং ফ্রেম 0 এর শেষে গভীরতার বাফারের বৃহত্তম মান হ'ল 0.5 (ধরে নিলেন আপনি প্রতিটি পিক্সেলটিতে লিখেছেন)।

ফ্রেম 1 এ, তারা গভীরতার পরিসীমা (1, 0.5) এ পরিবর্তন করবে। লক্ষ করুন যে এক্ষেত্রে নিকটতম গভীরতার মান দূরত্বের চেয়ে বেশি। তবে তারা গভীরতা মজাদার GL_GREATER(বা GL_GEQUAL) এও পরিবর্তন করতে পারে , যা গভীরতা পরীক্ষার অর্থকে বিপরীত করে। যেহেতু গভীরতা বাফারের বৃহত্তম মান 0.5 হয়, আপনার লেখার প্রত্যেকটির মান এর চেয়ে বড় হবে। যেহেতু গভীরতা পরীক্ষাটি বিপরীত হয়েছিল, এর কার্যকরভাবে এর অর্থ হ'ল ফ্রেম 0 তে যা কিছু লেখা হয়েছিল তা এখন ফ্রেম 1 তে লেখা যেতে পারে তার চেয়ে অনেক বেশি দূরে রয়েছে ফ্রেম 1 এর শেষে, গভীরতা বাফারের ক্ষুদ্রতম মান এখন 0.5।

এবং তারপরে তারা পুনরাবৃত্তি করে।

২০০৩ সালের পর থেকে তৈরি যে কোনও হার্ডওয়্যারে এটি আর অনুকূলিতকরণ নয়। আসলে এটি একটি নেতিবাচক অপ্টিমাইজেশন । গভীরতার বাফার সাফ করা আসলে হার্ডওয়্যারকে দ্রুততর করে তোলে । সত্যিই না.

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

সুতরাং প্রতিটি প্রথম পড়ুন / পরিবর্তন করুন / লিখুন যে আপনি প্রতিটি ক্যাশে লাইনে একটি ক্লিয়ার করার পরে মূলত একটি লেখা is এটি বিনামূল্যে

এছাড়াও, জেগড ডিপথ বাফার থাকা হার্ডওয়্যারের হাইপার-জেড / হায়ারার্কিয়াল-জেড / যেকোন জেড-কুলিং অপ্টিমাইজেশনের বিরুদ্ধে কাজ করতে পারে। হ্যাঁ, আপনি বিশদ যুক্ত করার সাথে সাথে আপনার দৃশ্যগুলি শেষ পর্যন্ত তাদের বিরুদ্ধে কাজ করবে। তবে যদি আপনার ডিপথ বাফারটি পূর্ববর্তী রেন্ডারিংগুলি থেকে ঝাঁকুনিতে থাকে তবে those ব্যাকগ্রাউন্ডের অবজেক্টগুলি ব্যাকগ্রাউন্ডে থাকলেও এটি জেড-কুলিং কৌশলগুলির দক্ষতাকে প্রভাবিত করতে পারে। এবং এটি পারফরম্যান্সে সহায়তা করবে না।

সুতরাং আধুনিক গেমগুলিতে আপনার এই গভীরতা বিপরীত কৌশলটি কখনই করা উচিত নয়

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


আপনার শেষ বিবৃতিটি কখনই গভীরতার বাফারকে পর্যবসিত করে না বা বোঝায় না? দুর্দান্ত উত্তর।
ছদ্মবেশী

1
@ ড্যানিয়েল হ্যাঁ আমি আমার পোস্টটি পরিষ্কার করে দিয়েছি।
নিকল বোলাস

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

5

হ্যাঁ, আপনি ঠিক বলেছেন যে পিছনের বাফারটি সাফ করা হচ্ছে না।

কেননা (বেশিরভাগ ক্ষেত্রে) এটি এমন একটি কাস্টম শেডার ব্যবহার করা দ্রুত যা প্রতিটি ফ্রেমের বিপরীত দিকের গভীরতার মানগুলিকে পিং-পং করে এবং আপনার গেমটি সর্বদা পর্দার প্রতিটি পিক্সেল রেন্ডার করে।

সুতরাং শূন্য খরচের জন্য আপনি প্রতি ফ্রেমে একটি বাফার পরিষ্কার সাফ করুন।


1
গভীরতা পিং-পংিং সম্পর্কে আমি জানি না; প্রতিটি ইঞ্জিন যার সাথে আমি পরিচিত প্রতিটি ফ্রেম গভীরতা / স্টেনসিল বাফার সাফ করে। তবে এটি থেকে আলাদা, হ্যাঁ, গেমটি যদি সমস্ত পিক্সেল রেন্ডার করে (যেমনটি হওয়া উচিত), আপনার রঙ বাফার সাফ করার দরকার নেই।
নাথান রিড

আপনি শেডার জন্য উদাহরণ দিতে পারেন, অন্যথায় ভাল উত্তর।
ছদ্মবেশী

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