0

私はこのフラグメントシェーダーを持っています。一部の「スプライト」では、テクスチャの異なる「彩度」が必要です。現時点では一度だけ設定しますが、後で描画されるスプライトに応じて描画ごとに設定します。コードに記載されているように、* 0.5 と書くだけではパフォーマンスの低下は見られませんが、* u_test を使用すると速度が約 5 ~ 7 ミリ秒低下します。それは可能でしょうか?他の解決策を考えてもらえますか? 私は完全に間違った方向に進んでいますか?

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);
}
4

0 に答える 0