GLSLES使用均匀浮动而不是例如,丢失5-6ms。 0.5

时间:2013-02-01 14:15:26

标签: opengl-es cocos2d-iphone fragment-shader vertex-shader glsles

我有这个片段着色器。在一些“精灵”我想要一个不同的纹理“饱和度”。目前我只设置了一次,但后来我会根据绘制的精灵设置每次绘制。如代码中所述,如果我只是写* 0.5我不会看到性能下降,但如果我使用* u_test,速度会降低5-7ms。这有可能吗?你能想到另一种解决方案吗?我完全走错了路?

varying vec4        v_fragmentColor; 
varying vec2        v_texCoord;
varying vec4        v_secondFragmentColor;

uniform sampler2D   CC_Texture0;

uniform vec3        u_topColor;
uniform vec3        u_centerColor;
uniform vec3        u_bottomColor;
uniform float       u_intensity;
uniform lowp float  u_test;

void main()
{
    //vec4 base = texture2D(CC_Texture0, v_texCoord) * v_fragmentColor * u_test;    // 1. 5-7 ms slower that 2.
    vec4 base = texture2D(CC_Texture0, v_texCoord) * v_fragmentColor * 0.5;         // 2. fast

    vec3 blend = v_secondFragmentColor.rgb;

    vec3 overlay = vec3( 2.0 * base.rgb * blend + base.rgb * base.rgb - 2.0 * base.rgb * base.rgb * blend);

    gl_FragColor = vec4(overlay, base.a);
}

0 个答案:

没有答案