Add blend mode that sums alphas and does alpha blending for colors

accellbaker
Riccardo Balbo 6 years ago committed by Stephen Gold
parent 784106e0c6
commit 3851c35f08
  1. 11
      jme3-core/src/main/java/com/jme3/material/RenderState.java
  2. 8
      jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java

@ -303,6 +303,17 @@ public class RenderState implements Cloneable, Savable {
* (1 - Source Alpha) * Dest Color -> (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
*/
Alpha,
/**
* Alpha blending, interpolates to source color from dest color
* using source alpha.
* The resulting alpha is the sum between the source alpha and the destination alpha.
* <p>
* Result.rgb = Source Alpha * Source Color +
* (1 - Source Alpha) * Dest Color -> (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
* Result.a = 1 * Source Alpha + 1 * Dest Alpha -> (GL_ONE, GL_ONE)
*
*/
AlphaSumA,
/**
* Multiplies the source and dest colors.
* <p>

@ -789,6 +789,14 @@ public final class GLRenderer implements Renderer {
case Alpha:
blendFunc(RenderState.BlendFunc.Src_Alpha, RenderState.BlendFunc.One_Minus_Src_Alpha);
break;
case AlphaSumA:
blendFuncSeparate(
RenderState.BlendFunc.Src_Alpha,
RenderState.BlendFunc.One_Minus_Src_Alpha,
RenderState.BlendFunc.One,
RenderState.BlendFunc.One
);
break;
case PremultAlpha:
blendFunc(RenderState.BlendFunc.One, RenderState.BlendFunc.One_Minus_Src_Alpha);
break;

Loading…
Cancel
Save