সংস্করণ ৪.১ অনুসারে ওপেনজিএলে পাঠ্য রেন্ডারিংয়ের জন্য অত্যাধুনিক কী? [বন্ধ]


199

ওপেনজিএলে পাঠ্য রেন্ডারিং সম্পর্কে ইতিমধ্যে বেশ কয়েকটি প্রশ্ন রয়েছে যেমন:

তবে বেশিরভাগই যা আলোচনা করা হয় তা হ'ল ফিক্সড ফাংশন পাইপলাইন ব্যবহার করে টেক্সচারযুক্ত কোয়াডগুলি উপস্থাপন করা। নিশ্চয় শেডারদের অবশ্যই আরও ভাল উপায় তৈরি করতে হবে।

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

আধুনিক ওপেনজিএল ব্যবহার করে পাঠ্য-উপস্থাপনের জন্য প্রস্তাবিত পদ্ধতির কী? (এপ্রোচটি ব্যবহার করে বিদ্যমান সফ্টওয়্যার উদ্ধৃত করা এটি ভালভাবে কাজ করে তার ভাল প্রমাণ)

  • জ্যামিতি শেডারগুলি উদাহরণস্বরূপ পজিশন এবং ওরিয়েন্টেশন এবং একটি চরিত্রের ক্রম গ্রহণ করে এবং টেক্সচার্ড কোয়াডগুলি নির্গত করে
  • জ্যামিতি শেডারগুলি যা ভেক্টর ফন্টগুলি সরবরাহ করে
  • উপরের মতো, তবে পরিবর্তে টেসলেসেশন শেডারের ব্যবহার
  • ফন্ট রাস্টারাইজেশন করতে একটি গণনা শেডার

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

কিউএমএল 2 (কিউটি 5 এর) পাঠ্য রেন্ডার করার সময় ওপেনজিএল এবং দূরত্বের ক্ষেত্রগুলির সাথে কিছু আকর্ষণীয় কৌশল করে: ব্লগ.ক্ট.ডিগিয়া.com
blog

সুতরাং আমি এটি আবার হারাব না, এখানে একটি লাইব্রেরি রয়েছে যা ভালভের দূরত্বের ক্ষেত্র পদ্ধতিটি প্রয়োগ করে। কোড.google.com/p/glyphy আমি এটি চেষ্টা করি নি। এছাড়াও সম্ভবত এক নজরে
টিম্ম্ম্মে

7
এই "অফ-টপিক" হ'ল স্ট্যাক ওভারফ্লোর অভিশাপ। গম্ভীরভাবে?
নিকোলোস গিয়টিস

1
আরো সরল "এটা কিভাবে করতে হবে" সংস্করণ: stackoverflow.com/questions/8847899/...
সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


202

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

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

কৌশলটির জন্য বিখ্যাত ভালভ কাগজটি দেখুন ।

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

একক বিটের পরিবর্তে 8-বিট স্বাক্ষরিত দূরত্বের মানটি ব্যবহার করে, এই কৌশলটি আপনার টেক্সচার মানচিত্রের কার্যকর রেজোলিউশনকে প্রতিটি মাত্রায় 16 গুণ করে বাড়িয়ে তোলে (কালো এবং সাদা পরিবর্তে, সমস্ত সম্ভাব্য ছায়াগুলি ব্যবহার করা হয়, সুতরাং আমাদের 256 বার হয় একই স্টোরেজ ব্যবহার করে তথ্য)। আপনি যদি 16x ছাড়িয়েও বাড়িয়ে তোলেন তবে ফলাফলটি এখনও বেশ গ্রহণযোগ্য বলে মনে হচ্ছে। দীর্ঘ সরল রেখাগুলি অবশেষে কিছুটা ডাবলু হয়ে উঠবে, তবে কোনও আদর্শ "ব্লকি" নমুনা নিদর্শন থাকবে না।

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

আপনি যদি নিশ্চিত হন যে আপনার ফন্টে 256 টিরও বেশি অক্ষর নেই তবে টেক্সচার অ্যারেগুলি জ্যামিতির শেডারের পয়েন্টগুলি থেকে কোয়াড তৈরি করার মতোভাবে বাস ব্যান্ডউইদথকে সরিয়ে ফেলার জন্য বিবেচনাযোগ্য। অ্যারে টেক্সচার ব্যবহার করার সময়, সমস্ত কোয়াডের টেক্সচার সমন্বয়গুলির অভিন্ন, ধ্রুবক sএবং tস্থানাঙ্ক থাকে এবং কেবল স্থানাঙ্কে পৃথক হয় r, যা রেন্ডার করতে অক্ষর সূচকের সমান।
তবে অন্যান্য কৌশলগুলির মতো, পূর্ববর্তী প্রজন্মের হার্ডওয়্যারগুলির সাথে সামঞ্জস্যপূর্ণ না হওয়ার কারণে প্রত্যাশিত লাভগুলি প্রান্তিক।

দূরত্বের টেক্সচার তৈরি করার জন্য জোনাথন ডামারের একটি সহজ সরঞ্জাম রয়েছে: বিবরণ পৃষ্ঠা

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

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

  • কেবলমাত্র একটি অক্ষর সূচক আপলোড করুন (প্রদর্শিত প্রতিটি চরিত্রের প্রতি একটিকে) এই সূচকটিতে পাস হওয়া একটি ভার্টেক্স শ্যাডারের একমাত্র ইনপুট হিসাবে gl_VertexIDএবং জ্যামিতি শেডারে 4 পয়েন্টে বিস্তৃত করুন, এখনও অক্ষর সূচক এবং ভার্টেক্স আইডি রয়েছে (এটি "gl_primitiveID হবে ভার্টেক্স শ্যাডারে উপলব্ধ") একমাত্র বৈশিষ্ট্য হিসাবে, এবং রূপান্তর প্রতিক্রিয়াটির মাধ্যমে এটি ক্যাপচার করবে।
  • এটি দ্রুত হবে, কারণ কেবলমাত্র দুটি আউটপুট অ্যাট্রিবিউট (জিএসে মূল অটল) রয়েছে এবং এটি উভয় পর্যায়ে অন্যথায় এটি "নো-অপ্ট" এর কাছাকাছি।
  • একটি বাফার টেক্সচারকে বেঁধে রাখুন, যা ফন্টের প্রতিটি অক্ষরের জন্য, টেক্সচার্ড কোয়াডের শীর্ষস্থানটি বেস পয়েন্টের সাথে সম্পর্কিত (এগুলি মূলত "ফন্ট ম্যাট্রিক্স")। এই তথ্যটি কেবল নীচের বাম প্রান্তের অফসেট সংরক্ষণ করে এবং অক্ষ-সারিবদ্ধ বাক্সটির প্রস্থ এবং উচ্চতা এনকোড করে (অর্ধেক ভাসমান ধরে নেওয়া, এটি অক্ষরের প্রতি ধ্রুবক বাফারের 8 বাইট হবে - একটি সাধারণ 256 অক্ষর ফন্টটি L1 ক্যাশে 2kiB-তে পুরোপুরি ফিট করতে পারে)।
  • বেসলাইনের জন্য একটি ইউনিফর্ম সেট করুন
  • অনুভূমিক অফসেটের সাহায্যে একটি বাফার টেক্সচারটি আবদ্ধ করুন। এগুলি সম্ভবত জিপিইউতেও গণনা করা যেতে পারে, তবে এটি সিপিইউতে kind ধরণের জিনিসটির চেয়ে অনেক সহজ এবং দক্ষ। এছাড়াও, এটির জন্য আরও একটি প্রতিক্রিয়া পাসের প্রয়োজন হবে যা অন্য সিঙ্ক পয়েন্ট হবে।
  • প্রতিক্রিয়া বাফার থেকে পূর্বের উত্পন্ন ডেটা রেন্ডার করুন, ভার্টেক্স শ্যাডারটি বেস পয়েন্টের অনুভূমিক অফসেটটি এবং বাফার অবজেক্টগুলি থেকে কোণার শিখরের অফসেটগুলি টেনে আনবে (আদিম আইডি এবং অক্ষর সূচক ব্যবহার করে)। জমা দেওয়া শীর্ষবিন্দুগুলির মূল ভার্টেক্স আইডিটি এখন আমাদের "প্রিমিটিভ আইডি" (মনে রাখবেন যে জিএসটি শীর্ষেকে কোয়াডে পরিণত করেছে)।

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

যাইহোক, এমনকি 75% হ্রাস অনুমান করে - যেহেতু "যুক্তিসঙ্গত" পরিমাণের পাঠ্য সংখ্যাটি প্রদর্শনের জন্য শীর্ষস্থানীয় ডেটা কেবল কোথাও 50-100kiB (যা কার্যত শূন্য)কোনও জিপিইউ বা পিসিআই বাসে) - আমি এখনও সন্দেহ করি যে যুক্ত জটিলতা এবং পিছনে-সামঞ্জস্য হারাতে সমস্যাটি সত্যই মূল্যবান। শূন্য 75% কমানো এখনও শূন্য। আমি স্বীকার করেছি যে উপরোক্ত পদ্ধতির চেষ্টা করা হয়নি, এবং সত্যই যোগ্য বক্তব্য দেওয়ার জন্য আরও গবেষণার প্রয়োজন হবে। তবে এখনও, যদি না কেউ সত্যই অত্যাশ্চর্য পারফরম্যান্স পার্থক্য প্রদর্শন করতে পারে ("সাধারণ" পরিমাণে কয়েক বিলিয়ন অক্ষর ব্যবহার করে না)! একটি "শিল্প সমাধান রাষ্ট্র" অংশ হিসাবে বিবেচনা করা। এটি সহজ এবং সোজা, এটি কাজ করে এবং এটি ভালভাবে কাজ করে।

উপরে " ওপেনজিএল অন্তর্দৃষ্টি " ইতিমধ্যে রেফারেন্স থাকা সত্ত্বেও , স্টেফান গুস্তাভসনের "2 ডি শেপ রেন্ডারিং বাই ডিস্টেন্স ফিল্ডস" অধ্যায়টিও উল্লেখ করা ভাল যা দূরত্বের ক্ষেত্রের রেন্ডারিংকে বিশদভাবে ব্যাখ্যা করে।

২০১ 2016 আপডেট করুন:

এদিকে, বেশ কয়েকটি অতিরিক্ত কৌশল রয়েছে যার লক্ষ্যটি কোণার বৃত্তাকারগুলি সরিয়ে ফেলার লক্ষ্য যা চূড়ান্ত বিবর্ধনে বিরক্তিকর হয়ে ওঠে।

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

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

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


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

2
ওয়ার্কস এবং দুর্দান্ত দেখাচ্ছে, ভাগ করে নেওয়ার জন্য ধন্যবাদ! যারা এইচএলএসএল টুকরো ছাঁটাই উত্স চান তাদের জন্য এখানে দেখুন । আপনি (বা ) এর clip(...)সাথে লাইনটি প্রতিস্থাপন করে এটি জিএলএসএল-এর জন্য মানিয়ে নিতে পারেন । আছে HTH। if (text.a < 0.5) {discard;}text.a < threshold
ইঞ্জিনিয়ার

1
আপডেটের জন্য ধন্যবাদ. আমি আবার upvote করতে চান।
বেন ভয়েগট

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

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

15

http://code.google.com/p/glyphy/

জিএলফি এবং অন্যান্য এসডিএফ-ভিত্তিক ওপেনজিএল সরবরাহকারীদের মধ্যে প্রধান পার্থক্য হ'ল বেশিরভাগ অন্যান্য প্রকল্পগুলি এসডিএফকে একটি টেক্সচারে নমুনা দেয়। এটিতে নমুনা দেওয়ার মতো সমস্ত স্বাভাবিক সমস্যা রয়েছে। অর্থাৎ। এটি রূপরেখাটিকে বিকৃত করে এবং নিম্নমানের। GLyphy পরিবর্তে GPU- এ জমা দেওয়া প্রকৃত ভেক্টর ব্যবহার করে SDF উপস্থাপন করে। এটি খুব উচ্চ মানের রেন্ডারিংয়ের ফলাফল।

ক্ষতিটি হ'ল কোডটি ওপেনজিএল ইএস সহ আইওএসের জন্য। আমি সম্ভবত একটি উইন্ডোজ / লিনাক্স ওপেনজিএল 4.x পোর্ট তৈরি করতে যাচ্ছি (আশা করি লেখক যদিও কিছু বাস্তব ডকুমেন্টেশন যুক্ত করবেন)।


3
জি্লিফির প্রতি আগ্রহী যে কোনও ব্যক্তিরই সম্ভবত লিঙ্কনকনফ.উ. 2014 তে লেখকের বক্তব্যটি দেখা উচিত: youtube.com/watch?v=KdNxR5V7prk
ফিজ ফিজ

14

সর্বাধিক বিস্তৃত কৌশলটি এখনও টেক্সচারযুক্ত কোয়াড। তবে ২০০৫ সালে লরিয়া ভেক্টর টেক্সচার নামে কিছু বিকাশ করেছিল, যেমন ভেক্টর গ্রাফিক্সকে আদিমগুলির উপর টেক্সচার হিসাবে রেন্ডার করে। কেউ যদি এটি ট্রু টাইপ বা ওপেনটাইপ ফন্টগুলিকে ভেক্টর টেক্সচারে রূপান্তর করতে ব্যবহার করে তবে আপনি এটি পান:

http://alice.loria.fr/index.php/publications.html?Paper=VTM@2005


2
আপনি এই কৌশল ব্যবহার করে কোন বাস্তবায়ন সম্পর্কে জানেন?
লুক

2
না (যেমন প্রোডাকশন-গ্রেড হিসাবে), তবে কিলগার্ডের কাগজে (লিঙ্কের জন্য আমার উত্তরটি দেখুন) একটি সংক্ষিপ্ত সমালোচনা রয়েছে, যা আমি সংক্ষেপে বলেছি: এখনও ব্যবহারিক নয়। এলাকায় আরও গবেষণা হয়েছে; আরো সাম্প্রতিক কাজ Kilgard দ্বারা উদাহৃত অন্তর্ভুক্ত research.microsoft.com/en-us/um/people/hoppe/ravg.pdf এবং uwspace.uwaterloo.ca/handle/10012/4262
Fizz

9

আমি অবাক হয়েছি মার্ক কিলগার্ডের বাচ্চা, এনভি_পাথ_রেন্ডারিং (এনভিআরপি), উপরের কোনওটির দ্বারা উল্লেখ করা হয়নি। যদিও এর লক্ষ্যগুলি ফন্ট রেন্ডারিংয়ের চেয়ে বেশি সাধারণ, এটি ফন্টগুলি এবং কার্নিংয়ের সাহায্যে পাঠ্যও সরবরাহ করতে পারে। এমনকি এটি ওপেনএল ৪.১ এরও প্রয়োজন নেই, তবে এই মুহুর্তে এটি কেবলমাত্র বিক্রেতা / এনভিডিয়া-কেবল এক্সটেনশন। এটি মূলত ব্যবহার পাথ মধ্যে ফন্ট সক্রিয় glPathGlyphsNV, যা freetype2 গ্রন্থাগার উপর নির্ভর করে মেট্রিক্স পেতে ইত্যাদি তারপর আপনি সাথে কার্নিং তথ্য অ্যাক্সেস করতে পারেন glGetPathSpacingNVএবং পথ-ব্যবহার থেকে প্রদর্শন পাঠ্যে NVpr সাধারণ পথ রেন্ডারিং প্রক্রিয়া ব্যবহার করুন "রূপান্তরিত" ফন্ট। (আমি এটাকে উদ্ধৃতিতে রেখেছি, কারণ আসল রূপান্তর নেই, কার্ভগুলি যেমন হয় তেমন ব্যবহৃত হয়))

NVpr এর ফন্ট ক্ষমতা জন্য রেকর্ড ডেমো দুর্ভাগ্যবশত বিশেষ করে চিত্তাকর্ষক নয়। (হতে পারে যে কারও কারও আন্তঃনগরগুলিতে যে পরিমাণ স্ন্যাজিয়ার এসডিএফ ডেমো পাওয়া যাবে তার লাইন ধরে একটি তৈরি করা উচিত ...)

ফন্টের অংশের জন্য ২০১১ সালের এনভিপ্রি এপিআই উপস্থাপনা আলোচনা এখানে শুরু হয় এবং পরবর্তী অংশে অব্যাহত থাকে ; কীভাবে সেই উপস্থাপনাটি বিভক্ত হয়েছে তা কিছুটা দুর্ভাগ্যজনক।

এনভিপ্রিতে আরও সাধারণ উপকরণ:

  • এনভিডিয়া এনভিপ্রি হাব , তবে অবতরণ পৃষ্ঠার কিছু উপাদান সর্বাধিক আপ টু ডেট নয়
  • পাথ-রেন্ডারিং পদ্ধতির মস্তিষ্কের জন্য সিগগ্রাফার 2012 কাগজ , "স্টেনসিল, তারপরে প্রচ্ছদ" (সেন্টি) নামে পরিচিত; ডাইরেক্ট 2 ডি এর মতো প্রতিযোগী প্রযুক্তি কীভাবে কাজ করে তা সংক্ষেপেও কাগজটি ব্যাখ্যা করে। হরফ-সম্পর্কিত বিটগুলি কাগজের সংযুক্তিতে relegated করা হয়েছে । এছাড়াও রয়েছে মত ভিডিও / গণদেবতা কিছু অতিরিক্ত
  • একটি আপডেট স্থিতির জন্য জিটিসি 2014 উপস্থাপনা ; সংক্ষেপে: এটি এখন গুগলের স্কিয়া দ্বারা সমর্থিত হয়েছে (এনভিডিয়া কোডটি 2013 এবং 2014 এর শেষের দিকে অবদান রেখেছে), যা গুগল ক্রোমে এবং [স্বাধীনভাবে স্কিয়া থেকে, আমি মনে করি] অ্যাডোব ইলাস্ট্রেটর সিসি 2014 এর বিটাতে ব্যবহার করা হয়
  • ওপেনজিএল এক্সটেনশন রেজিস্ট্রিটিতে সরকারী ডকুমেন্টেশন
  • ইউএসপিটিও এনভিআরপি-র সাথে কিলগার্ড / এনভিডিয়াকে কমপক্ষে চারটি পেটেন্ট মঞ্জুর করেছে, যার মধ্যে আপনার সম্ভবত সচেতন হওয়া উচিত, আপনি নিজেরাই যদি স্টেটিসি প্রয়োগ করতে চান: US8698837 , US8698808 , US8704830 এবং US8730253 । মনে রাখবেন যে আরও 17 টি ইউএসপিটিও নথির সাথে এর সাথে "আরও প্রকাশিত" হিসাবে সংযুক্ত রয়েছে, যার বেশিরভাগ পেটেন্ট অ্যাপ্লিকেশন, সুতরাং এগুলি থেকে আরও পেটেন্ট দেওয়া যেতে পারে এটি সম্পূর্ণভাবে সম্ভব।

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

Historicalতিহাসিক দৃষ্টিকোণের জন্য, কিলগার্ড ক্লাসিক "টেক্সচার ম্যাপড টেক্সট ফর এ সিম্পল ওপেনগেল -ভিত্তিক এপিআই", এসজিআই, 1997 এর লেখক , যা 2011 সালে আত্মপ্রকাশকারী স্টেনসিল-ভিত্তিক এনভিআরপি নিয়ে বিভ্রান্ত হওয়া উচিত নয়।


বেশিরভাগ ক্ষেত্রে এই পৃষ্ঠায় আলোচিত সাম্প্রতিক পদ্ধতিগুলি যেমন এনভিআরপি বা এসএমএফ-ভিত্তিক জিএলফির মতো স্টেনসিল ভিত্তিক পদ্ধতিগুলি (যা আমি এখানে আর আলোচনা করব না কারণ অন্যান্য উত্তর ইতিমধ্যে এটি আবৃত করে) এর একটি সীমাবদ্ধতা রয়েছে: তারা হ'ল প্রচলিত (~ 100 ডিপিআই) মনিটরিংগুলিতে কোনও স্কেলিংয়ের কোনও স্তরে জাগি ছাড়াই বৃহত পাঠ্য প্রদর্শনের জন্য উপযুক্ত এবং এগুলি উচ্চ-ডিপিআই, রেটিনার মতো ডিসপ্লেতে এমনকি ছোট আকারে এমনকি দেখতে সুন্দর দেখাচ্ছে। মাইক্রোসফ্টের ডাইরেক্ট 2 ডি + ডাইরেক্ট রাইট যা দেয় তা তারা পুরোপুরি সরবরাহ করে না, মূলধারার প্রদর্শনগুলিতে ছোট গ্লাইফগুলি বোঝায় h (সাধারণভাবে ইঙ্গিত দেওয়ার একটি ভিজ্যুয়াল জরিপের জন্য উদাহরণস্বরূপ এই টাইপোথেক পৃষ্ঠাটি দেখুন an আরও বেশি গভীরতার সংস্থানটি অ্যান্টিগ্রাইন.কম এ রয়েছে is )

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

ফ্রিটাইপ লাইব্রেরি আরজিবি মোডে সাব-পিক্সেল অ্যান্টি-এলিয়াসিং ব্যবহার করে একটি গ্লাইফকে জঞ্জাল দিতে পারে। তবে এটি সমস্যার মাত্র অর্ধেক, যেহেতু আমরা গ্লিফগুলি সঠিকভাবে স্থাপনের জন্য সাব-পিক্সেল অবস্থান অর্জন করতে চাই। ভগ্নাংশ পিক্সেল স্থানাঙ্কগুলিতে টেক্সচারযুক্ত কোয়াড প্রদর্শন করা সমস্যার সমাধান করে না, কারণ এটি কেবল পুরো পিক্সেল স্তরে টেক্সচার ইন্টারপোলেশনের ফলস্বরূপ। পরিবর্তে, আমরা সাবপিক্সেল ডোমেনে একটি সুনির্দিষ্ট শিফট (0 এবং 1 এর মধ্যে) অর্জন করতে চাই। এটি একটি খণ্ড শেডারে করা যায় [...]।

সমাধানটি হুবহু তুচ্ছ নয়, তাই আমি এখানে এটি ব্যাখ্যা করার চেষ্টা করব না। (কাগজটি খোলা-অ্যাক্সেস।


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

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


4
আমি এনভি_পথ_রেন্ডারিংয়ের কথা উল্লেখ করিনি কারণ এটি একটি এক্সটেনশান, বিষয়টিকে আরও খারাপ করার জন্য একজন বিক্রেতার মালিকানা। আমি সাধারণত সর্বজনীনভাবে প্রযোজ্য কৌশলগুলির জন্য উত্তর দেওয়ার চেষ্টা করি।
ডেটনল্ফ

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

3

আমি মনে করি আপনার সেরা বাজি হ'ল ওপেনজিএল ব্যাকএন্ডের সাথে কায়রো গ্রাফিক্স সন্ধান করা ।

3.3 কোর সহ একটি প্রোটোটাইপ বিকাশ করার সময় কেবলমাত্র আমারই সমস্যা ছিল ওপেনজিএল ব্যাকএন্ডে ফাংশন ব্যবহারকে অবহেলা করা হয়েছিল। এটি 1-2 বছর আগে ছিল তাই পরিস্থিতির উন্নতি হতে পারে ...

যাইহোক, আমি আশা করি ভবিষ্যতে ডেস্কটপ ওপেনগল গ্রাফিক্স ড্রাইভাররা ওপেনভিজি বাস্তবায়ন করবে।

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