تفاوت Shader و Material؟
Shader چیست؟ Material چیست؟ این دو چه تفاوتی با هم دارند؟ در بحث پردازش تصاویر سه بعدی رایانهای این دو کلمه در کنار یکدیگر به وفور استفاده میشوند. Shader در لغت به معنای سایهزن است و البته کاری هم که انجام میدهد واقعا سایهزنی است! در دنیای واقعی انسانها برای شناخت پیرامون خویش از چشم کمک زیادی میگیرند. مغز به کمک چشم، با دریافت بازتاب نور اشیاء پی به وجود و ماهیت آنها میبرد. هنگامی که نور بر جسمی تابیده شود، بسته به شکل هندسی و جنس ماده تشکیل دهنده آن، بعضی از قسمتهای آن جسم روشنتر و برخی نقاط به خاطر وجود سایه، تیرهتر میشوند. همچنین بسته به صیقلی یا زبر بودن، شفاف یا کدر بودن و عوامل دیگر میزان انعکاس و شکست نور تغییر میکند. بنابراین مغز انسان صرفا با تحلیل نقاط روشن و تیره ناشی از نورپردازی، قادر به درک آن جسم است.
به طور خلاصه سایهها نقشی اساسی در فهم انسان از فضای سه بعدی (Perspective) ایفا میکنند. کاری که شیدر یا سایهزن انجام میدهد دقیقا همین است: شبیه سازی سایههای روشن و تاریک روی سطح اجسام. در خط مجرای (Pipeline) پردازش تصاویر سه بعدی، پردازش شیدرها یا سایهزنها معمولا در آخرین فاز انجام میشود. از دید فنی، سایهزنها مجموعهای از دستورالعملها هستند که پردازشگر گرافیکی (GPU) قادر به پردازش آن است. بدون سایهزنها تصویر سه بعدی قابل رویت نخواهد بود و بسیاری از جلوههای ویژه شامل خاک، آب، آتش، دود و مه و غیره تنها با استفاده از سایهزنها قابل رویت هستند. در شکل زیر، چهار شیء با شکل هندسی متفاوت، سایهزنی شدهاند.
پایهایترین سایهزن Diffuse نام دارد که از یک تکسچر (تصویر بافت) و یک رنگ به هنگام سایهزنی استفاده میکند. هر سایهزنی هنگام پردازش میتواند از دادههای مختلفی استفاده کند مثل تکسچر Diffuse، رنگ، میزان Tile شدن در محور افقی و عمودی، میزان Offset در محور افقی و عمودی و غیره. از Material برای نگهداری و تنظیم این دادهها استفاده میشود. در موتور بازی یونیتی، متریالها میتوانند دادهها مختلفی را برحسب نیاز سایهزن در خود نگه دارند ولی از میان آن دادهها یکی اجباری است و حتما باید تعریف شود: نام سایهزن. زمانی که در یونیتی یک متریال ساخته میشود ابتدا باید نام سایهزن آن مشخص شود و سپس بنا برنیازهای آن سایه، یونیتی دادههای دیگر را در دسترس قرار میدهد.
مثلا میتوان یک متریال ساخت که از سایهزن Diffuse و یک تکسچر کاشی برای رندر کردن کمک میگیرد. به عکس زیر نگاه کنید.
سایهزنها به طور معمول روی اشیاء اعمال میشوند ولی نوع دیگری از سایهزنها وجود دارد که بر روی صفحه و پس از پردازش نهایی تصویر انجام میشود. از این روی به آنها Fullscreen Shader یا Image Effect و یا Postprocessing Effect نیز گفته میشود. فیلتر Anti-aliasing یا فیلتر Anisotropic مثالی از این سایهزن است.
به طور کلی سایهزنی جز جدایی ناپذیر پردازش تصاویر سه بعدی است که به دلیل تعدد اشیاء در یک صحنه میتواند، پردازش آنها سنگین میشود و به همین خاطر این پردازشها مستقیما در پردازنده گرافیکی (GPU) انجام میشود تا سرعت محاسبات افزایش یابد و راندمان کار بالاتر برود.
عالی بود ، استفاده کریم