প্রোগ্রামেবল পাইপলাইন (জিএলএসএল) স্থির পাইপলাইনের চেয়ে দ্রুত কেন?


27

সুতরাং আমি নিজেকে জিএলএসএল শিখিয়ে দিচ্ছি এবং এটি নির্ধারিত ফাংশন পাইপলাইনের চেয়ে দ্রুত হওয়ার কারণ কেন তা বোঝার চেষ্টা করছি।

আমার যে সমস্যা হচ্ছে তার কারণ হ'ল আমার বোধগম্যতা অনুসারে, আপনি তৈরি ছায়াগুলি সেই পাইপলাইনের কিছু অংশ আগে প্রতিস্থাপন করছে। সুতরাং, কীভাবে সহজভাবে আপনার নিজস্ব সংস্করণটি দ্রুতগতিতে সরবরাহ করছে?

আমি যা ভাবতে পারি তা হ'ল যদি আপনি নিজের আলোকিত সমীকরণটি আগে সরবরাহ করার চেষ্টা করে থাকেন তবে আপনাকে সিপিইউতে গণনা করতে হবে তবে এখন আপনি জিপিইউতে গণনা করতে পারবেন যা আরও দ্রুত হবে।

আমি কি এটি সঠিকভাবে বুঝতে পারি?


আপনি কি জিজ্ঞাসা করছেন যে বিদ্যমান ফাংশনগুলির নিজস্ব সংস্করণগুলি তৈরি করা দ্রুত কিনা বা আপনি সিপিইউতে গণনা করছেন ফাংশনগুলি অফলোড করা আরও দ্রুত কিনা?
MichaelHouse

আমি গেমদেব.টনে একটি পোস্ট পেয়েছি যা আমার প্রশ্নের উত্তর দেয়।
জোয় গ্রিন

2
আমি দেখি. আপনার এটি সম্পর্কে এখানে একটি উত্তর পোস্ট করা উচিত, যাতে অন্যরা উপকৃত হয়। প্রক্রিয়াটিতে সম্ভবত আপনার প্রশ্নটি পরিষ্কার করা।
MichaelHouse

@ জো-গ্রিন আপনি কি দয়া করে গেমদেব.টাকে এখানে লিঙ্ক করবেন । আমি যারা এই প্রশ্নে হোঁচট খাবেন তাদের জন্য সহায়ক হব।
কাজী ইরফান

1
বিষয়গুলিকে আরও বিভ্রান্ত করার জন্য, আমার পরীক্ষায় ফিক্সড পাইপলাইন ছায়াগুলির চেয়ে আসলে দ্রুততর হতে পারে, কমপক্ষে সাধারণ ক্ষেত্রে; দেখতে sol.gfxile.net/instancing.html
জারি Komppa

উত্তর:


27

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

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

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

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


1
ভাল উত্তর ... + 1।
আমির জাদেহ

@ গ্রীন যে সম্পর্কে নিশ্চিত না। বিন্দুটি কোনওভাবে মিস করে। কাইলোটনের উত্তর আসল প্রশ্নের জন্য অনেক বেশি উপযুক্ত।
ক্রিস

14

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

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


1

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


1

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

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


"আপনি যখন ফিক্সড-ফাংশন পাইপলাইন ব্যবহার করেন তখন সম্ভবত যা ঘটে তা হ'ল আপনার ড্রাইভার কেবলমাত্র নিজস্ব বিশেষ শেডার লোড করে যা স্থির-ফাংশন পাথগুলি প্রয়োগ করে" " ..আপনি যদি এই বিষয়ে নিশ্চিত? আপনি কি কোনও নির্ভরযোগ্য সংস্থান সরবরাহ করতে পারেন? ধন্যবাদ।
কাজী ইরফান

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

@ আইম্যাক্রেসি ন্যুওউইউ উইকি নুওউও.ফ্রেডেস্কটপ.অর্গ / উইকি / কোডনেম অনুসারে , জিফর্স 6XXx এ স্থির পাইপলাইন সরানো হয়েছে।
ময়লা আইসিসি

"আপনি যখন ফিক্সড-ফাংশন পাইপলাইন ব্যবহার করেন তখন সম্ভবত যা ঘটে তা হ'ল আপনার ড্রাইভার কেবলমাত্র নিজস্ব বিশেষ শেডার লোড করে যা স্থির-ফাংশন পাথগুলি প্রয়োগ করে" " সত্য। "তবে এগুলি প্রতিটি জটিল বৈশিষ্ট্যযুক্ত ফিক্স-ফাংশন পাইপলাইন সরবরাহ করতে খুব জটিল হতে পারে" " একটি ভাল ড্রাইভার আপনি সক্ষম করেছেন কেবল কার্যকারিতার জন্য শেডার তৈরি করবে।
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.