mirror of
https://gitee.com/yeshao2069/cocos-creator-shader.git
synced 2026-05-07 00:59:56 +08:00
update
This commit is contained in:
@@ -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.);
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user