দোলন এবং থ্রেডিংয়ের জন্য ডেটা স্ট্রাকচারগুলি?


20

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

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

সুতরাং আমি আমার গেমের সাথে ইন্টারপোলেশন যুক্ত করতে চাই - এবং এটি সমর্থন করার জন্য অন্যরা কীভাবে তাদের ডেটা এবং কোড গঠন করেছে তা জানতে আগ্রহী।

অবশ্যই আমার রেন্ডারারের সাথে প্রাসঙ্গিক গেম স্টেটের তথ্য দুটি কপি (কোথায়? / কিভাবে?) সংরক্ষণ করতে হবে, যাতে এটি তাদের মধ্যে বিভক্ত হয়।

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

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

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

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

উত্তর:


4

পুরো গেমের রাজ্যের প্রতিলিপি দেওয়ার চেষ্টা করবেন না। এটি ইন্টারপোলিং একটি দুঃস্বপ্ন হবে। পরিবর্তনগুলি এবং রেন্ডারিংয়ের দ্বারা প্রয়োজনীয় অংশগুলি কেবল আলাদা করুন (আসুন আমরা এটিকে "ভিজ্যুয়াল স্টেট" বলি)।

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

রেন্ডারিংয়ে সাধারণত বস্তুর মধ্যে যৌক্তিক সম্পর্ক সম্পর্কে কিছু জানতে হবে না, সুতরাং রেন্ডারিংয়ের জন্য ব্যবহৃত কাঠামোটি একটি সরল ভেক্টর বা সর্বাধিক একটি সরল গাছ হবে।

উদাহরণ

.তিহ্যবাহী নকশা

class Actor
{
  Matrix4x3 position;
  float fuel;
  float armor;
  float stamina;
  float age;

  void Simulate(float deltaT)
  {
    age += deltaT;
    armor -= HitByAWeapon();
  }
}

ভিজ্যুয়াল স্টেট ব্যবহার করা হচ্ছে

class IVisualState
{
  public:
  virtual void Interpolate(const IVisualState &newVS, float f) {}
};
class Actor
{
  struct VisualState: public IVisualState
  {
    Matrix4x3 position;
    float fuel;
    float armor;
    float stamina;
    float age;

    virtual auto_ptr<IVisualState> Interpolate(const IVisualState &newVS, float f)
    {
      const VisualState &newState = static_cast<const VisualState &>(newVS);
      IVisualState *ret = new VisualState;
      ret->age = lerp(this->age,newState.age);
      // ... interpolate other properties as well, using any suitable interpolation method
      // liner, spline, slerp, whatever works best for the given property
      return ret;
    };
  };

  auto_ptr<VisualState> state_;

  void Simulate(float deltaT)
  {
    state_->age += deltaT;
    state_->armor -= HitByAWeapon();
  }
}

1
আপনি যদি প্যারামিটারের নাম হিসাবে "নতুন" (সি ++ তে একটি সংরক্ষিত শব্দ) ব্যবহার না করেন তবে আপনার উদাহরণটি পড়তে আরও সহজ হবে।
স্টিভ এস

3

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

পরিবর্তে আমি পদার্থবিদ্যার প্রজন্মের একটি চলমান কাউন্টার রাখি । প্রতিটি আপডেট পদার্থবিদ্যার প্রজন্মকে বাড়িয়ে তোলে, যখন পদার্থবিজ্ঞানের সিস্টেমটি ডাবল আপডেট হয়, প্রজন্মের পাশাপাশি ডাবল আপডেটও সরবরাহ করে।

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

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

আমি যখন ইন্টারপোলেশন স্টাফ লিখেছিলাম তখন আমি 60Hz এ গ্রাফিকগুলি এবং 30Hz এ পদার্থবিজ্ঞান চালাচ্ছিলাম। দেখা যাচ্ছে যে 1202 হার্জেড চালিত হলে বক্স 2 ডি অনেক বেশি স্থিতিশীল। এ কারণে আমার ইন্টারপোলেশন কোডটি খুব কম ব্যবহার পায়। দ্বিগুণ করে লক্ষ্যমাত্রা ফ্রেমরেট করতে প্রতিটি ফ্রেমে দুবার গড়ে আপডেটের জন্য পদার্থবিজ্ঞানকে ফ্রেমরেট করুন। জিটার সহ যা 1 বা 3 বারও হতে পারে তবে প্রায় 0 বা 4+ কখনও হয় না। উচ্চতর পদার্থবিজ্ঞানের হার কিন্ডা নিজে থেকেই প্রসারণের সমস্যাটি ঠিক করে। 60hz এ পদার্থবিজ্ঞান এবং ফ্রেমরেট উভয় চালানোর সময় আপনি প্রতি ফ্রেমে 0-2 আপডেট পেতে পারেন। 1 এবং 3 এর তুলনায় 0 এবং 2 এর মধ্যে ভিজ্যুয়াল পার্থক্য বিশাল।


3
আমি এটিও পেয়েছি। একটি কাছাকাছি 60Hz ফ্রেম আপডেট সহ একটি 120Hz পদার্থবিজ্ঞানের লুপ অন্তরঙ্গন প্রায় অকেজো করে তোলে। দুর্ভাগ্যক্রমে এটি কেবলমাত্র গেমগুলির সেটের জন্য কাজ করে যা 120Hz পদার্থবিজ্ঞানের লুপ বহন করতে পারে।

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

এছাড়াও: আপনার অন্তরঙ্গ ব্যবস্থা সম্পর্কে আপনার ব্যাখ্যাটি আমি আসলে বুঝতে পারি না। এটাকে খানিকটা এক্সট্রোপোলেশনের মতো মনে হচ্ছে, আসলে?
অ্যান্ড্রু রাসেল

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

2

টাইমস্টেপগুলির কাছে এই পদ্ধতিটি বেশ ঘন ঘন প্রস্তাবিত শুনেছি, তবে 10 বছরের গেমসে আমি কখনই কোনও আসল-ওয়ার্ল্ড প্রকল্পে কাজ করিনি যা একটি নির্দিষ্ট টাইমস্টেপ এবং ইন্টারপোলেশনের উপর নির্ভর করে।

এটি সাধারণত একটি পরিবর্তনশীল টাইমস্টেপ সিস্টেমের চেয়ে বেশি পরিশ্রম বলে মনে হয় (25Hz-100Hz প্রকারের ফ্রেমরেটগুলির একটি বুদ্ধিমান পরিসর ধরে)।

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

প্রতিটি গেমের অবজেক্ট, তার আপডেটের শেষে, এটি বর্তমান অবস্থাটিকে এই ইন্টারপোলটেবল ভেক্টর / ম্যাট্রিক্সের সেটগুলিতে সেট করে। থ্রেডিং সমর্থন করার জন্য এই ধরণের জিনিসটি বাড়ানো যেতে পারে, আপনার কমপক্ষে কমপক্ষে 3 টি মানের প্রয়োজন হবে - একটি যা আপডেট করা হয়েছিল এবং কমপক্ষে 2 টি পূর্ববর্তী মানগুলি এর মধ্যে বিভক্ত করতে ...

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

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


1
মনে হচ্ছে কমপক্ষে 3 এর ভূমিকম্পটি এই পদ্ধতির ব্যবহার করছে, ডিফল্ট "টিক "টি 20 fps (50 এমএস) সহ being
সুমা

মজাদার. আমি মনে করি এটির উচ্চ-প্রতিযোগিতামূলক মাল্টিপ্লেয়ার পিসি গেমগুলির সুবিধাগুলি রয়েছে, তা নিশ্চিত করার জন্য দ্রুত পিসি / উচ্চতর ফ্রেমরেটগুলি খুব বেশি সুবিধা না পায় (আরও প্রতিক্রিয়াশীল নিয়ন্ত্রণগুলি, বা পদার্থবিজ্ঞানের / সংঘর্ষের আচরণে ছোট-তবে-শোষণমূলক পার্থক্য) ?
bluescrn

1
আপনি কি 10 বছরে এমন কোনও গেমের মধ্যে দৌড়েননি যা পদার্থবিজ্ঞানকে সিমুলেশন এবং রেন্ডারারের সাথে তালাবদ্ধ করে না? কারণ আপনি যে মুহুর্তটি করেন সেই মুহূর্তে আপনাকে আপনার অ্যানিমেশনগুলিতে অনুভূতিযুক্ত জারকটি বিভক্ত করতে বা গ্রহণ করতে হবে।
কাজ

2

অবশ্যই আমার রেন্ডারারের সাথে প্রাসঙ্গিক গেম স্টেটের তথ্য দুটি কপি (কোথায়? / কিভাবে?) সংরক্ষণ করতে হবে, যাতে এটি তাদের মধ্যে বিভক্ত হয়।

হ্যাঁ, ধন্যবাদ এখানে কীটি "আমার রেন্ডারারের সাথে প্রাসঙ্গিক"। এটি মিশ্রণটির জন্য কোনও পুরানো অবস্থান এবং একটি টাইমস্ট্যাম্প যুক্ত করা ছাড়া আর কিছু নাও হতে পারে। ২ টি অবস্থান দেওয়া আপনি তাদের মধ্যে অবস্থানে বিভক্ত করতে পারেন এবং আপনার যদি একটি 3D অ্যানিমেশন সিস্টেম থাকে তবে আপনি সাধারণত যেভাবে ঠিক সময়ে সেই নির্দিষ্ট বিন্দুতে পোজটির জন্য অনুরোধ করতে পারেন।

এটি সত্যিই বেশ সহজ - কল্পনা করুন যে আপনার উপস্থাপক আপনার গেমের বিষয়টিকে রেন্ডার করতে সক্ষম হতে হবে। এটি বস্তুকে এটি দেখতে কেমন তা জিজ্ঞাসা করত তবে এখন এটি নির্দিষ্ট সময়ের মতো দেখতে কেমন তা জিজ্ঞাসা করতে হবে। এই প্রশ্নের উত্তর দেওয়ার জন্য আপনার যা প্রয়োজন তথ্য সংরক্ষণ করতে হবে।

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

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


1

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

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

অপরিবর্তনীয় কোনও বস্তু তৈরি করা শক্ত, কারণ এর সমস্ত শিশুদের অবশ্যই অপরিবর্তনীয় হতে হবে, এবং আপনাকে সত্যই যত্নবান হওয়া দরকার যে সবকিছু সত্যই অপরিবর্তনীয়। তবে আপনি যদি সত্যই সতর্ক হন তবে আপনি একটি সুপারক্লাস তৈরি করতে পারেন GameStateযা আপনার গেমের সমস্ত ডেটা (এবং সাবডেটা এবং তাই) ধারণ করে; মডেল-ভিউ-কন্ট্রোলার সাংগঠনিক শৈলীর "মডেল" অংশ।

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

যদিও আমি এটির দ্বারা ভীষণ আগ্রহী। আপনার প্রতিটি ফ্রেমে আপনার সম্পূর্ণ ডেটা স্ট্রাকচার অনুলিপি করার দরকার নেই; আপনি কেবল অপরিবর্তনীয় কাঠামোতে একটি পয়েন্টার অনুলিপি করুন। এটি নিজেই খুব চিত্তাকর্ষক, আপনি কি একমত নন?


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

এর মতো ক্ষেত্রে গতিশীল বরাদ্দ দক্ষতার সাথে করা খুব সহজ। আপনি একটি বিজ্ঞপ্তি বাফার ব্যবহার করতে পারেন, একপাশ থেকে বেড়ে ওঠা, দ্বিতীয়টি থেকে সম্পর্কিত।
সুমা

... এটি গতিশীল বরাদ্দ হবে না, কেবল পূর্বরূপযুক্ত মেমোরির গতিশীল ব্যবহার;)
কেজ

1

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

আমি তখন বুঝতে পেরেছিলাম যে আমাকে রেন্ডার করা হবে তার তিনটি রাজ্য রাখা দরকার। আমার আপডেট থ্রেডটি এখন "রেন্ডারকম্যান্ডস" এর তিনটি অনেক ছোট বাফারের মধ্যে একটি পূরণ করে এবং রেন্ডারারটি সম্প্রতি যে নতুন লিখিত বাফারটিতে লিখিত হয়নি তা থেকে পড়ে, যা থ্রেডগুলি একে অপরের অপেক্ষায় থেকে বাধা দেয়।

আমার সেটআপে, প্রতিটি রেন্ডারকম্যান্ডে 3 ডি জ্যামিতি / উপকরণ, একটি রূপান্তর ম্যাট্রিক্স এবং লাইটগুলির একটি তালিকা রয়েছে যা এটি প্রভাবিত করে (এখনও এগিয়ে রেন্ডারিং করছে)।

আমার রেন্ডার থ্রেডটি আর কোনও ক্লুলিং বা হালকা দূরত্ব গণনা করতে হবে না এবং এটি বড় দৃশ্যে যথেষ্ট পরিমাণে উত্সাহ দেয়।

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