王师傅,为啥我在编辑器预览是正常的但是在浏览器成了一坨。带佬,带带弟弟!
编辑器:
浏览器:
没勾选pakeable
我找到问题了,不用麻烦带佬了,是我自己拖错图了。
最大的那一层会被第二层覆盖,感觉是在第二层的后面,次大的第二层和最小的第三层感觉是对的,
请教楼主,怎么改成移动时让最大的那一层半透明盖住第二层?即三层都是远小近大的感觉,且移动重叠时,视觉上近的会挡住远的?
看你楼上,那个看起来解决了。
看了下效果,的确是我想表达的那个意思。楼主威武!
怎么设置这些圆的透明度?
那个书还更吗,我看他说后续git上更
牛哇 厉害厉害
大佬你好,可以给新手一个机会嘛,我照着来打,还是报错了,能否给一个demo参考一下,急需这个效果
上面有人贴上了完整的代码,扒拉一下评论区就
// Effect Syntax Guide: https://github.com/cocos-creator/docs-3d/blob/master/zh/material-system/effect-syntax.md
CCEffect %{
techniques:
- name: opaque
passes:
- vert: general-vs:vert # builtin header
frag: unlit-fs:frag
properties: &props
mainTexture: { value: black }
mainColor: { value: [0, 0, 0, 1], editor: { type: color } }
location: {}
# blendState:
# targets:
# - blend: true
# blendSrc: src_alpha
# blendDst: one_minus_src_alpha
# blendSrcAlpha: src_alpha
# blendDstAlpha: one_minus_src_alpha
}%
CCProgram unlit-fs %{
precision highp float;
#include <output>
#include <cc-fog-fs>
#include <cc-global>
in vec2 v_uv;
in float blinkTransparency;
uniform sampler2D mainTexture;
uniform Constant {
vec4 mainColor;
vec4 location[8];
};
float hashOld12(vec2 p){
return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453);
}
float drawGird(vec2 p){
if(p.x > 0. && p.x < 0.01){
return 1.;
}
if(p.x > 0.99 && p.x < 1.){
return 1.;
}
if(p.y > 0. && p.y < 0.01){
return 1.;
}
if(p.y > 0.99 && p.y < 1.){
return 1.;
}
return 0.;
}
float drawLayer(float scale,vec2 uv)
{
// 注释设 scale为10的情况
// 输出值
float co = 0.;
// 拷贝一份uv用,不修改原uv
vec2 uv1 = uv;
// uv值范围从 0-1变为 0-scale scale值为10就是0-10范围
uv1 *= scale;
// floor向下取整,计算出格子所在下标,
// 10*10的格子,如果uv是 0.2345,0.2345,uv1就是2.345,2.345
// 取整后 即为该uv所在格子下表,2,2
// 0.2 <= uv < 0.3 该范围内所有uv坐标,处理后hv均为 2,2
vec2 hvtemp = floor(uv1);
float n = hashOld12(vec2(hvtemp.y));
uv1.x += n;
// floor向下取整,计算出格子所在下标,
// 10*10的格子,如果uv是 0.2345,0.2345,uv1就是2.345,2.345
// 取整后 即为该uv所在格子下表,2,2
// 0.2 <= uv < 0.3 该范围内所有uv坐标,处理后hv均为 2,2
vec2 hv = floor(uv1);
// fr是 fract对数字取小数部分, 0.2345,0.2345 -> uv1 2.345,2.345 -> 0.345,0.345
// 如 0.2 <= uv < 0.3 处理后就是一个范围 0-1的范围
vec2 fr = fract(uv1);
// 画圆,用fr(即格内坐标)和 0.5,0.5的点的距离作为颜色值,circle范围0-0.5
float circle = distance(fr,vec2(.5));
// 上面的结果是距离值计算出来的,有明暗变化,用step把圆内都变成纯白色
// float radius = 0.4; // 半径
float radius = hashOld12(hv);
float strength = radius;
radius = radius * 0.3 + 0.1;
float f1 = mod(floor(radius * 10.),2.); // 0 or 1
radius *= f1;
circle = step(radius,circle);
// 1. - circle 翻转色值,使距离圆心越近颜色越亮
circle = 1. - circle;
circle*=strength;
co += circle;
co += drawGird(fr);
return co;
}
vec4 frag () {
vec4 o = vec4(0,0,0,0);
o.xyz += drawLayer(20.,v_uv);
o.a = 1.;
return CCFragOutput(o);
}
}%
改了一下 这是creator3.x 版本的 ,但是我不李姐呀,为啥这个co变量这么强大,这么多颜色和float加起来可以看到这么好看的图案,而不是一团糊掉的东西,有大佬给我解答一下是什么原理嘛?
大佬你好,我也遇到你这个问题了,但是你的回答我没看懂,我比较菜 能否贴一下你的代码我参考一下,我看不懂p是拿来的 然后off.x 用在哪
MARK学习
mark !
再次交作业了,大佬流啤

那个效果是苹果壁纸
膜拜大佬 改天交作业