একটি বিশিষ্ট টেক্সচারটি রেন্ডার করতে আরও বেশি সময় নেয়?


22

ধরা যাক আমি একটি বর্গ দিতে চাই; এর টেক্সচারটি "স্কয়ার.পিএনজি"।

টেক্সচারটি যদি কেবল একটি সরল রঙ হয় তবে কম্পিউটারের পক্ষে এটি রেন্ডার করা কি সহজ?

এটি খুব গোলমাল হলে কী হবে about এখানে এবং সেখানে সম্পূর্ণরূপে এলোমেলো রঙের সাথে টেক্সচার হয় তবে কী হবে?

বা যদি সেই টেক্সচারটি শোরগোলের অর্থে হয় যে এর প্রতিটি পিক্সেল একে অপরের থেকে আলাদা তবে কেবলমাত্র একটি সামান্য বিট দ্বারা?

উত্তর:


39

গেম ডেভলপমেন্ট এবং বিশেষত গেমের গ্রাফিক্সের বেশিরভাগ জিনিসের মতো উত্তরটি "এটি নির্ভর করে"

জমিন আকার

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

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

জমিন বিশদ

আপনার টেক্সচারের সামগ্রীটির বেশিরভাগ সময় রেন্ডারিং দক্ষতায় কোনও প্রভাব পড়ে না।

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

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

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

শ্যাডার ব্রাঞ্চিং এবং ইন্ডিয়ারেশন

পরিস্থিতিটির বৃহত্তম নক্ষত্রটি এখানে: আপনি কোনও if()শাখার মতো সিদ্ধান্ত নিতে এই টেক্সচার কালার ইনপুটটি ব্যবহার করতে পারেন । এখানে, গতির জন্য বিশদ গুরুত্বপূর্ণ।

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

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

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


সুতরাং, সামগ্রিক: না, জমিনের বিষয়বস্তু রেন্ডারিং গতিতে খুব বেশি প্রভাব ফেলবে না, ক্ষেত্রেগুলি বাদ দিলে এটি করে। ;)


কোনও নির্দিষ্ট টেক্সেল যখন ক্যাশে লোড করা হয় তখন লো-রিসেস টেক্সচার (মনে করি মাইনক্রাফ্ট) সংলগ্ন পিক্সেলগুলির জন্য টেক্সেলগুলি ক্যাশে লোড করার বেশি সম্ভাবনা রয়েছে?
ব্যবহারকারী 253751

6
@ মিমিবিস মাইনক্রাফ্টের ছোট ছোট টেক্সচার রয়েছে। ডিফল্টটি কেবলমাত্র 16x16, যা প্রতিটি কোরের টেক্সচার ক্যাশে এত সহজে ফিট হয়ে যায় যে এটি মজাদারও নয়: ডি এবং হ্যাঁ, বেশিরভাগ টেক্সচারের নমুনাগুলি একই টেক্সেলটিতে থাকবে, আপনি যদি ব্লক থেকে খুব দূরে না থাকেন। এটি বিশেষত সত্য যদি আপনি স্ক্রীন মহকুমাকে বিবেচনায় রাখেন - যদি আপনি যুক্তিসঙ্গতভাবে কাছাকাছি থাকেন তবে প্রদত্ত কোরটির পুরো ব্যাচ একই টেক্সলে ম্যাপ করতে পারে: ডিএ সহজ জিপিইউ সম্ভবত এই জাতীয় নিম্ন-সংজ্ঞাযুক্ত পাঠ্যের জন্য আরও ভাল কাজ করবে - আমার সন্দেহ মিনক্রাফ্টের জন্য কোনও কিছুই সহায়তা করে না এমন অপ্টিমাইজেশানগুলিতে প্রচুর প্রচেষ্টা নষ্ট হয়।
লুয়ান

1
পার্শ্ব নোট: "পিক্সেল প্রতি একই সংখ্যক বাইট ব্যবহার করে" গ্রাফিক্স কোড ব্যবহার করে এমন কিছু গতি হ্যাকের পক্ষে মূল বিষয়। আপনি যদি অভ্যন্তরীণভাবে পিএনজি ব্যবহার করার চেষ্টা করতে পারেন, বা এমনকি কিছু পরিবর্তনশীল পিক্সেল আকারের ইউটিএফ -8 এর মতো কিছু n, পিক্সেলটিতে পৌঁছানোর জন্য আপনাকে তার আগে প্রতিটি পিক্সেলটি অতিক্রম করতে হবে। একটি ধ্রুবক পিক্সেল বাইট প্রস্থের সাথে, এটি ঠিক start_of_buffer + width * n, যা অনেক বেশি দ্রুত, বিশেষত বড়দের জন্য n
মনিকার লসুইট

@ লুয়ান আমার অর্থ এই যে আপনি ব্লক থেকে অনেক দূরে থাকাকালীনও যখন এটি একটি টেক্সেল নিয়ে আসে (যে কোনওটি প্রথমে থাকে) এটি কিছু সংলগ্নকেও ক্যাশে আটকানো উচিত।
ব্যবহারকারী 253751

4
মিপম্যাপিংয়ের সাথে আমি উপরে এটিই বলি। আমাদের নমুনাগুলি টেক্সচারের চারপাশে এড়াতে এড়ানো যাতে সামান্য কোনও ক্যাশে পুনরায় ব্যবহার করা না হয় তার মধ্যে বড় ব্যবধান রেখে আমরা একটি 512x512 সংস্করণ এবং একটি 256x256 সংস্করণ এবং .... কখনও কখনও 1x1 এ নামিয়ে রাখি। সুতরাং 16x16 এ 1024x1024 টেক্সচারটি অঙ্কন করার সময়, বেশিরভাগ গেমগুলি আসলে 16x16 টি মিপ থেকে পড়তে থাকবে এবং এটি ক্যাশে দক্ষতার ক্ষেত্রে 16x16 মাইনক্রাফ্টের ক্ষেত্রে অনুরূপ কাজ করে। এটি ডাউনস্যাম্পলিং থেকে স্পার্কলি অ্যালিজিং শিল্পকর্মগুলি হ্রাস করে।
ডিএমগ্রিগরি

1

উপরের ডিএমগ্রিগরির দুর্দান্ত উত্তরের পাশাপাশি , সম্ভবত এমন একটি কেস রয়েছে যেখানে "টেক্সচার" এর জটিলতা রেন্ডারিংয়ের কার্য সম্পাদনকে প্রভাবিত করতে পারে এবং এটি হ'ল পূর্ববর্তী রেন্ডারগুলির ফলাফলগুলি পরবর্তী একটিতে উত্স হিসাবে ব্যবহৃত হয়, উদাহরণস্বরূপ ছায়ার মানচিত্র / প্রতিচ্ছবি / পরিবেশের মানচিত্র।

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

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

এছাড়াও, এই স্কিমগুলি ব্যবহার করে এমন ফ্রেম / গভীরতার বাফারগুলির বিস্ময়কর নমুনা তৈরি করা ব্যান্ডউইদথকে হ্রাস করার ব্যর্থ প্রয়াসে সাহায্য করবে না কারণ এগুলি সম্ভবত ব্লক ভিত্তিক হওয়ার সম্ভাবনা রয়েছে।

আরও আপনি এই দুটি এসই কম্পিউটার গ্রাফিক্স প্রশ্ন এবং আগ্রহের উত্তরগুলি পেতে পারেন:

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