উপাদান এবং শেডারের মধ্যে পার্থক্য


27

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


1
আমি কয়েকটি ইঞ্জিন দেখেছি যেখানে একটি উপাদান একটি শেডার + বিচ্ছুরিত গঠন + বাম্পম্যাপ, তবে আমি মনে করি না এর একটি সংক্ষিপ্ত সংজ্ঞা আছে।
রায় টি।

3
@RoyT। এই ইঞ্জিনগুলি পরিভাষাটির অপব্যবহার করবে। একটি উপাদান একটি শেডারের সমতুল্য নয় - শেডার একটি প্রোগ্রাম , একটি উপাদান ডেটা মানগুলির একটি গোছা। 2 টি বিভিন্ন শেডার প্রোগ্রাম একই উপাদান রেন্ডার করতে পারে এবং বিভিন্ন ফলাফল পেতে পারে।
bobobobo

@ বোবোবো বা আরও সাধারণভাবে, একক শেডার বিভিন্ন টেক্সচার, প্যারামিটার মান এবং এগুলি প্লাগ করে অনেকগুলি উপকরণ সরবরাহ করতে ব্যবহৃত হত।
নাথান রেড

উত্তর:


29

একটি উপাদান হ'ল বৈশিষ্ট্যের সংমিশ্রণ যা প্রদত্ত উপাদানের পৃষ্ঠের চেহারা কেমন হওয়া উচিত তা বর্ণনা করে।

কিছু ইঞ্জিন বিভিন্ন উপকরণের জন্য বিভিন্ন ছায়া গো ব্যবহার করে, এক্ষেত্রে কোনও উপাদানের সংজ্ঞাটি দেখতে দেখতে পারে:

[Material]
Shader=NormalMappedSpecular.glsl
Texture1=Rock.png
Texture2=RockNormal.png
Texture3=RockSpecular.png

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

[Material]
Ambient=0.5
Specularity=0.7
DiffuseMap=Rock.png
NormalMap=RockNormal.png
SpecularMap=RockSpecular.png

2
গেম ইঞ্জিন দ্বারা সমর্থিত প্রতিটি ইন্দ্রিয়তে কোনও একটি সামগ্রীর সংজ্ঞা বাড়িয়ে দিতে পারে না? উদাহরণস্বরূপ, আঘাতগুলি, পদবিন্যাস ইত্যাদির ফলে উপাদানগুলি যে শব্দগুলি উত্পন্ন করবে, বা এর ঘর্ষণ পরামিতিগুলি?
didierc

10

কোনও উপাদান আলোকে কীভাবে প্রতিক্রিয়া দেখায় তা নির্দিষ্ট করে।

কয়েকটি সাধারণ পরামিতি রয়েছে:

  • কেডি: আলোর বিচ্ছুরিত প্রতিক্রিয়া
  • কে: আলোর প্রতি নির্দিষ্ট প্রতিক্রিয়া
  • এনএস: "শিননেস"
  • মানচিত্র_কেডি: গঠন

এখন বলুন আপনার কাছে উপাদান সহ একটি ত্রিভুজ রেন্ডার হয়েছে MMকেডি = (1,0,0) (লাল ছড়িয়ে পড়া প্রতিক্রিয়া), কেএস = (1,1,1) (সাদা বর্ণের প্রতিক্রিয়া), এনএস = 25 (স্পেসুলার হাইলাইটটি বেশ তীক্ষ্ণ হবে এবং অদ্ভুত হবে না) এবং কোনও মানচিত্র_কেডি নেই ( কোন টেক্সচার)।

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

একটি শিখরে একটি প্রসারিত প্রতিক্রিয়া গণনা করার জন্য একটি শেডারে একটি সাধারণ ক্রিয়াকলাপ হ'ল:

// hlsl
float3 vertexToLight = normalize( lightPos.xyz - vertexPos.xyz ) ;

float3 diffuseColor = max( dot( vertexToLight, vertexNormal ), 0.0 ) * kd * lightColor ;

3

কোনও উপাদান হ'ল আপনি জ্যামিতিকে এটির রঙ এবং নিদর্শন দেওয়ার জন্য প্রয়োগ করেন। একটি টেক্সচার একটি উপাদানের উপাদান।

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

সুতরাং আপনার প্রশ্নের উত্তরে - হ্যাঁ পার্থক্য আছে, কিছুটা ওভারল্যাপও রয়েছে - আপনি হয় কোনও লাল উপাদান তৈরি করতে পারেন বা শেড লিখতে পারেন যাতে জিনিসগুলি লাল হিসাবে রেন্ডার করতে পারেন তবে উভয়ই আপনাকে অনেক কিছুতে আপনাকে অনুমতি দেয় অন্যটির সাথে পারিনি।

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

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


1
প্রযুক্তিগতভাবে কোনও টেক্সচার সত্যিকার অর্থে নিজস্ব কোনও উপাদান নয় , এটি সাধারণত কোনও উপাদানের অংশ
বোবোবোবো

1

দেরিতে হলেও, একটি "প্রতারণা" রয়েছে যা আপনাকে আরও ভালভাবে বুঝতে সহায়তা করতে পারে।

একটি উপাদান হ'ল সেই ড্র কলের জন্য একটি নির্দিষ্ট শেডারের সাথে সংযুক্ত সমস্ত জিনিস।

উদাহরণস্বরূপ, উপরের উত্তরে আপনার এই উপাদানটি রয়েছে: [উপাদান] শ্যাডার = নরমালম্যাপডস্পেকুলার.glsl টেক্সচার 1 = Rock.png টেক্সচার 2 = RockNormal.png টেক্সচার3 = RockSpecular.png

যা অনুবাদ করেছে যে আপনি এমন একটি শেডারের সাথে রেন্ডারিং করবেন যা একটি সাধারণ মানচিত্র এবং একটি বিশিষ্ট গণনা করে, এবং এটি সেই শেডারটির ভিতরে 3 টেক্সচার ব্যবহার করবে।

পরে, আপনি একই শেডারটি আবারও ব্যবহার করতে পারেন, অন্য 3 টি টেক্সচার (যেমন গাড়ি, কার্নরমাল এবং কারস্পেকুলার) এর সাথে, আপনি শেডার প্যারামিটারগুলি পরিবর্তন করেছেন বলেই আপনি একটি ভিন্ন উপাদানের সাথে একটি আলাদা ড্র কল করবেন।

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

আমি আশা করি এটি এটি আরও ভালভাবে কল্পনা করতে সহায়তা করে


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