ওপেনজিএল ইএস 2.0 তে জ্যামিতি ইনস্ট্যান্সিং


12

আমি ওপেনজিএল ইএস ২.০ তে জ্যামিতি ইনস্ট্যান্সিং করার পরিকল্পনা করছি মূলত আমি আমার দৃশ্যে একই জ্যামিতি (চেয়ার) রেন্ডার করার পরিকল্পনা করছি।

ওপেনজিএল ইএস 2.0 তে এটি করার সর্বোত্তম উপায় কী?

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

এটি জিপিইউতে প্রেরিত প্রচুর অতিরিক্ত ডেটার পরিমাণ (2 অতিরিক্ত উল্লম্ব * 16 ভাসমান * (ত্রিভুজের সংখ্যা) অতিরিক্ত ডেটা পরিমাণ)।

বা আমি কি কেবল ত্রিভুজ প্রতি ম্যাট 4 প্রেরণ করব? তবে বৈশিষ্ট্যগুলি "প্রতি ভার্টেক্স" ডেটা হিসাবে সংজ্ঞায়িত করা থেকে বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করা সম্ভব?

ওপেনজিএল ইএস ২.০ এ ইনস্ট্যান্সিং করার সর্বোত্তম এবং কার্যকর উপায় কোনটি?


3
আমি সত্যিই মিস্ glVertexAttribDivisor:(
উইল

উত্তর:


9

ES2 তে কোনও glVertexAtribDivizer বা ভাসমান পয়েন্ট টেক্সচার নেই তাই আপনার বিকল্পগুলি বেশ সীমিত।

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

আপনি নিয়মিত glUniform কল দিয়ে এটি করতে পারেন, বা আপনি কিছু অতিরিক্ত ভার্টেক্স অ্যাট্রিবিউট স্লটগুলি অপব্যবহার করতে পারেন এবং কিছু চেয়ার তৈরি করতে পারেন (দ্রষ্টব্য: glVertexAttribPointer নয়) প্রতিটি চেয়ার আঁকার আগে কল, এই জাতীয় 4 টি স্লট ব্যবহার করে ম্যাট্রিক্স উল্লেখ করে এবং এই মানগুলি "স্টিক" করবে চেয়ারে প্রতিটি পরবর্তী ভার্টেক্স। এটি কিছু হার্ডওয়ারের পক্ষে দ্রুত পর্যাপ্ত পথ হতে পারে তবে অন্যের চেয়ে ধীর গতির হতে পারে তাই আপনাকে পরীক্ষা করতে হবে।

যদি আপনার চেয়ারগুলি অন্য কোনও জিনিস ঘোরান না তবে আপনি যা করতে পারেন তা হ'ল কেবল আপনার শেডারে অবস্থান পাঠান এবং সেখানে উড়ে যাওয়ার জন্য একটি নতুন রূপান্তর ম্যাট্রিক্স তৈরি করুন। এটি ভয়াবহ শোনায় তবে এটি আসলে অবিশ্বাস্যরূপে দ্রুত (এটি কেবলমাত্র 3 টি ফ্লোট স্থাপন করছে) এবং এটি কাজটিও করতে পারে।

যদিও সামগ্রিকভাবে, এবং ধরে নিচ্ছেন যে আপনি একটি সাধারণ মোবাইল প্ল্যাটফর্মের জন্য লক্ষ্য রেখেছেন, আমি ভাবছি যে আপনি যা করেন না কেন, কলগুলি আপনাকে মেরে ফেলবে।


6

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


3

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

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


+1 যাইহোক, আমি এখনও নিশ্চিত নই যে এনভিডিয়া পাঠ্যটি মোবাইল পিভিআর চিপগুলিতে প্রযোজ্য। বিশেষত ড্রাইভার অংশ সম্পর্কে তাদের উল্লেখ সম্পর্কে । http.download.nvidia.com/developer/SDK/Individual_Sample/DEMOS/…
ইনিল

1

http://www.youtube.com/watch?v=rfQ8rKGTVlg

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

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

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