شیدر چیست؟ what is shader in game development
شنبه, ۱ آبان ۱۳۹۵، ۰۵:۳۰ ب.ظ
gameover.blog.ir
مترجم:sajjad3011
shader ، سایه گذار:
در صنعت گرافیک های کامپیوتری،شیدر یک برنامه ی کامپیوتری است که عمل سایه زدن را یا shading انجام می دهد.
shading ، سایه زدن :
عملیات تولید سطوح مناسب از رنگ در یک تصویر، یا، در دوران مدرن، نیز برای تولید جلوه های ویژه و یا انجام ویدئویی post-processing .(نکته: پست پروسسینگ یعنیفرایندهایی که باعث بالابردن کیفیت رندر میشن)
شیدر نویسی یعنی نوشتن کدهایی که باعث ایجاد سایه روی قسمت هایی از سطح مدل ما می شن تا نور به بخش های برخورد کنه و از بخش هایی به طور خاصی منعکس بشه.
مثال: شیدر فونگ و شیدر فلت(صاف و تحت) رو در دو تصویر شکل زیر می بینید:
به عبارت دیگر شیدر،"برنامه ای است که برای جلب چیزی به یک روش خاص و منحصر به فرد به وسیله ی کامپیوتر بکار می رود."
شیدرها اثرات رندر روی سخت افزار های گرافیکی را با درجه بالایی از انعطاف پذیری محاسبه می کنند.
بیشتر شیدرها برای بکار گیری واحد پردازشگر گرافیکی یا GPU (یک cpu ی دیگه داخل کارت گرافیک هست که باعث میشه سی پی یوی اصلی دیگه درگیر پردازش های سنگین بازی نشه)،کدنویسی شده اند،هر چند نیاز شدیدی به این کار نباشد،اما اینکار باعث بهینه سازی و هنگ نکردن سیستم میشه.
شیدر نویسی زبان مخصوص خودش رو داره و در یک فایل جدا کدش رو با ساختار خاصی می نویسیم و برای برنامه دادن به قطعه ی سخت افزاری programmable GPU rendering pipeline یا خطوط لوله ای شکلی که روی سخت افزار GPU ی برنامه پذیر وجود داره ،بکار می ره و که عمدتا جایگزین خط لوله ای شکل تک وظیفه ای شده است که اجازه تنها تبدیلات هندسی مشترک و توابع سایه زنی پیکسلی را دارد.به ویله شیدرها می تونی افکت های سفارشی ایجاد کنیم.
با استفاده از شیدر و الگوریتم های تعریف شده در شیدر می توان،موقعیت، رنگ، اشباع، روشنایی و کنتراست همه پیکسل ها، رئوس، یا تکستچرها را تعریف کرد و همچنین با استفاده از متغیرهای خارجی و یا تکستچر معرفی شده توسط برنامه فراخوانی شده به اسم شیدر می توان خصوصیات ذکر شده را برای رندر یک تصویر نهایی بکار برده و یا تغییر دهیم.
از شیدرها برای ایجاد جلوه های سینمایی post processing و تصاویر تولید شده ی کامپیوتری و بازیها در سطح وسیعی استفاده می کنند.
از سوی دیگر از شیدرها برای روشنایی مدل های ساده، استفاده پیچیده تر شامل تغییر رنگ، اشباع، روشنایی و / یا کنتراست از یک تصویر، تولید تاری، شکوفه نور، نور حجمی، نقشه برداری عادی برای اثرات عمق، بوکه، سایه های قابل شارژ، پوستریزاسیون، دست انداز نقشه برداری، اعوجاج، کلید زنی رنگی (به اصطلاح "پرده سبز پرده آبی /")، تشخیص لبه و تشخیص حرکت، اثرات روانگردان، و طیف گسترده دیگری استفاده می شود.
برخی از انواع شیدرها:
دو بعدی یا 2D Shaders
پیکسلی یا Pixel shaders
سه بعدی یا 3D Shaders
رئوسی یا Vertex shaders
هندسی یا Geometry shaders
موزاییک کاری یا Tessellation shader
محاسباتی یا Compute shaders
...
* نکته:(برای درک پایپ لاین می تونید چند لوله رو فرض کنید که مثلا شش دستور واردش میشه و ظرفیت نگه داری همین 6 دستور رو داره و اولین دستوری که از لوله خارج شد میره توی گام یا لوله ی بعدی و همینطور می یاد پایین و در هر لوله یک سری عملیات روی اونها انجام میشه و این مبحث رو باید توی درس معماری کامپیوتری بخونید تا بهتر درک کنید قضیه رو)
نکته: زبان شیدر نویسی GLSL or GLslang هست و معمولا توی یک فایل متنی با پسوند مورد نیاز در یونیتی یا سایر انجین ها می سازیمش و بعدش می تونیم به مدلهای دلخواه ربطش بدیم تا بر حسب ورودی یا تنظیمات لازم افکت های دلخواه رو روی مدل پیاده سازی کنیم.
۹۵/۰۸/۰۱
بسیار عالی