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.);
}
{
p.y /= iResolution.y;
p.y += tan(iTime + sin(.2 * p.x));
o = vec4(0., p.y, 0., 1.);
}
حالا یه تانژانتم اضافه می کنیم تا قله ها و دره های نا منظم تری داشته باشیم
و در نهایت برای اینکه خطوط از کمرنگ به پررنگ به صورت smooth بروند از تابع smoothstep استفاده می کنیم
(بنابر توصیه ی کتاب The Book of shader توی کدم از شرط استفاده نکردم به جاش 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.);
}
{
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.);
}
Shader"ShaderMan/MyShader"{
SubShader{
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
float4 screenCoord : TEXCOORD1;
};
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
o.screenCoord.xy = ComputeScreenPos(o.vertex);
return o;
}
fixed4 frag(v2f i) : SV_Target{
{
i.vertex.y /= _ScreenParams.y;
i.vertex.y += tan(_Time.y + tan(i.vertex.x) + sin(.2 * i.vertex.x));
return fixed4(0., .3 + (i.vertex.y < 0. ? 0. : 1. - i.vertex.y * 3.), 0., 1.);
}
}ENDCG
}
}
}
SubShader{
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
float4 screenCoord : TEXCOORD1;
};
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
o.screenCoord.xy = ComputeScreenPos(o.vertex);
return o;
}
fixed4 frag(v2f i) : SV_Target{
{
i.vertex.y /= _ScreenParams.y;
i.vertex.y += tan(_Time.y + tan(i.vertex.x) + sin(.2 * i.vertex.x));
return fixed4(0., .3 + (i.vertex.y < 0. ? 0. : 1. - i.vertex.y * 3.), 0., 1.);
}
}ENDCG
}
}
}
برای نوشتن شیدر ماتریکس نیاز داریم تا حروف الفبا رو با شیدر بنویسیم چون قراره نوشته ها پایین بیان اما چطوری؟!
به نظرم بهتره یه چیز ساده براتون توضیح بدم به جای اینکه تک تک حروف رو با کد در بیاریم.
با رندوم میشه یه چیز ساده نوشت که در صورت تمایل می تونید گسترشش بدید...
با رندوم میشه یه چیز ساده نوشت که در صورت تمایل می تونید گسترشش بدید...