আমি বর্তমানে একটি গেম ইঞ্জিন বিকাশ করছি যা স্বাক্ষরিত দূরত্বের ক্ষেত্রগুলিকে মসৃণ পদ্ধতিগত জ্যামিতি প্রদর্শন করার জন্য একটি রেন্ডারিং কৌশল হিসাবে ব্যবহার করে (আপাতত আপনার লিঙ্কের মতো সাধারণ আদিমগুলির সাথে উত্পন্ন, ভবিষ্যতে জুলিয়া এবং আইএফএস ফ্র্যাক্টালগুলি বাস্তবায়নের জন্য খুঁজছেন)। যেহেতু আমার ইঞ্জিন পদ্ধতিগত প্রজন্মের দিকে দৃষ্টি নিবদ্ধ করে এবং চিত্রগুলি এমনভাবে উপায়ে সংজ্ঞায়িত করা উচিত যা তাদের রশ্মি-মার্চারকে বন্ধুত্বপূর্ণ করে তোলে, তাই আমি অনুভব করি যে এই প্রশ্নের উত্তর দেওয়ার জন্য আমি ভাল জায়গায় আছি: পি।
স্ট্রিমিং সম্পর্কে, সহজ সমাধানটি হ'ল কোনও ধরণের টাইপযুক্ত বাফার ব্যবহার করা এবং যখন আপনি আপনার রে-মার্চিং করতে চান তখন এটি জিপিইউতে ফেলে দেওয়া। বাফারের প্রতিটি উপাদান একটি জটিল ধরণের (যেমন সি / সি ++ এর স্ট্রাক্ট) এবং প্রতিটি প্রকারে এটি উপস্থাপনের জন্য আপনার কোন ফাংশনটি ব্যবহার করা উচিত, এটির অবস্থান, ঘূর্ণন, স্কেল ইত্যাদি এবং একটি গড় রঙ নির্ধারণ করে এমন উপাদান রয়েছে। প্রক্রিয়াটি তখন এটিকে সহজতর করে:
- আপনার দৃশ্যাবলিকে একটি পরিচালনাযোগ্য উপসেটে টানুন (দ্রষ্টব্য যে হতাশাগ্রহণ এবং অলোকশন কুলিং আংশিকভাবেই রে-মার্চিং অ্যালগরিদম দ্বারা স্বয়ংক্রিয়ভাবে সম্পাদিত হয়)
- আপনার রেন্ডার ইনপুট বাফারে সাবসেটটি পাস করুন
- বাফারটি জিপিইউতে পাস করুন যদি এটি ইতিমধ্যে না থাকে তবে আপনার দৃশ্যটি সাধারণ traditionalতিহ্যবাহী রে-মার্চিংয়ের সাথে রেন্ডার করুন। ইনপুট বাফারের কোন আইটেমটি রে-মার্চারের প্রতিটি পুনরাবৃত্তির জন্য প্রতিটি রশ্মির নিকটতম, তা নির্ধারণ করতে আপনাকে কিছু ধাপে অনুসন্ধান করতে হবে এবং আপনাকে রশ্মিতে ট্রান্সফর্ম প্রয়োগ করতে হবে (যে ক্ষেত্রে জিপিইউতে পৌঁছানোর আগে আপনাকে চিত্রের ঘূর্ণনগুলি উল্টে ফেলতে হবে) বা দূরত্বগুলি তাদের নিজেই ফাংশন করবে (অবস্থানের পরিবর্তনের জন্য ফাংশন উত্সকে সরিয়ে নিয়েছে, উদাহরণস্বরূপ স্কেল পরিবর্তনের জন্য ঘনক্ষেত্রের দৈর্ঘ্য ইত্যাদি সমন্বয় করে) সহজ পদ্ধতির আগে কেবল রশ্মিকে সংশোধন করা হয় আপনি এগুলি প্রকৃত মূল দূরত্ব ফাংশনটিতে পৌঁছে দিন।
চিত্রের রঙ সম্পর্কে, মনে রাখবেন যে শেডারগুলি আপনাকে জটিল ধরণের পাশাপাশি আদিমগুলিও সংজ্ঞায়িত করতে দেয়;)। এটি আপনাকে সমস্ত কিছু সি-স্টাইলের কাঠামোতে ছুঁড়ে ফেলার অনুমতি দেয়, তারপরে সেই স্ট্রাকগুলি আপনার দূরত্বের ক্রিয়া থেকে ফিরিয়ে দেয়।
আমার ইঞ্জিনে, প্রতিটি কাঠামোর মধ্যে একটি দূরত্ব, একটি রঙ এবং একটি আইডি থাকে যা এটি ইনপুট বাফারটিতে সম্পর্কিত চিত্র সংজ্ঞাটির সাথে যুক্ত করে। প্রতিটি আইডি প্রাসঙ্গিক দূরত্ব ফাংশনটির পার্শ্ববর্তী প্রসঙ্গ থেকে অনুমান করা হয় (যেহেতু আমার ম্যাপিং ফাংশন প্রতিটি পদক্ষেপের জন্য প্রতিটি রশ্মির নিকটতম চিত্র খুঁজে পেতে ইনপুট বাফারের মাধ্যমে লুপ করে, তাই প্রতিটি এসডিএফ বলা হলে আমি নিরাপদে লুপ কাউন্টারটির মান বিবেচনা করতে পারি) যেমন ফাংশনটির জন্য চিত্র আইডি হিসাবে), যখন দূরত্বের মানগুলি একটি স্বেচ্ছাসেবী কোর এসডিএফ (উদাহরণস্বরূপ) ব্যবহার করে সংজ্ঞায়িত করা হয়point - figure.pos
একটি গোলকের জন্য), এবং রঙগুলি হয় ফিগার বাফারের উপযুক্ত উপাদানের গড় রঙ থেকে সংজ্ঞায়িত করা হয় (সুতরাং এটি চিত্রের আইডির আশেপাশে রাখা কেন কার্যকর) বা সঞ্চিত গড়ের দিকে ওজনযুক্ত একটি রঙিন রঙের মাধ্যমে (একটি উদাহরণ হতে পারে ম্যান্ডেলবুল্বের কিছু পয়েন্টের জন্য একটি পুনরাবৃত্তি গণনা, আপনার "গড় রঙ" এফপি রঙের স্থান থেকে পূর্ণসংখ্যার রঙ স্পেসে ম্যাপিং করে, তবে ম্যাপ করা রঙকে প্যালেট হিসাবে পুনরাবৃত্তি গণনার বিপরীতে ব্যবহার করে)।
পদ্ধতিগত টেক্সচারগুলি অন্য পদ্ধতি, তবে আমি সেগুলি নিজেই ব্যবহার করি না। আইকিউ সে অঞ্চলে বেশ গবেষণা করেছে এবং শেদার্টোয়ের উপর কিছু আকর্ষণীয় বিক্ষোভ পোস্ট করেছে, যাতে কিছু অতিরিক্ত তথ্য সংগ্রহের এক উপায় হতে পারে।
আপনার রঙ প্রতিটি চিত্রের জন্য স্থিতিশীল, প্রক্রিয়াগতভাবে উত্পন্ন, বা পদ্ধতিগত অঙ্গবিন্যাস থেকে যাদুকরীভাবে নমুনা নির্বিশেষে, মৌলিক যুক্তিটি একই: বিমূর্ত চিত্রগুলি কিছুটা মধ্যবর্তী জটিল ধরণের (উদাহরণস্বরূপ একটি কাঠামো), স্থানীয় দূরত্ব এবং স্থানীয় উভয়ই সঞ্চয় করুন এই ধরণের উদাহরণস্বরূপ রঙ করুন, তারপরে আপনার দূরত্বের ক্রিয়াকলাপ থেকে জটিল টাইপটিকে একটি রিটার্ন মান হিসাবে পাস করুন। আপনার প্রয়োগের উপর নির্ভর করে আউটপুট রঙটি সরাসরি স্ক্রিনের মধ্যে দিয়ে যেতে পারে, বা আপনার আলোক কোডের মধ্যে সংঘর্ষের পয়েন্টটি অনুসরণ করতে পারে।
আমি জানি না উপরেরটি যথেষ্ট পরিষ্কার ছিল কি না, তাই কিছু বোঝার অর্থ হয় না কিনা তা জিজ্ঞাসা করার বিষয়ে চিন্তা করবেন না। আমি এইচএলএসএল এবং গণনা শেডিংয়ের সাথে কাজ করছি বলে আমি আসলে কোনও জিএলএসএল / পিক্সেল শেডিং কোডের নমুনা দিতে পারি না, তবে আমি প্রথমে যথাযথভাবে লিখিনি এমন কিছু চেষ্টা করার চেষ্টা করে খুশি হয়েছি :)।