用mask组件,加一个背景全黑的,确实可以实现高亮一块区域,然后配合文字,手指什么的,但是如何高亮两个或很多的区域,怎么把红色部分也高亮镂空。。
我当初也有这个需求就放弃使用mask组件,自己写个shader去扣
论坛上有现成的
大神可以分享一下么
请问哪里有现成的
自定义stencil使用cc.Graphic画图想挖几个挖几个,反向遮罩就可以实现啊,类似模拟弹坑效果。
抱歉,不是太关注论坛,明天贴代码.
uniform sampler2D texture;
uniform vec4 color;
uniform vec4 mask1;
uniform vec4 mask2;
uniform vec2 size;
varying vec2 uv0;
float eclosion(vec2 uv, vec4 rect, float w_h) {
vec2 min2f = vec2(rect.r, rect.g - rect.a );
vec2 max2f = vec2(rect.r + rect.b, rect.g);
float maxDis = sqrt(rect.b * rect.b + rect.a * rect.a);
float dis = distance(uv, vec2( (max2f.x + min2f.x) / 2.0, (max2f.y + min2f.y ) / 2.0));
return (dis / maxDis ) * color.a;
}
void main()
{
float w_h = size.x / size.y;
float maxA = color.a;
float a1 = color.a;
float a2 = color.a;
if(mask1.r >= 0.0) {
a1 = eclosion(uv0, mask1, w_h);
}
if (mask2.r >= 0.0) {
a2 = eclosion(uv0, mask2, w_h);
}
float a = min(a1, a2);
a = min(a, color.a);
gl_FragColor = vec4(color.rgb, a);
}
7赞
Mark!Mark!Mark!
