জ্যামিতির শেডার থেকে প্রক্রিয়াজাতভাবে উত্পাদিত বিশ্বে আমি কীভাবে পদার্থবিদ্যাকে অন্তর্ভুক্ত করতে পারি?


10

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

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

সুতরাং প্রশ্নটি হ'ল: আমি অন্যান্য জিনিসের মধ্যে সংঘর্ষের সাথে মোকাবিলা করার জন্য সিপিইউতে উল্লম্বের উপসেটটি কীভাবে ফিরে পাব?

এবং আরও একটি প্রশ্ন: জিপিইউতে একটি সূক্ষ্ম সেট নিয়ে সেগুলি থেকে সূচকগুলি উত্পন্ন করার জন্য কি সহজ উপায় আছে?

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

আমি সি # 4.0,। নেট 4.0, এবং এক্সএনএ গেম স্টুডিও 4.0 ব্যবহার করছি।


1
আপনি বলছেন যে আপনি শিরোনামে জ্যামিতি শেডার ব্যবহার করছেন তবে আপনি এটিও বলেছেন যে আপনি XNA4.0 ব্যবহার করছেন, আমি যতদূর জানি XNA 4.0 এর জন্য ডাইরেক্টএক্স 10 প্রয়োজন (আরও ইউনিফর্ম প্ল্যাটফর্মের জন্য এটি বিকাশকে আরও সহজ করার জন্য) তবে কেবল এসএম 3.0 বৈশিষ্ট্য সমর্থন করে, তাই জ্যামিতির শেডার নেই। forums.create.msdn.com/forums/p/31369/178924.aspx
রায় টি।

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

1
ওয়েল এক্সএনএ ব্যবহারের জন্য এখনও বৈধ, যদি না আপনি প্রমাণিত পরীক্ষা-কেস পেয়ে থাকেন যেখানে বিকৃতকরণ এবং প্রজন্মের কাজ করা খুব ধীর হয়। এবং আপনি অন্য একটি টেস্ট-মামলায় প্রমাণ করেছেন যে জিপিইউ ++ তৈরি করে এবং তারপরে সিপিইউতে ডেটা ফেরত পাওয়া দ্রুত হয় :)
রায় টি।

প্রকৃতপক্ষে. আমরা দেখতে পেলাম যে এক্সএনএ ব্যবহার করে এবং সিপিইউতে সমস্ত কিছু রেখে আমাদের প্রতি कोर থ্রিমিতে 8 টি কোর এবং 8 টি থ্রেডের সাথে প্রতি থ্রেডের একাধিক বিভাগের সমান্তরাল করে প্রায় তিন মিনিটে প্রায় 1 মিলিয়ন উল্লম্বটি দিয়েছেন। রিয়েল-টাইমে এটি করার চেষ্টা করার সময় এবং খেলোয়াড়টি এটি দেখার আগে আশেপাশে ভূখণ্ডটি উপস্থাপন করার সময়, আমরা প্রতি সেকেন্ডে প্রায় 20 ফ্রেম অর্জন করি। সুতরাং, পরীক্ষার ক্ষেত্রে অবশ্যই প্রতিটি পদ্ধতির সাথে সামঞ্জস্য হয়।
মাইকেল জে। গ্রে

উত্তর:


3

যেহেতু এক্সএনএ জ্যামিতির শেডগুলি সমর্থন করে না, তাই আমি এটির জবাব দেব যেমন আপনি ডেক্স 10 ব্যবহার করছেন You আপনার কাছে মূলত তিনটি বিকল্প রয়েছে।

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

কেবলমাত্র সিপিইউ ব্যবহার করুন দ্বিতীয়ত, আপনি কেবল সিপিইউতে এটি গণনা করেন না কেন? শেডারে জিপিইউতে চলে এটি এই সত্যটি বোঝায় যে আপনার বিকৃতি অ্যালগরিদম স্থানীয়করণযোগ্য, অর্থাৎ আপনি সহজেই আপনার সংঘর্ষের পরীক্ষার জন্য কেবল সম্পর্কিত অংশগুলি তৈরি করতে পারবেন।

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

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

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


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

আপনার পালনের উদাহরণ সহ, আপনি সহজেই কোনও নৌকাকে তরঙ্গের মধ্য দিয়ে জিপিইউতে ডুবিয়ে দেওয়ার তরঙ্গরূপের ফলাফলটি সহজেই সংযুক্ত করতে পারবেন না?
deceleratedcaviar

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

@ ড্যানিয়েল সরাসরি তরঙ্গ অ্যালগরিদমের সাথে নয়, তবে নৌকায় জাগ্রত অনুযায়ী জাল জালকে বিকৃত করা সম্ভব, যাতে প্রতি নৌকা তার পিছনে "টেনে" রাখে disp
হান্নেশ

আহ! এটা একটা খুব ভাল বুদ্ধি :). তবে এটি সম্ভবত একাধিক ওয়াটারক্রাফটকে খুব ভালভাবে সমর্থন করে না।
deceleratedcaviar
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.