質問

OpenGL ES 1.1コード(なしシェーダー)でPhotoshopのブレンドモード(「乗算」、「画面」など)を模倣する必要があります。

HLSLを使用してこれを行う方法については、いくつかのドキュメントがあります

少なくとも動作中の画面モードが必要です。

見ている可能性のある固定パイプラインの実装はありますか?

役に立ちましたか?

解決

Photoshopのほとんどのブレンドモードは、Porter-Duffのブレンドモードに基づいています。

これらは、すべての画像(テクスチャ、レンダーバッファ)があらかじめ乗算された色空間にあることを必要とします。これは通常、すべてのピクセル値にアルファ値を掛けてからテクスチャに保存することで行われます。例えば。完全に透明なピクセルは、事前乗算されていない色空間では黒のように見えます。この色空間に慣れていない場合は、Webで1〜2時間読んでください。これはきちんとした良いコンセプトであり、フォトショップのような構成に必要です。

とにかく-その形式で画像を取得したら、次を使用してSCREENを有効にできます。

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR)

OpenGL | ESパイプラインでは、完全なMULTIPLYモードは使用できません。完全な不透明ピクセルのみを使用する場合は、次を使用して偽造できます。

glBlendFunc(GL_ZERO, GL_SRC_COLOR)

テクスチャとフレームバッファのいずれかの透明ピクセルの結果は間違っています。

scroll top