কিভাবে গভীরতা বাফার আপডেট করা জিপিইউতে কাজ করে?


10

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

উত্তর:


9

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


11

সত্যিকারের জিপিইউতে, গভীরতা বাফারের একই অঞ্চলটি পড়ার / লেখার চেষ্টা করার এবং তাদের মধ্যে একত্রীকরণের চেষ্টা করার পরিবর্তে গভীরতা বাফারটি টাইলগুলিতে বিভক্ত করা হয় (যেমন 16 × 16 বা 32 × 32) এবং প্রতিটি টাইল একটি একক কোর বরাদ্দ করা হয়। সেই কোরটি তখন সেই টাইলের সমস্ত রাস্টারাইজেশনের জন্য দায়ী: যে টাইলটিকে স্পর্শ করে যে কোনও ত্রিভুজ তার নিজস্ব কোর দ্বারা রাস্টারাইজড হবে (সেই টাইলের মধ্যে)। তারপরে কোরের মধ্যে কোনও হস্তক্ষেপ নেই এবং ফ্রেমবফারের অংশটি অ্যাক্সেস করার সময় তাদের সিঙ্ক্রোনাইজ করার প্রয়োজন নেই।

এটি বোঝায় যে একাধিক টাইলগুলি স্পর্শ করে এমন ত্রিভুজগুলি একাধিক কোর দ্বারা জঞ্জাল করা দরকার। সুতরাং, জ্যামিতি প্রক্রিয়াজাতকরণ (শীর্ষে এবং ত্রিভুজগুলিতে অপারেশন) এবং পিক্সেল প্রসেসিংয়ের মধ্যে একটি কাজের পুনরায় বিতরণ পদক্ষেপ রয়েছে।

জ্যামিতি পর্যায়ে, প্রতিটি কোর ইনপুট আদিমগুলির একটি অংশকে প্রক্রিয়া করতে পারে; তারপরে প্রতিটি আদিমতার জন্য, এটি দ্রুত নির্ধারণ করতে পারে যে কোন টাইলগুলি আদিম স্পর্শগুলি (এটি "মোটা রাস্টারাইজেশন" বলা হয়), এবং আক্রান্ত টাইলগুলির মধ্যে একটির মালিক প্রতিটি কোরের জন্য একটি কাতারে আদিমকে যুক্ত করুন।

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

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