This commit is contained in:
yeshao2069
2023-06-25 20:00:43 +08:00
parent 06c316528a
commit a9f38753fc
2 changed files with 26 additions and 14 deletions

View File

@@ -17,8 +17,8 @@ CCEffect %{
cullMode: none
properties:
alphaThreshold: { value: 0.5 }
mainTex: { value: white }
mainTex2: { value: white }
bgTex: { value: white }
noiseTex: { value: white }
}%
CCProgram sprite-vs %{
@@ -72,34 +72,46 @@ CCProgram sprite-fs %{
in vec4 color;
in vec2 uv0;
uniform sampler2D mainTex;
uniform sampler2D mainTex2;
// 背景底图
uniform sampler2D bgTex;
// 噪声贴图
uniform sampler2D noiseTex;
// 随机函数,将二维坐标转为一维随机值
float random (vec2 st) {
return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);
}
vec4 frag () {
vec3 c = vec3(0.);
// 从 cc_time 获取全局的时间变量, 用于获取噪声值
float t = cc_time.x * 0.6;
vec2 off1 = texture(mainTex2, uv0 + t * vec2(.5,.1)).xy;
// 从噪声贴图中采样噪声值
vec2 off1 = texture(noiseTex, uv0 + t * vec2(.5, .1)).xy;
// 噪声值 进行一定的缩放(避免数值过大)
off1 *= .005;
c += texture(mainTex, off1 + uv0).xyz;
c *= smoothstep(-.5 ,1.3, uv0.y) - .3;
// 通过 uv 并进行一定的偏移来采样背景贴图
c += texture(bgTex, off1 + uv0).xyz;
// 使用平滑阶段函数将 UV 的 y 限定在 [-0.8 ~ 1.0] 之间
c *= smoothstep(-.5 , 1.3, uv0.y) - .3;
// 获取原色 UV 并进行 UV.y 的缩放
vec2 mouv = uv0;
mouv.y *= 20.;
// 对 uv.y 数值向下取整
float n3 = floor(mouv.y);
// 获取 UV 的随机值 n4
float n4 = random(vec2(n3, n3)) + .3;
// 获取原始 UV 并进行宽比缩放
vec2 baseuv = uv0;
vec2 scale = vec2(4., 3.);
baseuv = baseuv * scale;
// 对 UV.x 进行偏移, 并进行随机移动
baseuv.x += t * .1 * n4;
float c1 = texture(mainTex2, baseuv).x;
// 从噪声贴图上采样随机点
float c1 = texture(noiseTex, baseuv).x;
// 使用平滑阶段函数将随机噪点大小限制在 [0.0 ~ 0.23] 之间
c1 = smoothstep(0.23, 0., c1);
// 将随机噪点叠加到 color 上
c += vec3(c1);
return vec4(c, 1.);

View File

@@ -26,11 +26,11 @@
],
"_props": [
{
"mainTex": {
"bgTex": {
"__uuid__": "ac08b289-bda1-4316-bacc-10368812eb1b@6c48a",
"__expectedType__": "cc.Texture2D"
},
"mainTex2": {
"noiseTex": {
"__uuid__": "d31cc9ff-a94a-462e-b2c5-0f0cb8d046cd@6c48a",
"__expectedType__": "cc.Texture2D"
}