Samsung Galaxy XR এসে গেছে, এটি Android XR দ্বারা পরিচালিত হয়! এই ব্লগ পোস্টটি আমাদের Android XR স্পটলাইট সপ্তাহের অংশ, যেখানে আমরা রিসোর্স—ব্লগ পোস্ট, ভিডিও, স্যাম্পেল কোড এবং আরও অনেক কিছু—প্রদান করি, যা আপনাকে Android XR-এর জন্য অ্যাপ শিখতে, তৈরি করতে এবং প্রস্তুত করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
এই সপ্তাহে, Samsung Galaxy XR লঞ্চ করেছে, এটি Google ও Qualcomm-এর সাথে কোলাবরেশনে তৈরি করা হয়েছে। ডেভেলপারদের জন্য এটি একটি উত্তেজনাপূর্ণ সময় এবং আমরা চাই যে আপনার XR অ্যাপ থেকে আপনি সেরা পারফর্ম্যান্স পান।
XR ডিভাইস ছাড়া অন্য ডিভাইসে গেম ও অ্যাপের পারফর্ম্যান্স খারাপ হলে ব্যবহারকারী বিরক্ত হতে পারেন, কিন্তু XR-এর জগতে পারফর্ম্যান্স শুধু ঐচ্ছিক নয়, এটি আপনার অ্যাপের সাফল্যের জন্য অত্যন্ত গুরুত্বপূর্ণ। XR-এ ফ্রেম রেট টার্গেট পূরণ করতে না পারলে, মোশন সিকনেসের মতো আরও গুরুতর সমস্যা হতে পারে।
এই নির্দেশিকায়, Android XR ডেভেলপমেন্টের জন্য আপনাকে যেসব পারফর্ম্যান্স অপ্টিমাইজেশন সম্পর্কে জানতে হবে, সেইসব গুরুত্বপূর্ণ বিষয় আমরা আপনাকে জানাব। কোন ফিচার সবচেয়ে বেশি পারফর্ম্যান্স দেয়, কখন সেগুলি ব্যবহার করতে হয় এবং ফ্রেম রেট সংক্রান্ত লক্ষ্য পূরণে সাহায্য করার জন্য সেগুলি কীভাবে একসাথে কাজ করে, তা আপনি জানতে পারবেন।
আমরা এগুলি করতে চাই:
- ন্যূনতম: ৭২fps (আমাদের প্লে কোয়ালিটি নির্দেশিকার অংশ)
- ঐচ্ছিক: প্রতি ফ্রেমে ১১ms বাজেট সহ ৯০fps
এত বেশি ফ্রেম রেট বজায় রাখা কেন গুরুত্বপূর্ণ সেই বিষয়ে আরও জানতে, আমাদের পারফর্ম্যান্স নির্দেশিকা দেখুন।
XR-নির্দিষ্ট পারফর্ম্যান্স ফিচার
আমরা দুটি XR-নির্দিষ্ট পারফর্ম্যান্স ফিচার কভার করে শুরু করতে চলেছি: ফোভিয়েটেড রেন্ডারিং ও ভালকান সাবস্যাম্পলিং।
ফোভিয়েটেড রেন্ডারিং
ফোভিয়েটেড রেন্ডারিং হল একটি অপ্টিমাইজেশন যার দুটি মোড আছে। প্রথমটি হল স্ট্যাটিক মোড যা স্ক্রিনের কেন্দ্রকে আরও বেশি রেজোলিউশনে রেন্ডার করে এবং আপনি যত দূরে তাকাবেন, রেজোলিউশন তত কমতে থাকবে।
দ্বিতীয়টি হল আই-ট্র্যাকিং মোড যা আপনি যেখানে দেখছেন সেই অংশটি সম্পূর্ণ বিবরণ সহ রেন্ডার করে, তবে আপনার পেরিফেরাল অংশে দেখানো কোয়ালিটি কমিয়ে দেয়। এটি মূলত মানুষের দৃষ্টিশক্তি কীভাবে কাজ করে তা অনুকরণ করে — যেখানে আমরা শুধুমাত্র সেই নির্দিষ্ট অংশে সূক্ষ্ম বিবরণ দেখতে পাই যেখানে আমরা ফোকাস করছি।
ফোভিয়েটেড রেন্ডারিং ব্যবহারকারীর জন্য অনুভূত ছবির কোয়ালিটি ত্যাগ না করেই GPU ওয়ার্কলোড উল্লেখযোগ্যভাবে কমিয়ে দেয়। ফোভিটেড রেন্ডারিংয়ের সুবিধা হল, ব্যবহারকারীরা তাদের পেরিফেরাল ভিশনে কোয়ালিটি কমে যাওয়া লক্ষ্য করবেন না, কিন্তু আপনার GPU অবশ্যই উন্নত পারফর্ম্যান্স লক্ষ্য করবে।
ধরে নিন, আপনি জটিল 3D আর্টিফ্যাক্ট সহ একটি মিউজিয়াম অভিজ্ঞতা তৈরি করছেন। ফোভিয়েটেড রেন্ডারিং না থাকলে, ‘ফিল্ড অফ ভিউ’-এর মধ্যে থাকা সবকিছু রেন্ডার করার চেষ্টা করলে, ৯০fps বজায় রাখতে অসুবিধা হবে। ফোভিয়েটেড রেন্ডারিংয়ের মাধ্যমে, ব্যবহারকারী যেখানে দেখছেন, সেখানে হাই-পলি ডিটেল বজায় রাখতে পারবেন, কিন্তু ব্যাকগ্রাউন্ড এনভায়র্নমেন্ট কম কোয়ালিটিতে রেন্ডার করা হবে। আপনার ব্যবহারকারীরা পার্থক্য বুঝতে পারবেন না, তবে আপনার দৃশ্যে আরও বিবরণ যোগ করার জন্য আপনার কাছে জায়গা থাকবে।
Vulkan সাবস্যাম্পলিং
Vulkan Subsampling হল ফোভিয়েটেড রেন্ডারিংয়ের সবচেয়ে ভালো বন্ধু। ফোভিয়েটেড রেন্ডারিং যখন বিভিন্ন কোয়ালিটি লেভেলে কী রেন্ডার করতে হবে তা ঠিক করে, তখন ফ্র্যাগমেন্ট ডেনসিটি ম্যাপ ব্যবহার করে বিভিন্ন কোয়ালিটি লেভেল কীভাবে দক্ষতার সাথে রেন্ডার করতে হবে তা Vulkan সাবস্যাম্পলিং হ্যান্ডেল করে।
ফোভিয়েটেড রেন্ডারিংয়ের সাথে একত্রিত হলে, Vulkan Subsampling আপনাকে পারফর্ম্যান্সের অতিরিক্ত ০.৫ms দেয়। এছাড়াও, এটি আপনার পেরিফেরাল ভিশনে অমসৃণ প্রান্তগুলিকে মসৃণ করতে সাহায্য করে, যার ফলে সামগ্রিক ছবি আরও পরিষ্কার দেখায়।
যেমন, ফ্লাইট সিমুলেটর গেমে ব্যবহারকারীরা যেখানে ইনস্ট্রুমেন্ট ও কন্ট্রোলের উপর ফোকাস করেন, সেখানে ফোভিটেড রেন্ডারিংয়ের সাথে Vulkan সাবস্যাম্পলিং যোগ করলে, কন্ট্রোলগুলি স্পষ্টভাবে রেন্ডার হয়, কিন্তু ককপিটের বাইরের অংশ কম রিসোর্স ব্যবহার করে। অতিরিক্ত ০.৫ms খুব বেশি কিছু মনে না হলেও, এটি অতিরিক্ত ইন্ট্যার্যাক্টিভ এলিমেন্ট যোগ করার সুযোগ করে দেয় অথবা তীব্র মুহূর্তগুলিতে ফ্রেম ড্রপ করার সম্ভাবনা কমিয়ে দেয়।
জটিল দৃশ্যের জন্য GPU ফিচার
ফোভিয়েটেড রেন্ডারিং ও Vulkan সাবস্যাম্পলিং ছাড়াও, কিছু GPU ফিচার আছে যা স্মার্ট ইনস্ট্যান্সিং ও কালির মাধ্যমে অপ্রয়োজনীয় চাপ কমায়। এগুলি বিশেষ করে জটিল দৃশ্যের ক্ষেত্রে কার্যকর, যেখানে একই ধরনের জ্যামিতি বারবার ব্যবহার করা হয় বা যেখানে কোনও বস্তু আড়াল হয়ে থাকে।
GPU রেসিডেন্ট ড্রয়ার
GPU রেসিডেন্ট ড্রয়ার অটোমেটিক GPU ইনস্ট্যান্সিং ব্যবহার করে ড্র কল কমায় এবং CPU প্রসেসিং টাইম ফ্রি করে। তাই, CPU, GPU-কে প্রতিটি অবজেক্টের ব্যাপারে আলাদা আলাদা করে বলার পরিবর্তে, GPU একই ধরনের অবজেক্টগুলিকে একসাথে ব্যাচ করে।
এই ফিচারটি বড় বড় দৃশ্যের ক্ষেত্রে সবচেয়ে বেশি কার্যকর হয়, যেখানে একই ধরনের অনেক মেস থাকে, যেমন, জঙ্গলের গাছ, অফিস বিল্ডিংয়ের আসবাবপত্র অথবা কোনও পরিবেশে ছড়িয়ে ছিটিয়ে থাকা প্রপ।
একই বেস মেশ ব্যবহার করে ২০০টি গাছ সহ একটি বনের দৃশ্য কল্পনা করুন। GPU রেসিডেন্ট ড্রয়ার না থাকলে, আপনার কাছে ২০০টি ড্র কল আছে যা GPU-কে ব্যবহার করে, তাই CPU ফ্রি হয়ে যায়। এই ফিচার চালু করলে, GPU বুদ্ধিদীপ্তভাবে সেইসব গাছকে ইনস্ট্যান্স করবে, যার ফলে ড্র কল কমে গিয়ে ৫-১০টি হয়ে যাবে। এটি একটি বিশাল GPU সাশ্রয় যা আপনি গেমপ্লে লজিক বা পদার্থবিদ্যা গণনায় বিনিয়োগ করতে পারেন।
GPU অক্লুশন কালিং
GPU অক্লুশন কালিং, লুকানো অবজেক্ট শনাক্ত ও রেন্ডার করা এড়ানোর জন্য CPU-এর পরিবর্তে GPU ব্যবহার করে। এটি অটোমেটিক শনাক্ত করে যে অন্য অবজেক্টের পিছনে কী ঢাকা (লুকানো) আছে, তাই ব্যবহারকারী দেখতে পাচ্ছেন না এমন জিনিসের জন্য আপনার GPU নষ্ট হচ্ছে না।
এই ফিচারটি বিশেষ করে একাধিক রুম, ঘনবসতিপূর্ণ পরিবেশ বা স্থাপত্য দৃশ্য সহ ইনডোর স্পেসে খুব কার্যকর, যেখানে দেওয়াল, মেঝে এবং বস্তুগুলি স্বাভাবিকভাবেই ভিউ ব্লক করে।
যেমন, আপনি যদি মাল্টি-রুম হোম এক্সপিরিয়েন্স তৈরি করেন। ব্যবহারকারী যখন লিভিং রুমে আছেন, তখন কেন সম্পূর্ণ বিস্তারিত কিচেন রেন্ডার করে GPU সাইকেল নষ্ট করা হবে, যেটি একটি দেওয়ালের পিছনে সম্পূর্ণভাবে লুকানো আছে? GPU Occlusion Culling অটোমেটিক সেইসব লুকানো অবজেক্ট রেন্ডার করা এড়িয়ে যায়, যা আপনাকে আসলে দেখা যাচ্ছে এমন কন্টেন্টের জন্য আরও বেশি পারফর্ম্যান্স বাজেট দেয়।
আপনার পারফর্ম্যান্স মনিটর করা
শুধু এইসব ফিচার ব্যবহার করলেই চলবে না। এছাড়াও, আপনাকে অপ্টিমাইজেশন পরিমাপ করতে হবে, যাতে আপনি সেগুলির প্রভাব পরিমাপ করতে পারেন এবং আপনার করা পরিবর্তনগুলি আসলে কাজ করছে কিনা তা যাচাই করতে পারেন।
পারফর্ম্যান্স মেট্রিক্স API
পারফর্ম্যান্স মেট্রিক API আপনার অ্যাপের মেমরি ব্যবহার, সিপিইউ পারফর্ম্যান্স ও জিপিইউ পারফর্ম্যান্সের রিয়েল-টাইম মনিটরিং প্রদান করে। এটি আপনাকে কম্পোজিটর ও রানটাইম লেয়ার থেকে সামগ্রিক ডেটা দেয়, যাতে আপনার অ্যাপ্লিকেশনে ঠিক কী ঘটছে তা আপনি দেখতে পারেন।
পরিবর্তন করার আগে একটি বেসলাইন তৈরি করুন, অপ্টিমাইজেশন প্রয়োগ করুন, প্রভাব পরিমাপ করুন এবং পুনরাবৃত্তি করুন। ডেটা-নির্ভর এই পদ্ধতির অর্থ হল, আপনি জানেন যে আপনি আসলে পারফর্ম্যান্স উন্নত করছেন, অনুমান করছেন না।
ফোভিয়েটেড রেন্ডারিং চালু করার আগে, আপনার GPU ফ্রেম টাইম ১৩ms হতে পারে, যা আপনার ১১ms বাজেটের বেশি। ফোভিয়েটেড রেন্ডারিং চালু করুন, আবার পরিমাপ করুন এবং আশা করি আপনি দেখবেন যে এটি কমে ৯ms হয়ে গেছে। এর ফলে আপনার দৃশ্যে আরও বিবরণ যোগ করতে, অন্য কোথাও ভিজ্যুয়াল কোয়ালিটি উন্নত করতে অথবা আরও বেশি কন্টেন্ট জুড়ে আরও মসৃণ পারফর্ম্যান্স নিশ্চিত করতে ৪ মিলিসেকেন্ডের হেডরুম পাওয়া যায়।
এইসব মেট্রিক ছাড়া, আপনি অন্ধভাবে অপ্টিমাইজ করছেন। পারফর্ম্যান্স মেট্রিক API আপনাকে সেইসব বিষয় সম্পর্কে সঠিক তথ্য দেয় যা আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে সাহায্য করে।
ফ্রেম ডিবাগার
ফ্রেম ডিবাগার হল Unity-এর বিল্ট-ইন টুল যা আপনার সিন কীভাবে রেন্ডার করা হচ্ছে তা ফ্রেম-বাই-ফ্রেম বুঝতে সাহায্য করে। এটি আপনাকে ড্র কলগুলির ক্রম দেখায় এবং আপনার অপ্টিমাইজেশন সঠিকভাবে কাজ করছে কিনা তা যাচাই করার জন্য আপনাকে সেগুলির মাধ্যমে ধাপে ধাপে যেতে দেয়।
SRP Batcher কাজ করছে কিনা তা কনফার্ম করতে চান? ফ্রেম ডিবাগার টুলে 'RenderLoopNewBatcher' এন্ট্রি খুঁজুন। GPU রেসিডেন্ট ড্রয়ার সঠিকভাবে ব্যাচিং করছে কিনা তা চেক করা হচ্ছে? 'হাইব্রিড ব্যাচ গ্রুপ' এন্ট্রি খুঁজুন। এইসব ভিজ্যুয়াল কনফার্মেশন থেকে আপনি বুঝতে পারবেন যে আপনার অপ্টিমাইজেশন সেটিংস আসলে কাজ করছে কিনা।
আপনার দৃশ্যের প্রথম ৫০টি ড্র কল ধাপে ধাপে দেখুন। আপনি যদি দেখেন যে ব্যাচ না করে একই ধরনের অবজেক্ট আলাদা আলাদা করে ড্র করা হচ্ছে, তাহলে বুঝতে হবে যে আপনার ইনস্ট্যান্সিং বা ব্যাচিং সঠিকভাবে কাজ করছে না। ফ্রেম ডিবাগার এই সমস্যাগুলি সঙ্গে সঙ্গে দৃশ্যমান করে তোলে যাতে আপনি সেগুলি সমাধান করতে পারেন।
অতিরিক্ত অপ্টিমাইজেশন
উপরে উল্লেখ করা অপ্টিমাইজেশন ছাড়াও, আমাদের সম্পূর্ণ পারফর্ম্যান্স গাইডে আরও কিছু অতিরিক্ত অপ্টিমাইজেশন সম্পর্কে বলা আছে। এখানে একটি সংক্ষিপ্ত বিবরণ দেওয়া হল:
- URP সেটিংস: মোবাইল XR-এর জন্য HDR ও পোস্ট প্রসেসিং বন্ধ করুন। এইসব ফিচার মোবাইল হার্ডওয়্যারে পারফর্ম্যান্সের খরচের তুলনায় ন্যূনতম ভিজ্যুয়াল প্রভাব প্রদান করে, তাই আপনি পরিমাপযোগ্য পারফর্ম্যান্সের উন্নতি পাবেন এবং ভিজ্যুয়াল পার্থক্য প্রায় দেখাই যাবে না।
- SRP Batcher: একই শেডার ভেরিয়েন্ট ব্যবহার করে এমন অনেক মেটেরিয়াল সহ দৃশ্যের জন্য CPU ওভারহেড কমায়। ড্র কলের মধ্যে রেন্ডার-স্টেট পরিবর্তন কমানোর মাধ্যমে, আপনি রেন্ডারিংয়ে CPU-এর খরচ করা সময় উল্লেখযোগ্যভাবে কমাতে পারবেন।
- ডিসপ্লে রিফ্রেশ রেট: দৃশ্যের জটিলতার উপর ভিত্তি করে ৭২fps থেকে ৯০fps-এর মধ্যে ডায়নামিক অ্যাডজাস্টমেন্ট। স্থিতিশীলতা বজায় রাখতে জটিল সিকোয়েন্সের সময় ফ্রেম রেট কমিয়ে দিন, তারপর আল্ট্রা-স্মুথ ইন্টার্যাকশনের জন্য তুলনামূলক সহজ মুহূর্তের সময় ফ্রেম রেট বাড়িয়ে দিন।
- গভীরতা/অস্বচ্ছ টেক্সচার: শেডার এফেক্টের জন্য বিশেষভাবে প্রয়োজন না হলে এগুলি বন্ধ করে দিন। এগুলি অপ্রয়োজনীয় GPU কপি করার অপারেশন ঘটায় যা বেশিরভাগ অ্যাপ্লিকেশনের জন্য কোনও সুবিধা প্রদান না করেই পারফর্ম্যান্স নষ্ট করে।
- URP রেন্ডার স্কেল: এই সেটিং আপনাকে পারফর্ম্যান্সের সুবিধা পেতে কম রেজোলিউশনে রেন্ডার করতে বা উন্নত ভিজ্যুয়াল কোয়ালিটির জন্য রেন্ডারিং আপস্কেল করতে দেয়।
এইসব ও আরও অপ্টিমাইজেশন সংক্রান্ত ধাপে ধাপে নির্দেশাবলীর জন্য, Android XR-এর জন্য আমাদের সম্পূর্ণ Unity পারফর্ম্যান্স গাইড দেখুন।
সিদ্ধান্ত
আপনার XR অ্যাপের পারফর্ম্যান্স শুধু টেকনিক্যাল চেকবক্স নয়। এটি আরামদায়ক, এনগেজিং অভিজ্ঞতা এবং এমন অভিজ্ঞতার মধ্যে পার্থক্য করে যা ব্যবহারকারীকে অসুস্থ বা অস্বস্তিকর করে তোলে। আমরা যেসব অপ্টিমাইজেশন কভার করেছি, সেগুলি হল লেটেস্ট XR ডিভাইসে সেইসব গুরুত্বপূর্ণ ফ্রেমরেট টার্গেটে পৌঁছানোর জন্য আপনার টুলকিট।
আপনার রোডম্যাপ এখানে দেওয়া হল:
- ফোভিয়েটেড রেন্ডারিং ও Vulkan সাবস্যাম্পলিং দিয়ে শুরু করুন। এইসব XR-নির্দিষ্ট ফিচার, GPU-তে তাৎক্ষণিক ও উল্লেখযোগ্য সাশ্রয় প্রদান করে।
- আপনার কাছে যদি রিপিট করা জিওমেট্রি বা ইন্টিরিয়র স্পেস সহ জটিল দৃশ্য থাকে, তাহলে GPU রেসিডেন্ট ড্রয়ার এবং অক্লুশন কালিং যোগ করুন।
- আপনার করা পরিবর্তনগুলি সত্যিই সাহায্য করছে কিনা তা নিশ্চিত করতে পারফর্ম্যান্স মেট্রিক্স API-এর মাধ্যমে সবকিছু মনিটর করুন
- আরও ভালো পারফর্ম্যান্সের জন্য অতিরিক্ত URP অপ্টিমাইজেশন এক্সপ্লোর করা
ক্রমাগত পরিমাপ করা এবং পুনরাবৃত্তি করা খুবই গুরুত্বপূর্ণ। প্রতিটি অপ্টিমাইজেশন প্রতিটি প্রোজেক্টকে সমানভাবে উপকৃত করবে না, তাই আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে কী সাহায্য করে তার একটি স্পষ্ট ধারণা পেতে পারফর্ম্যান্স মেট্রিক্স API ব্যবহার করুন।
এরপর কী: আপনার দক্ষতা বাড়ানো
আরও গভীরে ডুব দিতে চান? এই সব রিসোর্স চেক করে দেখুন:
- Android XR-এর জন্য Unity পারফর্ম্যান্স গাইড - এখানে উল্লেখ করা সব ফিচারের জন্য ধাপে ধাপে প্রয়োগ করার নির্দেশাবলী।
- Unity ও Android XR-এর সাথে শুরু করা - আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করুন এবং তৈরি করা শুরু করুন।
- Android XR ডেভেলপার ডকুমেন্টেশন - সব Android XR ফিচারের জন্য বিস্তারিত গাইড
-
প্রোডাক্ট সম্পর্কিত খবরআমরা আনন্দের সাথে ঘোষণা করছি যে Android XR-এর জন্য Unreal Engine ও Godot-এর অফিসিয়াল সহায়তা উপলভ্য হয়েছে। এছাড়াও, আপনার প্রোডাক্টিভিটি বাড়াতে এবং নতুন XR ক্ষমতা চালু করতে ডিজাইন করা নতুন টুল লঞ্চ করছি: Android XR Engine Hub এবং Android XR Interaction Framework।
Luke Hopkins, Ryan Bartley • ৪ মিনিট রিডিং টাইম -
প্রোডাক্ট সম্পর্কিত খবরAndroid ডেভেলপার হিসেবে, অ্যাপ ডেভেলপমেন্টের জন্য আপনি যেসব এজেন্ট, LLM, টুল ও কমান্ড-লাইন ইন্টারফেস (CLI) ব্যবহার করেন, সেই ব্যাপারে আপনার কাছে অনেক বিকল্প আছে। আপনি যেভাবে তৈরি করতে চান না কেন, আমাদের লক্ষ্য হল আপনাকে সুন্দর, হাই-কোয়ালিটি Android অ্যাপ তৈরি করতে সাহায্য করা।
Simona Milanovic • ৪ মিনিট রিডিং টাইম -
প্রোডাক্ট সম্পর্কিত খবরGoogle Play-তে, আমরা ক্রমাগত আমাদের সাবস্ক্রিপশন প্ল্যাটফর্মের পরিধি বাড়াচ্ছি যাতে আপনি ব্যবসা বাড়াতে, নতুন বিজনেস মডেলের সাথে মানিয়ে নিতে এবং ব্যবহারকারীদের ঠিক যেখানে প্রয়োজন সেখানে তাদের চাহিদা পূরণ করতে পারেন।
Sheenam Mittal • ৪ মিনিট রিডিং টাইম
আপনার ইনবক্সে প্রতি সপ্তাহে Android ডেভেলপমেন্ট সংক্রান্ত লেটেস্ট ইনসাইট পান।