ওপেনজিএল ইএস 2.0 এর সাথে কী পিছিয়ে দেওয়া রেন্ডারিং / শেডিং সম্ভব?


20

আমি এটি স্ট্যাকওভারফ্লোতে জিজ্ঞাসা করেছি , তবে এটি এখানে আরও বোধ করতে পারে:

ওপেনজিএল ইএস ২.০ এর আওতায় কেউ কি পিছিয়ে দেওয়া রেন্ডারিং / শেড প্রয়োগ করেছে? এটি এমআরটিগুলি সমর্থন করে না, তাই শুধুমাত্র একটি রঙের বাফার দিয়ে, এটি এমন কিছু নয় যা "স্বাভাবিক" পদ্ধতিতে প্রয়োগ করা যেতে পারে।

বিশেষত, আমি আইপ্যাড, আইফোন 4 (মায়াবে আইফোন 3 জিএস) এবং অ্যান্ড্রয়েডে অন্বেষণ করছি। আইপ্যাড / আইফোন 4 / আইফোন 3 আইজে জিএলইএসভিউ অ্যাপ্লিকেশনটিতে, জিএল_ওইএস_আরজিবি 8_আরজিবিএ 8 এক্সটেনশন উপস্থিত রয়েছে এবং আমি এখনও খুব গভীরভাবে দেখিনি, তবে 8 বিট / চ্যানেল সহ, এই ধারণাটি আকর্ষণীয়: http://www.gamedev.net/topic/ 562138-OpenGL-স্প্যানিশ ভাষায়-20-এবং-ডেফার্ড-ছায়াকরণ /

অন্য কোন ধারণা? এটি কি পারফর্মেন্স-ভিত্তিক কি মূল্যবান?


হ্যাঁ এটা সম্ভব.
কাজী ইরফান

7
কোন কৌশল (গুলি) এর মাধ্যমে?
জিম বাক

উত্তর:


15

হ্যা এটা সম্ভব. তবে এটি বিশেষভাবে সার্থক নয়।

প্রথমত, যদি না আপনার এনভি_ড্রে_বফার এক্সটেনশনে অ্যাক্সেস থাকে (নামটি বোঝা যাচ্ছে এটি কেবল এনভিআইডিআইএ So সুতরাং আপনি টেগ্রায় চালনা না করা অবধি আপনার এটি নেই), ES 2.0 এর অধীন ফ্রেমবফার অবজেক্টগুলি কেবল একটি চিত্রকে রেন্ডার করতে পারে একেবারে. সুতরাং আপনার জি-বাফারগুলি তৈরি করতে আপনাকে আপনার দৃশ্যটি একাধিকবার রেন্ডার করতে হবে, এইভাবে পিছিয়ে দেওয়া রেন্ডারিংয়ের সুবিধাগুলির একটি হরণ করে away

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

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


6

মূল সমস্যাটি ফিল্রেট। মোবাইল জিপিইউগুলিতে, আপনার পূরণের হার কম যে আপনি স্থানীয় রেজোলিউশনে রিয়েলটাইমে ডেফার্ড শেডিং করতে পারবেন না do

আইফোন 4 এবং আইপ্যাড 1-তে, পূরণগুলি কেবল হাস্যকর। ভাল ফিল্রেটযুক্ত একমাত্র ডিভাইস আইওএস আইপ্যাড 2, তবে আমার সন্দেহ আছে যে যথেষ্ট আছে ... অ্যান্ড্রয়েডে, কেবলমাত্র টেগ্রা ডিভাইসগুলিতে এমআরটি ব্যবহারের জন্য জিএল_এনভি_ড্রা_বফার রয়েছে তবে ফিল্রেট খুব কম। মালি 400 মনে হয় সেরা পূরণ করুন। আপনি যদি কান্নাকাটি চান, কেবল 4 বার পূর্ণস্ক্রিন রেজোলিউশনে রঙের আয়তক্ষেত্রটি পূরণ করার চেষ্টা করুন ... অনেক ডিভাইস এটি 60 fps করতে পারে না।

ডেস্কটপ জিপিইউতে আপনার মোবাইল জিপিএস হিসাবে 10 বার (বা আরও বেশি) পূরণ করতে হবে। ভুলে যাবেন না যে মোবাইল জিপিইউগুলি সিপিইউ হিসাবে একই মেমরি ব্যবহার করে এবং আপনার ডেডিকেটেড মেমরি নেই।

ওয়েবজিএলে (একই এপিআই) কয়েকটি উদাহরণ রয়েছে যাতে এটি এপিআইয়ের সীমাবদ্ধতা নয়।


1
দুর্বলতা পূরণ করতে +1 আমি এমনকি গাউসিয়ান ব্লারকে 60fps এ 1536x2048 রেজোলিউশনে চালাতে পারি না (এটি অবিলম্বে ফ্রেম রেটটি 30fps পর্যন্ত নামিয়ে ফেলেছিল, এমনকি মাত্র 4 টি নমুনা
নিয়েও

1
আমি মনে করি এটি আপনার প্রয়োগের সূক্ষ্মতার উপর এবং মোবাইল হার্ডওয়্যারটিতে সবচেয়ে বেশি কী প্রভাব ফেলে তা বোঝার উপর নির্ভর করে। উদাহরণস্বরূপ, এই ছেলেরা ২০১২ সালে একটি পরিমিত পারফরম্যান্ট ডওএফ অস্পষ্টতা করেছে।
ইঞ্জিনিয়ার

1

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

আমি নিম্নলিখিত GBuffer ফর্ম্যাট জন্য যেতে হবে:

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

মুলতুবি প্রদাহ স্থলিত রেন্ডারিংয়ের সমান, আপনি দু'বার এই দৃশ্যটি রেন্ডার না করে:

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

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

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


discardটাইল-ভিত্তিক পাইপলাইনগুলির জন্য সত্যিই খারাপ, যা অনেক / সর্বাধিক মোবাইল জিপিইউ ব্যবহার করে।
ইঞ্জিনিয়ার 12

1

বিলম্বিত আলো বিবেচনা করুন। সংক্ষেপে, মুলতুবি আলো এমন একটি কৌশল যা স্ক্রিনস্পেস লাইটম্যাপ গণনা করতে পিছনে শেডের হ্রাস করা সংস্করণ ব্যবহার করে। দ্বিতীয় পাসে জ্যামিতিটি আলোকিত তথ্য হিসাবে স্ক্রিনস্পেস লাইটম্যাপ ব্যবহার করে আবার রেন্ডার করা হয়।

এই কৌশলটি জি-বাফারের আকার হ্রাস করতে ব্যবহৃত হয়, কারণ কম অ্যাট্রিবিউটগুলির প্রয়োজন হয়। এটি আপনার সুবিধাটি কেনে, জি-বাফার এবং স্ক্রিনস্পেস লাইটম্যাপটি স্ক্রিনের চেয়ে কম রেজোলিউশনের হতে পারে।

আমি একটি কঠোর GLES 2.0 ভিত্তিক রেন্ডারার প্রয়োগ করেছি (যদিও এটি একটি পরীক্ষামূলক) এবং আমি জি-বাফারটিকে একটি আরজিবিএ টেক্সচারে সিদ্ধ করতে পেরেছি (হ্যাঁ, আমি একটি রেন্ডারবুফারের পরিবর্তে টেক্সচার 2 ডি ব্যবহার করেছি)। এটিতে স্ক্রিন স্পেসের সাধারণ মানচিত্র + আলফা চ্যানেলে গভীরতা বাফার রয়েছে (যা লোগারিদম ব্যবহার করে সংকুচিত হয়েছিল, যতদূর আমার মনে আছে)।

অবস্থান বৈশিষ্ট্যাবলী (যাকে বলা হয় বিশ্বের এখানে), আসলে ব্যবহার করে একটি perspectivic অভিক্ষেপ মধ্যে, আলো পাস সময় গণনা করা যেতে পারে .xy দ্বারা devided হয় .z , যাতে করে:

এক্সYRতোমার দর্শন লগ করাগুলিটিতোমার দর্শন লগ করামি=এক্সYWR/z- রWR

আমি পজিশন অ্যাট্রিবিউটের এক্সওয়াই প্রায় করে দিয়েছি :

এক্সYWR=এক্সYRতোমার দর্শন লগ করাগুলিটিতোমার দর্শন লগ করামি*z- রWR

দ্রষ্টব্য: প্রজেকশন ম্যাট্রিক্সের সেটিংসের উপর নির্ভর করে আমাকে আরও সামঞ্জস্য করতে হয়েছিল।

আরও লক্ষণীয় যে, আমি সাধারণ ভেক্টরগুলির .z উপাদান বাদ দিতে সক্ষম হয়েছি , যেহেতু আমি .x থেকে .z পুনর্গঠন করতে পারছি যেহেতু সাধারণ ভেক্টরটি স্বাভাবিক করা হয়েছে:

এক্স2+ +Y2+ +z- র2=1এক্স2+ +Y2+ +z- র2=1z- র2=1-(এক্স2+ +Y2)z- র=1-(এক্স2+ +Y2)

এই কৌশলটি ব্যবহার করে, আমি আমার আরজিবিএ জি-বাফারটিতে অন্য একটি চ্যানেল মুক্ত করতে সক্ষম হয়েছি এবং স্ক্রিনের স্পেস স্পিকারুলার-ম্যাপে (বা চকচকে, যদি আপনি চান) সঞ্চয় করতে এটি ব্যবহার করেছিলাম।


বিটিডাব্লু: আমার রেন্ডারার কোনও গেম ইঞ্জিনের সাথে সংযুক্ত ছিল না। সুসান রেন্ডার করে এটি মার্লি আ হ্যালো ওয়ার্ল্ড ডেমো ছিল।
সাইমন শ্মিট

0

হ্যাঁ, এটা একেবারেই সম্ভব। ভরাট হার কোনও সমস্যা নয় কারণ মোবাইল গ্রাফিক্স চিপগুলি খুব উচ্চ রেজোলিউশনের স্ক্রিনগুলি মোকাবেলার জন্য ডিজাইন করা হয়েছে। প্রকৃতপক্ষে, পিছিয়ে দেওয়া রেন্ডারিং এটির সাথে সহায়তা করে কারণ আপনার আলোক গণনা দৃশ্যের জটিলতা থেকে স্বতন্ত্র, সুতরাং ওভারড্রো কোনও মন্দার কারণ হয় না। চতুর্থ প্রজন্মের আইপ্যাডে আমার বাস্তবায়নটি এখানে রয়েছে: http://www.youtube.com/watch?v=K4X1oF6b4V8

আপনি যদি চারবার পারফরম্যান্স চান, আপনি যে টেক্সচারটি রেন্ডার করেন তার ঠিক অর্ধেক রেজোলিউশন। যাইহোক, রেটিনা স্ক্রিনে 3 ডি গ্রাফিক্সের সাথে আমি সত্যিই আলাদা দেখতে পাচ্ছি না।

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

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


3
"মোবাইল গ্রাফিক্স চিপগুলি যেহেতু রেন্ডার-টু টেক্সচার হ্যান্ডেল করে তার কারণেই তারা খুব ভাল re কোনও পারফরম্যান্স হিট না করে এটি করার জন্য ডিজাইন করা হয়েছে। এটি সেখানে একটি বিশাল দৃ as়তা। এই দাবির পিছনে ফিরে যাওয়ার জন্য আপনার কি কোনও নামী রেফারেন্স রয়েছে?
পান্ডা পাইজামা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.