গতিশীল বিশ্বের জন্য কীভাবে স্বাক্ষরিত দূরত্বের ক্ষেত্র রে মার্চিং বাস্তবায়ন করা হয়?


10

আমি মনে করি আমি স্বাক্ষরিত দূরত্বের ক্ষেত্র রে মার্চিংয়ের মূল বিষয়গুলি বুঝতে পারি। আপনি নিজের দৃশ্যের একগুচ্ছ দূরত্বের ক্ষেত্রগুলি দিয়ে মডেল করেন (যেমন: http://iquilezles.org/www/articles/distfunifications/distfunifications.htm ), তারপরে প্রতিটি পিক্সেলের জন্য আপনি একটি রশ্মি ফেলেন, রশ্মির শুরু থেকে শুরু করুন start , সেই বিন্দুতে নিকটতম বস্তুর দূরত্বটি সন্ধান করুন এবং আপনি কিছু আঘাত না করা পর্যন্ত নিকটতম দূরত্বে বিন্দুটি বৃদ্ধি করুন। আমি একটি সাধারণ রেন্ডারার পরিচালনা করতে পেরেছি এবং এটিই কৌশলটির বেশিরভাগ বিবরণ বন্ধ করে দেয়।

এটি আমাকে এসডিএফ রে মার্চিংকে কীভাবে সত্যিকারের বিশ্বের দৃশ্যে ব্যবহার করা যেতে পারে সে সম্পর্কে কিছু প্রশ্ন রেখে যায়:

প্রশ্ন 1: একটি বাস্তব গেমটিতে দৃশ্যটি সাধারণত জটিল এবং অনেকগুলি গতিশীল অবজেক্ট সহ সিপিইউতে লোড হয়। আমি বুনিয়াদি অবলম্বন কুলিং (যেমন অক্ট্রি) বুঝতে পারি এবং বহুভুজ উপস্থাপনা সহ আমি রেন্ডার করার জন্য ভিউ হতাশায় আইটেমগুলির একটি তালিকা (সিপিইউতে) তৈরি করব।

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

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

ধন্যবাদ.

উত্তর:


2

এটি একটি সর্বনিম্ন উত্তর, তবে আপনি যদি আরও ভাল উত্তর না পান তবে তথ্যটি ভাগ করে নিতে চেয়েছিলেন।

কীভাবে বাস্তব গেমগুলি রে মার্চিং ব্যবহার করে, সেগুলি সাধারণত হয় না। কেবলমাত্র গত কয়েক বছরে গেমগুলি স্ক্রিন স্পেস প্রতিবিম্ব করার জন্য গভীরতা বাফারকে রেমার্কিং শুরু করেছে, তবে কোনও গেম আমি আপনার বর্ণনার মতো রে মার্চিংয়ের ব্যবহার সম্পর্কে সচেতন নই - তবুও?

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

আশা করি এটি আপনার জন্য অন্তত কিছুটা সহায়তা! আপনি গ্রাফিক্স স্ট্যাক এক্সচেঞ্জ সাইট থেকে ভাল উত্তর পেতে পারেন।


2
"কোনও গেমটি সম্পর্কে আপনি যেভাবে বর্ণনা করেছেন তেমন মার্চিংয়ের ব্যবহার সম্পর্কে আমি সচেতন নই" মিডিয়া মলিকুলের আসন্ন গেমস ড্রিমস ব্যবহারকারীর দ্বারা উত্পাদিত সামগ্রী ভাস্কর্যের জন্য স্বাক্ষরিত দূরত্ব ক্ষেত্রগুলি ব্যবহার করে, তবে যদি আমি সঠিকভাবে বুঝতে পারি তবে ক্ষেত্রগুলি রেন্ডারিংয়ের পরিবর্তে বিন্দু মেঘে রূপান্তরিত হয় সরাসরি raymarched হচ্ছে। এই নিবন্ধটি কিছু ধারনা থাকতে পারে dualshockers.com/2015/08/15/...
DMGregory

1
@ ডিএমজি গ্রেগরি নিস, তবে আমি মনে করি এটি কঠোরভাবে রে মার্চিং নয়। সুতরাং পয়েন্টটি এখনও বৈধ, গেমস সাধারণত রে মার্চিং ব্যবহার করে না।
ধারণা 3 ডি

1
এই থ্রেডটি আপডেট করা হচ্ছে - আসন্ন গেম ক্লেবুকটি প্রথমে প্রচলিত জ্যামিতিতে রূপান্তরিত করার পরিবর্তে দূরত্বের ক্ষেত্রগুলির মধ্য দিয়ে সরাসরি চালিত রশ্মি ব্যবহার করে এর দৃশ্যগুলি রেন্ডার করেছে । তাহলে "এখনও?" দু'বছর ধরে জন্মগ্রহণ করা হয়েছে বলে মনে হয়। :)
ডিএমগ্রিগরি

1

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

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

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

চিত্রের রঙ সম্পর্কে, মনে রাখবেন যে শেডারগুলি আপনাকে জটিল ধরণের পাশাপাশি আদিমগুলিও সংজ্ঞায়িত করতে দেয়;)। এটি আপনাকে সমস্ত কিছু সি-স্টাইলের কাঠামোতে ছুঁড়ে ফেলার অনুমতি দেয়, তারপরে সেই স্ট্রাকগুলি আপনার দূরত্বের ক্রিয়া থেকে ফিরিয়ে দেয়।

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

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

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

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

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