পৃথক থ্রেডে দৃশ্য গ্রাফ


12

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

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

যাইহোক, এটি একটি জগাখিচুড়ি।

এই সিস্টেমের জন্য আমার চূড়ান্ত লক্ষ্য:

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

আমি বুলেট (পদার্থবিজ্ঞান ইঞ্জিন) এবং ভবিষ্যতে নেটওয়ার্কিং সংযুক্ত করার আশাবাদী, যার মধ্যে আমি খুব বেশি চিন্তাভাবনাও করেছি না।

আরও ভাল দৃশ্যের গ্রাফটি সম্পাদনের জন্য কিছু পদ্ধতি কী কী?

উত্তর:


4

আপনি কি "পেস" এবং এর রেন্ডারে জোহানেস স্পোহরের থিসিসটি পড়েছেন? এটি তথাকথিত "সাবমিশন ইঞ্জিন" * সমান্তরাল রেন্ডারারের বর্ণনা দেয় এবং আপনাকে কিছু ধারণা দিতে পারে।

এখানে সংক্ষিপ্ত পৃষ্ঠাটি (জার্মান ভাষায়), এবং এখানে ইংরেজিতে থাকা পিডিএফটির সরাসরি লিঙ্ক দেওয়া আছে।

( *: এই লিঙ্কটি সেই নিবন্ধেও গেছে যেখানে আমি মূলত থিসিস সম্পর্কে শুনেছিলাম))

সম্পাদনা: আমি কেবল এটি আগে রেখেছিলাম এবং আমি আবার এটি তাকিয়েছি ... এবং বুঝতে পেরেছিলাম যে এটি সত্যই দৃশ্যের গ্রাফের বিশদ বিবরণে উপভোগ করে। আমি অনুমান করি যে তার নকশাটি কীভাবে অরথগোনাল তা বুঝতে পারিনি। এটি বিশেষ সহায়ক না হলে দুঃখিত।


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

1
আপনি গেম ইঞ্জিন রত্ন 1-এ "মাল্টিথ্রেডেড রেন্ডারিংয়ের জন্য ক্যামেরা-কেন্দ্রিক ইঞ্জিন ডিজাইন", এবং সম্পর্কিত "ডাইরেক্টএক্স 9 এবং ডাইরেক্টএক্স 10 এর সাথে ব্যবহারিক সমান্তরাল রেন্ডারিং" - মাইক্রোসফট
ডাউনলোডস

1
দেখে মনে হচ্ছে গেম ইঞ্জিন রত্ন 1 নিখরচায় পাওয়া যায়: books.google.com/…
এরিকপি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.