0

これは緑色の画面でうまく機能します。私の背景は緑色で、このコードを使用すると緑色 = アルファになります。

lowp vec4 textureColor = texture2D(u_samplers2D[0], vTextu);

lowp float rbAverage = textureColor.r * 0.5 + textureColor.b * 0.5;
lowp float gDelta = textureColor.g - rbAverage;
textureColor.a = 1.0 - smoothstep(0.0, 0.25, gDelta);
textureColor.a = textureColor.a * textureColor.a * textureColor.a;
gl_FragColor = textureColor;

緑の代わりに黒の背景を使用するようにコードを変更するにはどうすればよいですか? 濃い赤、緑、青の値を取得して、それをアルファとして使用できると思いますか? どんなポインタでも親切です。

4

2 に答える 2

0

値が黒にどれだけ近いかを計算できます。最も簡単な方法は、rg 値と b 値の最大値を取得し、次に色が不透明であると見なすときにしきい値を設定し、疑似コードでアルファ値を [0..1] にマップすることです。

float brightness = max(textureColor.r, textureColor.g, textureColor.b);
float threshold = 0.1;
float alpha = brightness > threshold ? 1 : (threshold - brightness) / threshold;
gl_FragColor = vec4(textureColor.rgb, alpha);
于 2013-07-03T14:15:21.853 に答える