টেক্সচার সর্বদা দুটি এর বর্গক্ষেত্র কেন? তারা না হলে কী হবে?


53

গেমগুলিতে টেক্সচারের রেজোলিউশন কেন সর্বদা দুটি (128x128, 256x256, 512x512, 1024x1024, ইত্যাদি) এর শক্তি? গেমের ফাইলের আকার বাঁচাতে এবং টেক্সচারটি একেবারে UV মোড়কে মোড়ানো মডেলটিকে ফিট করে কি স্মার্ট হবে না?

যদি এমন কোনও টেক্সচার থাকত যা দু'টির শক্তি না হয়?

টেক্সচারটি 256x512, বা 512x1024 এর মতো কিছু হওয়া কি ভুল হবে? অথবা এটি নন-পাওয়ার-টু টেক্সচারের কারণগুলির কারণ হতে পারে?


9
আপনার অন্যান্য উদাহরণগুলিও দু'জনের শক্তি, কেবল দু'জনের একই শক্তি নয়। দুটিটির শক্তি গ্রাফিক্স হার্ডওয়্যারটির জন্য জমিনকে অনুকূলিত করে তোলে।
মাইকেলহাউস

1
@ বাইট 56 আমি মনে করি তার অর্থ 2 x nx 2 ^ n টেক্সচার, যেখানে এন 1 থেকে অসীম পর্যন্ত পরিবর্তিত হয়। (সত্যই অসীম নয়))
রবিন ২ '

আরও মনে রাখবেন যে দু'জনের ক্ষমতার মিপম্যাপগুলি তুচ্ছ তৈরি করার সুবিধা রয়েছে।
পাব্বি

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

তারা সর্বদা দু'জনের শক্তি হয় না ।
অলমো

উত্তর:


49

গেমগুলিতে টেক্সচারের রেজোলিউশন কেন সর্বদা দুটি (128x128, 256x256, 512x512, 1024x1024, ইত্যাদি) এর শক্তি?

বাইট 56 হিসাবে বোঝানো হয়েছে, "দুটি শক্তি" আকারের বিধিনিষেধগুলি হ'ল (প্রতিটি) অবশ্যই প্রতিটি মাত্রা হতে হবে, স্বতন্ত্রভাবে, দু'জনের শক্তি হবে না যে টেক্সচার অবশ্যই অবশ্যই বর্গক্ষেত্র এবং দুটি মাত্রার শক্তিযুক্ত মাত্রা থাকতে হবে ।

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

গেমের ফাইলের আকার বাঁচাতে এবং টেক্সচারটি একেবারে UV মোড়কে মোড়ানো মডেলটিকে ফিট করে কি স্মার্ট হবে না? যদি এমন কোনও টেক্সচার থাকত যা দু'টির শক্তি না হয়?

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

এটি সত্য যে আপনি এইভাবে কিছু স্থান "অপচয়" করছেন, তবে অতিরিক্ত স্থানটি সাধারণত রেন্ডার পারফরম্যান্সে ট্রেড অফের পক্ষে উপযুক্ত। অতিরিক্তভাবে এমন কৌশল রয়েছে যেমন একক টেক্সচার স্পেসে একাধিক চিত্রকে সংক্ষেপণ বা প্যাক করার মতো কিছু সঞ্চয়স্থান বর্জ্য হ্রাস করতে পারে।


11
"এটি সত্য যে আপনি এইভাবে কিছু স্থান" নষ্ট "করেছেন, তবে রেন্ডার পারফরম্যান্সে ট্রেডঅফের জন্য অতিরিক্ত স্থানটি সাধারণত এটির পক্ষে উপযুক্ত।" - প্রায় দশ বছর আগে আমি একটি স্টুডিওতে কাজ করেছিলাম যা এক্সবক্সের কাছে একটি পিএস 2 গেমটি পোর্টিং করছিল। PS2 প্রযুক্তিবিহীন দু'টি টেক্সচারকে টেকনিক্যালি সমর্থন করে না, আপনি কিছু ক্ষেত্রে, সামান্য চালাক হেরফের এবং কোনও গতির ক্ষতি না করে এক ধরণের জোর করে এটি করতে পারেন। অন্যদিকে, এক্সবক্স পুরোপুরি তাদের সমর্থন করে নি। শেষ ফলাফলটি হল যে এক্সবক্সের পিএস 2 এর প্রায় দ্বিগুণ র‌্যাম থাকা সত্ত্বেও, ফিট করার জন্য আমাদের কয়েকটি টেক্সচারকে ডাউনসাম্পল করতে হয়েছিল।
জোর্বাথুত

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

1
@ সালমনমুজ: সঠিক; জেপিইজি 8x8 এর প্রতিটি ব্লককে স্বাধীনভাবে সংকুচিত করে এবং প্রান্তে ব্লকগুলি প্যাড করবে। তবে এটি এই প্রশ্নের সাথে সম্পর্কিত নয়।
এমসাল্টাররা

1
হ্যাঁ, জেপিগগুলি 8x8 ব্লকে এনকোড করা আছে। এটি আসলে কোনও দক্ষতার বিবেচনা নয়। এবং এটি অগত্যা 2 এর শক্তিও নয়। :)
কাইলোটান

অ্যান্ড্রয়েডে একটি উদাহরণ রয়েছে যেখানে প্রায়শই নন-পাওয়ারফটওয়্যার টেক্সচারগুলির ফলে সাদা টেক্সচার হয়।
ব্যবহারকারী 717572

17

টেক্সচার সর্বদা দুটি এর বর্গক্ষেত্র কেন?

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

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

12
এটি লক্ষ্য করা উচিত যে "পুরানো গ্রাফিকাল কার্ডগুলি" দ্বারা তার অর্থ 2006 বা তারও আগে তৈরি জিনিসগুলি।
নিকল বোলাস

1
@ নিকলবোলাস ধন্যবাদ, আমি আসলে সেই বিষয়টিতে কিছু তথ্য খুঁজে পাওয়ার চেষ্টা করছিলাম।
ডেভিড গাউভিয়া

7

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

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


6

সমস্যাটি হ'ল কয়েকটি হার্ডওয়্যার এমন টেক্সচারের জন্য সীমিত সমর্থন করে যা দুটি মাত্রার শক্তি রাখে না।

উদাহরণস্বরূপ, http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876%28v=vs.85%29.aspx এর নীচে দেখুন এবং সেখানে পাদটীকা 3 এবং 4 পড়ুন।

3 বৈশিষ্ট্য স্তরে 9_1, 9_2 এবং 9_3 এ, ডিসপ্লে ডিভাইসটি 2-ডি টেক্সচারকে এমন মাত্রা সহ সমর্থন করে যা দুটি অবস্থার অধীনে দুটির শক্তি নয়। প্রথমত, প্রতিটি টেক্সচারের জন্য কেবল একটি এমআইপি-মানচিত্র স্তর তৈরি করা যায় এবং দ্বিতীয়ত, টেক্সচারের জন্য কোনও মোড়কের স্যাম্পলার মোডের অনুমতি নেই (এটি, D3D11_SAMPLER_DESC এর ঠিকানাU, ঠিকানাভি, এবং ঠিকানা ডাব্লু সদস্যদের D3D11_TEXTURE_ADDRESS_Wrap এ সেট করা যাবে না)।

4 বৈশিষ্ট্য স্তর 10-10, 10_1 এবং 11_0 এ, ডিসপ্লে ডিভাইসটি নিঃশর্তভাবে 2-ডি টেক্সচারের সাথে দুটি মাত্রার নয় এমন মাত্রা সহ সমর্থন করে।


6

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

ফ্রেম বাফারটি টুকরো যা স্কোয়ারের সমন্বয়ে গঠিত। উদাহরণস্বরূপ 800x600 এবং একটি আরজিবি রঙের স্থান (0-255) সহ একটি স্ক্রিনে 800x600 পয়েন্ট রয়েছে যেখানে প্রতিটি চ্যানেল 3 বাইট রয়েছে ফ্রেম বাফারটিতে সম্বোধন করার জন্য একটি দুর্দান্ত মোট 3x800x600 = 1,440,000 বাইট। তার মানে এখানে 1,875 ঠিকানার টুকরা রয়েছে যা 256x256x3 বাইট। টেক্সচারের ডেটা বর্গক্ষেত্রের ফলে এটি গ্রিক ম্যাট্রিক্স থেকে স্ক্রিন বাফার ম্যাট্রিক্সে বিকিউবিক স্কেলিং ব্যবহার করে মানচিত্রটি উল্লেখযোগ্যভাবে সহজ করে তোলে, যেখানে যদি এটি বর্গক্ষেত্র না হয় তবে লম্বা পক্ষের জন্য বায়াসটি গণনা করতে আরও বেশি সময় লাগবে যখন প্রয়োজন হয় ছোট করা হবে।

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

সুতরাং যদি একটি 100x1024 চিত্র ব্যবহৃত হয় এবং 1024x1024 চিত্রটি ব্যবহৃত হয় যার অর্থ 946,176 বাইট নষ্ট হয়। আরও বেশি করে যদি কমপোজিটিং করা হয় তবে প্যাডিং ডেটা সংযুক্ত জমিনকে প্রভাবিত করবে না তা বোঝাতে একটি আলফা চ্যানেল যুক্ত করা দরকার।


এটি একটি আকর্ষণীয় ব্যাখ্যা (বর্গ ম্যাট্রিক্স সম্পর্কে শিরোনাম) যা 2 টি উত্তর (+1) এর সাধারণ পাওয়ারে পাওয়া যায় না - আপনি যদি সম্ভব হয় তবে কিছু উদ্ধৃতি প্রদান করতে পারেন?
সমুরসা

1

আমাদের ডিজিটাল ওয়ার্ল্ড বাইনারি সংখ্যার সাথে কাজ করে তারপরে মাল্টিপ্লে বা 2 দ্বারা ভাগ করে এমন একটি মান যা আপনি কোনও মানকে বাম বা ডানদিকে "স্থানান্তরিত" করতে পারেন

<<  Left shift      x = 5 << 1    0101 << 1     1010     10
>>  Right shift     x = 5 >> 1    0101 >> 1     0010      2

সিপিইউয়ের জন্য "দু'জনের পাওয়ার" মানের সাথে কাজ করা আরও সহজ।


0

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

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

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