স্মৃতিতে খাপ খায় না এমন দৃশ্যে আমি কীভাবে রেট্রেস করব?


11

দৃশ্যের রেরেটস করা যদি মেমোরিতে সংরক্ষণ করা যায় না, তবে মেশিনে আরও র‌্যাম যুক্ত না করে ব্যবহারিক সময়ের ব্যবস্থায় রেন্ডার করা অবাস্তব বলে মনে হয়, দৃশ্যের বিভিন্ন অংশটিকে ডিস্ক থেকে পিক্সেলের জন্য বেশ কয়েকবার লোড করার প্রয়োজনের কারণে seems ।

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

উত্তর:


10

যদি দৃশ্যটি সম্পূর্ণরূপে মেমরির মধ্যে ফিট না করে তবে আপনি আউট-অফ-কোর রেন্ডারিংয়ের ক্ষেত্রে প্রবেশ করছেন। এখানে মূলত দুটি পন্থা রয়েছে: ক) আপনার দৃশ্য অন-ডিমান্ড তৈরি করুন খ) অন-চাহিদা অনুযায়ী আপনার দৃশ্য লোড করুন

প্রাক্তন পদ্ধতির বেশিরভাগ অ্যানিমেশন ওয়ার্কফ্লোগুলির সাথে ভালভাবে সারিবদ্ধ হয়, যেখানে মডেলগুলি উদাহরণস্বরূপ ক্যাটমুল-ক্লার্ক ব্যবহার করে ভারী বিভক্ত হয় এবং খুব স্মৃতি-নিবিড় হয়ে উঠতে পারে, তবে বেসটি নিজেকে সহজেই মেমরিতে ফিট করে। পিক্সার এ সম্পর্কে কয়েকটি কাগজপত্র রয়েছে (যেমন কমপ্লেক্স সিনে বিতরণ রে ট্র্যাসিংয়ের জন্য রে ডিফারেন্টিয়ালস এবং মাল্ট্রিরেসোলিউশন জ্যামিতি ক্যাচিং ), তবে এর সূচনাটি হ'ল মডেলগুলি কেবলমাত্র একটি বিভাগ দ্বারা विभाजित হয় যখন তারা একটি রশ্মির দ্বারা আক্রান্ত হয় এবং কেবল যতটা বিভাজন হয় এই জাতীয় রশ্মির জন্য যুক্তিসঙ্গত (যেমন বিচ্ছুরিত আন্তঃসংযোগটি আয়না প্রতিবিম্বের চেয়ে কম নির্ভুলতার প্রয়োজন)। বাকীটি জ্যামিতি ক্যাশে পরিচালিত হয়, যা মহকুমা মডেলগুলিকে স্মৃতিতে রাখে এবং আশা করি একটি ভাল উচ্ছেদ কৌশল দ্বারা প্রক্রিয়াটি দক্ষ করে তোলে।

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

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

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

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

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


1
এটি সুপার আকর্ষণীয়! আপনার সংযুক্ত ডিজনি কাগজটিও তাই।
জন কলসবিেক

+1 আমি সবসময় সম্পর্কে ভেবে অবাক হয়েছি এমন অনেকগুলি উত্তর!
রোটেম

7

যদি আপনি কোনও দৃশকে স্থানিক কাঠামোয় সাজিয়ে থাকেন (স্বাভাবিকভাবে বাউন্ডিং ভলিউম হায়ারার্কি হয়ে থাকে ) তবে আপনি এক ধরণের ভার্চুয়াল দৃশ্য ব্যবহার করতে পারেন ( ভার্চুয়াল টেক্সচারের প্রসঙ্গে আমি এই শব্দটি তৈরি করছি )।

একজন মেমোরি ম্যানেজার কেবল একবারে সীমিত সংখ্যক বাউন্ডিং বাক্স লোড করে রাখে এবং একটি পুনরুদ্ধার করে এমন ক্রিয়াকলাপটি বিমূর্ত করে দেয়।

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

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


হ্যাঁ এরকম কিছু।
joojaa

1

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

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

এমন কিছু ঘটনা রয়েছে যেখানে এটি ব্যর্থ হয় তবে বেশিরভাগ দৃশ্যের বালতিতে এটি যথাযথভাবে দক্ষ যদি আপনার শব্দটি রেন্ডারিং না করে ...

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