شیدر سیاه و سفید (Greyscale Shader)

شیدر سیاه و سفید (Greyscale Shader)

شیدر

همانطور که در اینجا گفتیم، شیدر (Shader) یکی از منابع مورد نیاز برای ساخت بازی با گیم میکر استودیو است و وظیفه آن ایجاد تغییرات در ظاهر پیکسل هاست. به وسیله شیدرها می توانیم افکت های جذابی را در بازی های خود به وجود آوریم. یکی از این افکت ها، سیاه و سفید کردن بخشی یا تمام صفحه نمایش بازی است که در این درس تصمیم داریم به آموزش همین موضوع در دو قسمت بپردازیم. در قسمت اول، روش اعمال شیدر سیاه و سفید روی تنها یک عنصر از بازی (مثلا یک اسپرایت) را آموزش می دهیم. اما در قسمت دوم، روش اعمال کردن شیدر روی تمام صفحه نمایش را بررسی می کنیم. اما پیش نیازی که برای هر دوبخش نیاز داریم، شیدر greyscale (به معنای سیاه و سفید) است که از قبل برای شما آماده شده و می توانید از دکمه زیر دانلود کرده و به پروژه تان اضافه نمایید.

اعمال شیدر روی یک اسپرایت

بعد از وارد کردن shader_greyscale به پروژه، برای این که بتوانید این شیدر را روی یک اسپرایت اعمال نمایید کافی است در ایونت draw بنویسید:

shader_set(shader_greyscale);

draw_sprite(SPRITE,0,x,y);

shader_reset();

(در خط دوم نام اسپرایت و مختصات مورد نظرتان را بنویسید) همچنان که می بینید، ابتدا کد راه اندازی شیدر را می نویسیم. سپس کد نمایش اسپرایت و در آخر کد متوقف کردن شیدر را قرار می دهیم. به یاد داشته باشید روش کلی استفاده از شیدر معمولا به همین ترتیب است.

اعمال شیدر روی تمام صفحه نمایش

برای اعمال شیدر روی تمامی عناصر موجود در صفحه نمایش لازم است از Surface استفاده کنیم.(در صورتی که با Surface آشنایی ندارید خوب است ابتدا مطالب زیر را بخوانید:)

آموزش استفاده از surface در گیم میکر-قسمت اول

آموزش استفاده از surface در گیم میکر-قسمت دوم

در این مورد هم ابتدا shader_greyscale را به پروژه وارد کنید. سپس به سراغ آبجکتی که وظیفه کنترل کردن ظاهر بازی را دارد بروید و در ایونت Create ابتدا یک متغیر با نام دلخواه surf معرفی کنید. قرار است این متغیر مسئول نگهداری Surface مورد نظر ما باشد.

surf = -1;

سپس در ایونت Step کد زیر را بنویسید:

if !surface_exists(surf)

 {

    surf = surface_create(view_wview[0], view_hview[0]);

    view_surface_id[0] = surf;

}

در این قطعه کد، یک Surface با ابعادی برابر با ابعاد view می سازیم و در خط چهارم تمام محتویات view را به Surface انتقال می دهیم تا بتوانیم در آینده به راحتی شیدر را به تمام view اعمال کنیم. (به جای آنکه تنها به یک عنصر از بازی اعمال شود)

حالا در ایونت Draw GUI :

if surface_exists(surf)

{

shader_set(shader_greyscale);

draw_surface_stretched(surf, 0, 0, display_get_gui_width(), display_get_gui_height());

shader_reset();

    }

همین طور که می بینید، این بار هم ابتدا شیدر را راه اندازی کردیم و در نهایت آن را متوقف کردیم. در بین این دو عملیات نیز، Surface که حاوی تمام محتویات view است را نمایش دادیم. در نتیجه با اعمال شدن شیدر به Surface تمام محتویات قابل دید در صفحه نمایش تحت تاثیر شیدر قرار گرفته و سیاه و سفید می شود.

امیدوارم این مطلب نیز برای شما مفید بوده باشد. اگر سوال یا ابهامی دارید، می توانید در پایین همین صفحه مطرح کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *