Shader Laboratory
843 subscribers
265 photos
15 videos
59 files
404 links
Shader Laboratory
a channel about shaders in telegram

ID : @smkgames

MyStack : goo.gl/smMuqe 😎👌
Download Telegram
💀 تحلیل و بررسی شیدر های ShaderToy 💀
اگر فیلم ماتریکس رو دیده باشید نوشته ها با یک افکت جالب پایین میان امروز قصد داریم این شیدرو بررسی کنیم
در ابتدا می خواهیم الگوریتم باران ماتریکسی را بررسی کنیم
برای نوشتن این شیدر می توانیم از تابع تانژانت استفاده کنیم.
چون همان طور که از شکل پیداست تابع تانژانت دارای قله و دره ی بزرگی می باشد.
ابتدا تانژانت زمان را به منظور پیروی از مقادیر شکل میگیریم
void mainImage(out vec4 o, vec2 p)
{
p.y /= iResolution.y;
p.y += tan(iTime);
o = vec4(0., p.y, 0., 1.);
}
سپس یک موج سینوسی اعمال می کنیم
sin(x)
ما به موج کوچک تری نیاز داریم تا زیاد به چشم نیاید
می خواهیم قله و دره ها را مطابق این موج نوسان دهیم
sin(0.2 * x)
قبل از اعمال موج سینوسی
بعد از اعمال موج سینوسی
خب الان شاید بگید چه فرقی کرد؟🙄

اینجا براتون بیشتر توضیح دادم:
https://www.desmos.com/calculator/nvtx7ckjji
برای درک بیشتر مقادیر را بزرگ تر در نظر بگیرید به عنوان مثال:
tan(x + sin(3*x))
void mainImage(out vec4 o, vec2 p)
{
p.y /= iResolution.y;
p.y += tan(iTime + sin(.2 * p.x));
o = vec4(0., p.y, 0., 1.);
}
حالا یه تانژانتم اضافه می کنیم تا قله ها و دره های نا منظم تری داشته باشیم
tan(x + sin(.2*x) + tan(x))
و در نهایت برای اینکه خطوط از کمرنگ به پررنگ به صورت smooth بروند از تابع smoothstep استفاده می کنیم
(بنابر توصیه ی کتاب The Book of shader توی کدم از شرط استفاده نکردم به جاش smoothstep استفاده کردم پس همیشه سعی کنید از توابع بیلتین خود زبان شیدر نویسی استفاده کنید)
void mainImage(out vec4 o, vec2 p)
{
p.y /= iResolution.y;
p.y += tan(iTime + tan(p.x) + sin(.2 * p.x));
o = vec4(0., smoothstep(p.y,p.y*5.0,0.5), 0., 1.);
}