问下shader a_position到手机端位置的问题

CCProgram vs %{

precision highp float;

#include

#include

in vec3 a_position;

in vec4 a_color;

out vec4 v_color;

in float a_dist;

out float v_dist;

out vec3 out_pos;

uniform ARGS {

  float inner_radius = 200.0;

};

void main () {

vec4 pos = vec4(a_position, 1);

pos = cc_matViewProj * cc_matWorld * pos;

v_color = a_color;

v_dist = a_dist;

out_pos = a_position;

gl_Position = pos;

}

}%

CCProgram fs %{

#if CC_SUPPORT_standard_derivatives

#extension GL_OES_standard_derivatives : enable

#endif

precision highp float;

#include

in vec4 v_color;

in float v_dist;

in vec3 out_pos;

in float pos_x;

void main () {

    vec4 o = v_color;

    ALPHA_TEST(o);

    #if CC_SUPPORT_standard_derivatives

    float aa = fwidth(v_dist);

    #else

    float aa = 0.05;

    #endif

    

    float dis = sqrt(pow(out_pos.x, 2.) + pow(out_pos.y, 2.));

    if(dis < 200.) {

       discard;

    }

    float alpha = 1. - smoothstep(-aa, 0., abs(v_dist) - 1.0);

    o.rgb *= o.a;

    o *= alpha;

    gl_FragColor = o;

}

}%

1赞

我绘制一个图形,需要中间挖空一个圆出来,在web是好的,但是到安卓后发现
float dis = sqrt(pow(out_pos.x, 2.) + pow(out_pos.y, 2.));

    if(dis < 200.) {

       discard;

    }挖空的不是我想要的位置,在偏左下角,求问下怎么解决

动态合图关了看看

是个是graphics画的,不是sprite,应该跟合图没关系把?

我也遇到过,解决办法是新增一个自定义attribute,冗余一份a_position

我在vs里面创建的这个out_posout_pos不行啊?

进VS时值已经变了,在shader外冗余

啊?shader不是特别熟练,你说的在shader外冗余不是特别清楚,能举个实例吗?谢谢

你的a_dist怎么传到vs的?创建一个 a_position2,值和a_position一样。

是要改cocos源码吗?