জিপিইউতে একটি টেক্সচার কত স্মৃতি গ্রহণ করে?


9

ডিস্কে একটি বৃহত png কেবল কয়েক মেগাবাইট নিতে পারে তবে আমি কল্পনা করি যে জিপিইউতে একই পিএনজি একটি সঙ্কোচিত বিন্যাসে সঞ্চিত রয়েছে যা আরও অনেক বেশি জায়গা নেয়। এটা কি সত্য? যদি এটি সত্য হয় তবে কত জায়গা আছে?

উত্তর:


16

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

সুতরাং, এই বিভিন্ন সাধারণ টেক্সচার বিন্যাসগুলির জন্য মাপগুলি:

  • এল (আলোকসজ্জা, যেমন গ্রেস্কেল): প্রস্থ * উচ্চতা * 1 বাইট।
  • এলএ (লুমিন্যান্স এবং আলফা, ফন্টগুলির জন্য সাধারণ): প্রস্থ * উচ্চতা * 2 বাইট।
  • আরজিবি (রঙ, কোনও আলফা নয়): প্রস্থ * উচ্চতা * 3 বাইট।
  • আরজিবিএ (আলফা সহ রঙ): প্রস্থ * উচ্চতা * 4 বাইট।
  • ডিএক্সটি 1 / বিসি 1 (রঙ, বাইনারি আলফা): (প্রস্থ * উচ্চতা * 4 বাইট) / 8 (8: 1 সংক্ষেপণ অনুপাত)।
  • ডিএক্সটি 3 / বিসি 2 (রঙ, ধারালো আলফা) / ডিএক্সটি 5 / বিসি 3 (রঙ, গ্রেডিয়েন্ট আলফা): (প্রস্থ * উচ্চতা * 4 বাইট) / 4 (4: 1 সংক্ষেপণ অনুপাত)।

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

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


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

অবশ্যই এটি করতে পারে তবে অবাস্তব ইঞ্জিন, উত্স, ইত্যাদি দিয়ে তৈরি গেমগুলিতে ব্যবহৃত সম্পদগুলি পরীক্ষা করে সেগুলি সাধারণত ডিস্কে সংকুচিত হয় না, কারণ আজকাল সংস্থান সঙ্কুচিত রাখার জন্য পর্যাপ্ত ডিস্কের বেশি জায়গা রয়েছে; এবং সংরক্ষিত স্থানটি প্রতিটি লোডের ফাইলগুলি সংক্ষেপিত করার জন্য প্রয়োজনীয় অতিরিক্ত র‍্যাম এবং সিপিইউ সময় দেয় না।
r2d2rigo

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

বেশিরভাগ ক্ষেত্রেই সঠিক যে আরজিবি ফর্ম্যাটগুলি সাধারণত জিপিইউতে থাকে না; দেখুন: opengl.org/wiki/Common_Mistakes# টেক্সচার_আপলোড_আর_পিক্সেল_প্রেম
ম্যাক্সিমাস মিনিমাস

9

স্পষ্টত: এটি ফর্ম্যাটের উপর নির্ভর করে।

256 বাই 256 পিক্সেল বর্গক্ষেত্রের টেক্সচারটি নেওয়া যাক। যদি এটি একটি আলফা চ্যানেলের সাথে 32-বিট সঙ্কুচিত হয় ( Colorএক্সএনএ তে) তবে এটি 256KB লাগে (256*256*4 বাইট) ।

16-বিট ফর্ম্যাটগুলি (যেমন Bgr565:) অবশ্যই আকারের অর্ধেক হবে - 128 কেবি

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

ডিএক্সটি 1 এর সংক্ষেপণ অনুপাত 8: 1 এবং ডিএক্সটি 3 এবং ডিএক্সটি 5 এর 4: 1 হয়।

সুতরাং 256x256 এর একটি ডিএক্সটি 1 চিত্র 32 কেবি । এবং ডিএক্সটি 3 বা ডিএক্সটি 5 হ'ল 64 কেবি

এবং তারপর মিপম্যাপিং আছে । এটি সক্ষম করা থাকলে, এটি পূর্বের আকারের অর্ধেক আকারে গ্রাফিক্স মেমরিতে চিত্রের একটি সিরিজ তৈরি করে। সুতরাং আমাদের 256x256 চিত্রের জন্য: 128x128, 64x64, 32x32, 16x16, 8x8, 4x4, 2x2, 1x1। মিপম্যাপিং সহ একটি টেক্সচার মূলটির আকার প্রায় 133%


4

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

টেক্সচারগুলি দুটি ভিডিও মেমোরি এবং সিস্টেম মেমরির মধ্যে সংকুচিত বা সঙ্কুচিতভাবে সংরক্ষণ করা যেতে পারে।

সঙ্কুচিত টেক্সচারের জন্য, থাম্বের সাধারণ নিয়মটি হ'ল ভিডিও মেমোরিতে এটি একই পরিমাণে স্থান গ্রহণ করবে এটি সিস্টেম মেমোরিতে সঙ্কুচিত আকারে করে।

ডিএক্সটি 1 সংক্ষেপিত টেক্সচারের জন্য। জিপিইউ আপনার জমিনে প্রতি 4x4 টাইলের জন্য 8 বাইট সঞ্চয় করে। সঙ্কুচিত ডেটা (আরজিবি চ্যানেল প্রতি 8-বিট এ) সাধারণত 4x4x3 = 48 বাইট হবে, সুতরাং এটি 6: 1 এর একটি সংকোচন অনুপাত। ডিএক্সটি 3 / ডিএক্সটি 5 সংক্ষেপিত টেক্সচারের জন্য, জিপিইউ আপনার জমিনে প্রতিটি 4x4 টাইলের জন্য 16 বাইট সঞ্চয় করে। এটি 3: 1 এর সামান্য কম সংক্ষেপণের অনুপাত।

উভয় সংকুচিত এবং সংকুচিত টেক্সচার সহ কিছু সাবধানতা রয়েছে:

  • বেশিরভাগ মেমোরি একটি নির্দিষ্ট আকারের পৃষ্ঠাগুলিতে বরাদ্দ করা হয় (যার আকার জিপিইউগুলির মধ্যে পরিবর্তিত হয়)। যেমন। 4KB এবং প্রায়শই এটি সাব-বরাদ্দ এবং অন্যান্য জিপিউ ডেটার সাথে ভাগ করা হয় না। অর্থাৎ। যদি আপনার টেক্সচারের পদচিহ্নগুলি পৃষ্ঠার আকারের চেয়ে ছোট হয়, তবে ভিড মেমের পাদদেশের ছাপ প্রায়শই পৃষ্ঠার আকার হতে পারে।

  • কিছু জিপিএসের খুব নির্দিষ্ট প্রান্তিককরণের প্রয়োজনীয়তা থাকে। অতীতে, কিছু জিপিইউগুলির প্রয়োজনীয়তা ছিল যে টেক্সচারগুলি আকারের 2 পাওয়ার। টেক্সচারটি থেকে নমুনা নেওয়ার সময় অ্যাক্সেস লোকালটি উন্নত করার জন্য এটি প্রায়শই একটি ঘনঘন প্রতিনিধিত্বকে সমর্থন করে (মর্টন অর্ডারিং: http://en.wikedia.org/wiki/Z-order_(curve দেখুন ) সমর্থন করা প্রয়োজন । এর অর্থ হ'ল এই প্রয়োজনীয়তাগুলি সংরক্ষণ করার জন্য বিজোড় আকারের টেক্সচার প্যাড করা হবে (সাধারণত এই প্যাডিংটি চালকের দ্বারা পরিচালিত হয়)। যদিও মর্টন-অর্ডার অগত্যা আধুনিক জিপাসে ব্যবহৃত হয় না, তবে জিপিইউর নির্দিষ্ট প্রয়োজনীয়তাগুলি সমর্থন করার জন্য এখনও স্ফীত হতে পারে।

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

  • আপনি যদি মাইপম্যাপিং সক্ষম করে থাকেন তবে অতিরিক্ত মাইপগুলি বেস মিপ স্তরের প্রায় এক তৃতীয়াংশ ধরে গড়ে গ্রাস করবে। উপরের ক্যাভ্যাটগুলির উপর ভিত্তি করে ওয়াইএমএমভি।


0

আফাইক, এটি চিত্রগুলির প্রস্থ * উচ্চতা * বিপিপি, যদি এটি পিএনজি, জেপিজি বা বিএমপি হয় তবে স্বতন্ত্র। আমি জানি না কীভাবে ডিডিএস বা অন্যান্য সংকোচনযোগ্য ফর্ম্যাটগুলি আউট করা হয়।

মিপ-ম্যাপিং ভিডিও মেমোরির প্রয়োজনীয়তা বাড়িয়ে তুলবে।

এই বিষয়ে আমার জ্ঞানটি কিছুটা পুরানো হতে পারে। আমি কিছুক্ষণ আগে 3D ত্যাগ করেছি।


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

1
সাধারণত "পিচ" বলতে বাইটগুলিতে স্ক্যানলাইনটির দৈর্ঘ্য বোঝায় (ফ্রিটাইপ এবং এসডিএল হিসাবে), এবং "স্ট্রাইড" উপাদানগুলির মধ্যে স্থানকে বোঝায় যা পিক্সেল বা স্ক্যানলাইন হতে পারে (ওপেনজিএল এবং পাইথনের তৃতীয় স্লাইস যুক্তি হিসাবে)। উভয় মান ইমেজ প্রসেসিং করার জন্য প্রয়োজনীয়, তবে "সাধারণত" পিচ = প্রস্থ * বাইটস_পিটার_পিক্সেল এবং স্ট্রাইড = 0 শব্দটি প্রায়শই আলগা এবং বিভ্রান্ত হয় তাই আপনার পছন্দের লাইব্রেরির জন্য API ডক্স পরীক্ষা করা ভাল।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.