Shader Laboratory
845 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
Forwarded from Kamali
اگر بخواهیم ابر یا کهکشان رو شبیه سازی کنیم حتی با پارتیکل تو انجین های بازی سازی سنگین میشه
به خاطر همین از این روش استفاده می کنند تا هم خروجی واقعی تری داشته باشند و هم خروجی بهینه تری
البته این روش خیلی سنگینه اما نسبت به پارتیکل به نظرم ارزشش رو داره
Forwarded from Kamali
تو این روش ما با استفاده از توابع ریاضی اجسام هندسی رو می سازیم
بعد شما می تونیم خارج از پایپ لاین رندر انجین بازی سازی بیایم و اون آبجکت رو رندر کنیم
Forwarded from Kamali
اولین چیزی که مهمه شما باید بدونی ورودی ها چی هستند
در شکل بالا p همون position هست و s همون scale هست
Forwarded from Kamali
Forwarded from Kamali
1.همیشه باید قبل از رسم یک شکل تعریفشو بدونیم و همچنین
تعریف دایره : دایره مکان هندسی نقاطی از صفحه است که فاصله‌شان از نقطهٔ ثابتی واقع در آن صفحه، مقدار ثابتی باشد. نقطهٔ ثابت مرکز دایره و مقدار ثابت اندازهٔ شعاع دایره نامیده می‌شود.
2.همیشه بهتره دوبعدیشو در نظر بگیریم چون سه بعد شاید برامون یکم پیچیده باشه
به عنوان مثال به جای اینکه sphere رو تصور کنیم circle رو تصور می کنیم چون رسم و تصورش راحت تره
Forwarded from Kamali
شکل دومی محاسباتش خیلی شبیه به شکل اولی هست اما دو تفاوت داره یکی از تابع max و یکی از تابع abs یا absolution (قدرمطلق) استفاده شده که در ادامه بهش می پردازم
Forwarded from Kamali
تو ریاضیات ما یک چیزی داریم تحت عنوان Positive and negative parts

https://en.wikipedia.org/wiki/Positive_and_negative_parts
Forwarded from Kamali
به عنوان مثال
اگر x =5 باشه جواب همون 5 هست
اگر x = -5 باشه جواب 0 هست
Forwarded from Kamali
حالا این به چه درد می خوره!
به درد discard کردن می خوره
Forwarded from Kamali
من تو ShaderToy قدم به قدم پیش رفتم اصلاً بدون این تابع هم میشه با if-else statement
Forwarded from Kamali
return length(p)-b;
Forwarded from Kamali
float udBox( vec3 p, vec3 b )
{
در محور x شکل رو ادامه میدیم
if(p.x<0.){
p.x = 0.;
}

return length(p)-b;
}
Forwarded from Kamali
float udBox( vec3 p, vec3 b )
{
در محور x شکل رو ادامه میدیم
if(p.x<0.){
p.x = 0.;
}
در محور y شکل رو ادامه میدیم
if(p.y<0.){
p.y = 0.;
}

return length(p)-b;
}
Forwarded from Kamali
3.webm
956.4 KB
float udBox( vec3 p, vec3 b )
{
if(p.x<0.){
p.x = 0.;
}

if(p.y<0.){
p.y = 0.;
}

if(p.z<0.){
p.z = 0.;
}

return length(p)-b;
}
Forwarded from Kamali
ولی خب ببین خیلی طولانی شده!
البته برای خلاصه نوشتن بین شرط ها && هم میشه کرد ولی بهتره از معادل تابع ریاضیش استفاده کنیم

float udBox( vec3 p, vec3 b )
{
return length(max(p-b,0.));
}
Forwarded from Kamali
اما شکل هنوز کامل نشده!
یک مشکلی داره و اونم اینه که انگار نصف مکعبه و کُلش نیست!
بهتره از دیدگاه دوبعدی بهش نگاه کنیم تا مشکلش رو بفهمیم
Forwarded from Kamali
Square.PNG
299.8 KB
شکل اینم براتون رسم کردم
همون طور که می بینید از abs برای تقارن uv استفاده شده استفاده شده
Forwarded from Kamali
final shape.webm
439.1 KB
اینم شکل نهایی مکعب