Forwarded from Kamali
1.همیشه باید قبل از رسم یک شکل تعریفشو بدونیم و همچنین
تعریف دایره : دایره مکان هندسی نقاطی از صفحه است که فاصلهشان از نقطهٔ ثابتی واقع در آن صفحه، مقدار ثابتی باشد. نقطهٔ ثابت مرکز دایره و مقدار ثابت اندازهٔ شعاع دایره نامیده میشود.
2.همیشه بهتره دوبعدیشو در نظر بگیریم چون سه بعد شاید برامون یکم پیچیده باشه
به عنوان مثال به جای اینکه sphere رو تصور کنیم circle رو تصور می کنیم چون رسم و تصورش راحت تره
تعریف دایره : دایره مکان هندسی نقاطی از صفحه است که فاصلهشان از نقطهٔ ثابتی واقع در آن صفحه، مقدار ثابتی باشد. نقطهٔ ثابت مرکز دایره و مقدار ثابت اندازهٔ شعاع دایره نامیده میشود.
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
https://en.wikipedia.org/wiki/Positive_and_negative_parts
Forwarded from Kamali
حالا این به چه درد می خوره!
به درد discard کردن می خوره
به درد discard کردن می خوره
Forwarded from Kamali
من تو ShaderToy قدم به قدم پیش رفتم اصلاً بدون این تابع هم میشه با if-else statement
Forwarded from Kamali
float udBox( vec3 p, vec3 b )
{
در محور x شکل رو ادامه میدیم
if(p.x<0.){
p.x = 0.;
}
return length(p)-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;
}
{
در محور 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;
}
{
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.));
}
البته برای خلاصه نوشتن بین شرط ها && هم میشه کرد ولی بهتره از معادل تابع ریاضیش استفاده کنیم
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 استفاده شده استفاده شده
همون طور که می بینید از abs برای تقارن uv استفاده شده استفاده شده
Forwarded from Kamali
The Book Of Shaders Examples By Seyed Morteza Kamali.docx
10.9 MB
اینم تمرینات کتاب The Book Of Shader هست که قبلاً انجام دادم
تمرینات این کتاب که به زبان glsl هست رو در محیط NodeBase رسم کردم
امیدوارم مفید باشه
Nodes:
http://acegikmo.com/shaderforge/nodes/
تمرینات این کتاب که به زبان glsl هست رو در محیط NodeBase رسم کردم
امیدوارم مفید باشه
Nodes:
http://acegikmo.com/shaderforge/nodes/
Forwarded from Kamali
خب حالا که کار دستتون اومد می تونید این کارو گسترش بدید
Forwarded from Kamali
Forwarded from Kamali
می تونید از جبر مجموعه ها – اشتراک، اجتماع، تفاضل استفاده کنید تا یک شکل جدید بسازید
Forwarded from Kamali
من تو دوبعدی این به عنوان مثال همین کار رو کردم و شکل های ساده رو با هم ترکیب کردم و یک شکل جدید ساختم