@@ -7,4 +7,5 @@ enum BlendMode {
SoftAdd;
Multiply;
Erase;
+ Screen;
}
@@ -106,6 +106,8 @@ class RenderContext {
pass.blend(DstColor, OneMinusSrcAlpha);
case Erase:
pass.blend(Zero, OneMinusSrcAlpha);
+ case Screen:
+ pass.blend(One, OneMinusSrcColor);
manager.fillParams(buffers, compiledShader, currentShaders);
engine.selectMaterial(pass);
@@ -60,6 +60,10 @@ class MeshMaterial extends Material {
mainPass.depthWrite = false;
mainPass.blend(Zero, OneMinusSrcAlpha);
mainPass.setPassName("additive");
+ mainPass.depthWrite = false;
+ mainPass.blend(One, OneMinusSrcColor);
+ mainPass.setPassName("additive");
return blendMode = v;
@@ -93,6 +93,13 @@ abstract BitmapData(InnerData) {
r.x = x;
r.y = y;
this.draw(src.toNative(), m, null, flash.display.BlendMode.MULTIPLY, r, false);
+ var m = tmpMatrix;
+ m.tx = x - srcX;
+ m.ty = y - srcY;
+ r.x = x;
+ r.y = y;
+ this.draw(src.toNative(), m, null, flash.display.BlendMode.SCREEN, r, false);
case SoftAdd:
throw "BlendMode not supported";