このクロマキー フィルターがどのように機能するかを理解しようとしています。ご存知ない場合は、クロマ キーはグリーン スクリーン効果です。これらの機能のいくつかがどのように機能し、正確に何をしているのかを説明できる人はいますか?
float maskY = 0.2989 * colorToReplace.r + 0.5866 * colorToReplace.g + 0.1145 * colorToReplace.b;
float maskCr = 0.7132 * (colorToReplace.r - maskY);
float maskCb = 0.5647 * (colorToReplace.b - maskY);
float Y = 0.2989 * textureColor.r + 0.5866 * textureColor.g + 0.1145 * textureColor.b;
float Cr = 0.7132 * (textureColor.r - Y);
float Cb = 0.5647 * (textureColor.b - Y);
float blendValue = smoothstep(thresholdSensitivity, thresholdSensitivity + smoothing, distance(vec2(Cr, Cb), vec2(maskCr, maskCb)));
gl_FragColor = vec4(textureColor.rgb * blendValue, 1.0 * blendValue);
最初の 6 行 (置換する色 (おそらく緑) とテクスチャーの色を YCrCb カラー システムに変換) を理解しています。
このフラグメント シェーダーには、thresholdSensitivity と Smoothing の 2 つの入力浮動小数点値があります。
- Threshold Sensitivity は、類似したピクセルを置き換えるためにどの程度色を付ける必要があるかを制御します。
- スムージングは、画像内の類似した色を徐々に置き換える方法を制御します。
これらの値がblendValue行でどのように使用されているかわかりません。blendValue は何を計算しますか? blendValue 行と gl_FragColor 行は実際にどのようにグリーン スクリーン効果を作成しますか?