একসময়, যখন <<< এর চেয়ে দ্রুত ছিলো… অপেক্ষা কর, কী?


280

আমি একটি দুর্দান্ত ওপেনএলএল টিউটোরিয়াল পড়ছি । এটা সত্যিই দুর্দান্ত, বিশ্বাস করুন। আমি বর্তমানে যে বিষয়টিতে আছি তা হ'ল জেড-বাফার। এগুলি কী কী তা ব্যাখ্যা করার পাশাপাশি লেখক উল্লেখ করেছেন যে আমরা কাস্টম গভীরতার পরীক্ষা করতে পারি, যেমন GL_LESS, GL_ALWAYS ইত্যাদি He কাস্টমাইজড। আমি এখন পর্যন্ত বুঝতে পেরেছি। এবং তারপরে লেখক অবিশ্বাস্য কিছু বলেছেন:

পরিসর zNear ব্যাপ্তি zFar এর চেয়ে বড় হতে পারে; যদি এটি হয়, তবে উইন্ডো-স্পেসের মানগুলি দর্শকের কাছ থেকে নিকটবর্তী বা সবচেয়ে দূরের অংশের দিক থেকে বিপরীত হবে।

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

আমি যদি সঠিকভাবে বুঝতে পারি, পারফরম্যান্স-ভিত্তিক, জেডের চিহ্ন এবং গভীরতা পরীক্ষার <ঝাঁকুনি তুলনা তুলনা পরিবর্তন করা ছাড়া আর কিছুই নয় >। সুতরাং, যদি আমি সঠিকভাবে বুঝতে পারি এবং লেখক মিথ্যা কথা বলছেন না বা তৈরি করছেন না, তবে পরিবর্তিত <হয়ে একটি অত্যাবশ্যক অপ্টিমাইজেশন> হিসাবে ব্যবহৃত হয়েছে অনেক গেম জন্য।

লেখক কি জিনিসগুলি তৈরি করছেন, আমি কি কোনও কিছু ভুল বুঝাবুঝি করছি, বা আসলেই এমনটি <হয়েছিল যা একবারে ধীর ( প্রাণবন্ত , যেমন লেখক বলেছেন) এর চেয়ে বেশি ছিল >?

এই বেশ কৌতূহলী বিষয়টি স্পষ্ট করার জন্য ধন্যবাদ!

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


6
এই টিউটোরিয়ালটির লিঙ্কটি মনে হয়েছে (সম্প্রতি) মারা গেছে। :(
TZHX

@ টিজেডএক্সএক্স যেহেতু গৃহীত উত্তর টিউটোরিয়ালটির লেখক দ্বারা রচিত, তাই আমরা এটি আবার খুঁজে পাব বলে আশা করি। তার উত্তরে আমার শেষ মন্তব্যটি দেখুন :)
আর্মেন ​​সিরুনিয়ান

3
রেফারেন্সযুক্ত ওপেনএল টিউটোরিয়ালটি এখানে উপলভ্য ।
ফন্টগুলি

(a <b) (b> a) এর অনুরূপ তাই হার্ডওয়ারে উভয় তুলনা অপারেশন বাস্তবায়নের কোনও প্রয়োজন নেই। পারফরম্যান্সের পার্থক্যটি তুলনা অপারেশনের ফলে যা ঘটে তার ফলস্বরূপ। পার্শ্ব প্রতিক্রিয়াগুলির সমস্ত ব্যাখ্যা করার জন্য এটি একটি দীর্ঘ এবং ঘুরানো রাস্তা তবে এখানে কয়েকটি পয়েন্টার রয়েছে। গেমগুলি গভীরতার পরীক্ষায় ব্যর্থ হওয়া টুকরোগুলির জন্য আরও ব্যয়বহুল টুকরা প্রক্রিয়াকরণ এড়াতে গভীরতা বাফারটি পূরণ করে। ভূমিকম্প ফ্রেম বাফার সাফ করা এড়াতে গভীরতার পরিসীমাটিকে দুটি ভাগে বিভক্ত করত কারণ গেমটি সর্বদা পর্দার প্রতিটি পিক্সেল এবং তাই ভরা থাকে।
t0rakka

2
@ ফনগুলি লিঙ্কটি মৃত মতো বলে মনে হচ্ছে :(
নলজোক

উত্তর:


350

আমি যদি সঠিকভাবে বুঝতে পারি, পারফরম্যান্স-ভিত্তিক, জেডের চিহ্ন এবং গভীরতা পরীক্ষার ঝাঁকুনি << তুলনা> তুলনা পরিবর্তন করা ছাড়া আর কিছুই নয়। সুতরাং, যদি আমি সঠিকভাবে বুঝতে পারি এবং লেখক মিথ্যা কথা বলছেন না বা তৈরি করছেন না, তবে </>> পরিবর্তন করা অনেক গেমের জন্য একটি অত্যাবশ্যকীয় অপ্টিমাইজেশন হিসাবে ব্যবহৃত হয়েছিল।

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

তবে প্রসঙ্গটি কী। আমি কখনও বলিনি যে <তুলনা <> তুলনার চেয়ে দ্রুত ছিল। মনে রাখবেন: আমরা গ্রাফিক্স হার্ডওয়্যার গভীরতা পরীক্ষা সম্পর্কে কথা বলছি, আপনার সিপিইউ নয়। না operator<

আমি যা উল্লেখ করছি তা হ'ল একটি নির্দিষ্ট পুরানো অপ্টিমাইজেশন যেখানে আপনি একটি ফ্রেম GL_LESS[0, 0.5] এর ব্যাপ্তির সাথে ব্যবহার করবেন । পরবর্তী ফ্রেম, আপনি সাথে রেন্ডারGL_GREATER [1.0, 0.5] এর ব্যাপ্তি সহ । আপনি পিছনে পিছনে যান, আক্ষরিকভাবে প্রতিটি ফ্রেমের "জেড এবং গভীরতা পরীক্ষার সাইন ফ্লিপিং"।

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


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

3
@ নিকলবোলাস: পার্টজএইচএক্সের মন্তব্য, আমার প্রশ্নে আপনার টিউটোরিয়ালের লিঙ্কটি মারা গেছে। দয়া করে দয়া করে আমাদের সকলকে জানতে দিন যে টিউটোরিয়ালগুলি কোথায় সরানো হয়েছে এবং allyচ্ছিকভাবে প্রশ্নটি সম্পাদনা করতে পারেন, দয়া করে?
আরমান সিরুনিয়ান

2
টিউটোরিয়ালগুলি ওয়েব সংরক্ষণাগারে পাওয়া যায়। যদি @ নিকলবোলাস অনুমতি দেয় তবে সম্প্রদায়ের পক্ষে সহায়ক হবে যদি আমরা তাদের আরও অ্যাক্সেসযোগ্য স্থানে নিয়ে যেতে পারি। হতে পারে গিটহাব বা অন্য কিছু। web.archive.org/web/20150215073105/http://arcsynthesis.org/…
অপুরভা

3

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


0

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

সামান্য ব্যাকগ্রাউন্ডের তথ্য: একটি টাইলিং / বিনিং রাস্টারাইজার স্ক্রিনটি খুব ছোট টাইলগুলির সংখ্যায় প্রসেস করে যা অন-চিপ মেমরির সাথে খাপ খায়। এটি বাহ্যিক স্মৃতিতে রাইট লেখাগুলি কমিয়ে দেয় যা মেমোরি বাসের ট্র্যাফিক হ্রাস করে। যখন কোনও ফ্রেম সম্পূর্ণ হয় (অদলবদু বলা হয়, বা FIFO গুলি ফ্লাশ করা হয় কারণ তারা পূর্ণ, ফ্রেমবফার বাইন্ডিংস পরিবর্তন হয় ইত্যাদি) ফ্রেমবফারটি অবশ্যই সমাধান করা উচিত; এর অর্থ প্রতিটি বিনের পরিবর্তে প্রক্রিয়াজাত করা হয়।

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


-8

এটি অত্যন্ত সুরযুক্ত সমাবেশে পতাকা বিটের সাথে সম্পর্কিত।

x86 এর উভয়ই জেএল এবং জে জি নির্দেশ রয়েছে, তবে বেশিরভাগ আরআইএসসি প্রসেসরের কেবল জেএল এবং জেজেড (কোনও জেজি) নেই।


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

54
-1: এই প্রশ্নের সিপিইউগুলির সাথে কোনও সম্পর্ক নেই । GL_LESS এবং GL_GREATER হ'ল গভীরতা তুলনা অপারেশন, যা জিপিইউতে চলে।
নিকল বোলাস

8
শিরোনামের সাথে সঠিক, তবে আসল প্রশ্নের সাথে খুব সামান্যই জবাব পেতে আপনি কতটা প্রতিনিধি পেতে পারেন তা মজার।
জোশুয়া 1

7
+1 না, এই উত্তরটি প্রশ্নের অন্তত অংশে সঠিক। প্রশ্নটি হ'ল: "লেখক কি বিষয়গুলি তৈরি করছেন, আমি কি কোনও কিছু ভুল বুঝাবুঝি করছি, বা আসলেই এমনটি ঘটেছিল যে একবার <> ধীরে ধীরে ছিল (লেখক যেমন লেখক বলেছেন)> এর চেয়ে?"। তিনটি বিকল্প দেওয়া আছে। এই উত্তরটি 3 বিকল্পের সম্ভাবনার বিষয়ে সাড়া দিচ্ছে 3 আর্টিকেলের কোথাও দেওয়া সিপিইউ / জিপিইউয়ের প্রযুক্তি নেই, বা এটি অবশ্যই একটি জিপিইউ (সিপিইউতে প্রথম থ্রিডি গেমস) হওয়া উচিত। ঠিক আছে ... আমি মনে করি না RISC তে অনেক 3 ডি গেমস ছিল :-)
xanatos

3
(এবং জিপিইউ ট্যাগ 20:34 এ যোগ করা হয়েছিল প্রথম সংস্করণ শুধুমাত্র CPU- র ট্যাগ ছিল এই উত্তরটির 18:44 এ লেখা হয়েছিল।।)
xanatos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.