原文:http://www.pixelbender.cn/?p=73
若要将着色器用于混和模式,请将 Shader 对象指派给前景显示对象 的 blendShader 属性。
如果为 blendShader 属性指定非 null 值,显示对象的 blendMode 属性将自动设置 为 BlendMode.SHADER 。
foreground.blendShader = myShader;
使用着色器作为混和模式时,着色器必须由至少两个输入 定义。
如示例所示,您未在代码中设置输入值。而是将两个混和后的图像自动用作着色器的输入 。
前景图像 设置为第二个 图像。
背景图像 设置为第一个 输入图像。
Pixel Bender中变量定义代码:
input image4 background; input image4 foreground; output pixel4 dst;
as代码:
// 定义背景图形 var backgroundShape:Shape=new Shape(); var g1:Graphics=backgroundShape.graphics; var c1:Array=[0x336600, 0x80ff00]; var a1:Array=[255, 255]; var r1:Array=[100, 255]; var m1:Matrix=new Matrix(); m1.createGradientBox(300, 200); g1.beginGradientFill(GradientType.LINEAR, c1, a1, r1, m1); g1.drawEllipse(0, 0, 300, 200); g1.endFill(); addChild(backgroundShape); // 定义前景图形 var foregroundShape:Shape=new Shape(); var g2:Graphics=foregroundShape.graphics; var c2:Array=[0xff8000, 0x663300]; var a2:Array=[255, 255]; var r2:Array=[100, 255]; var m2:Matrix=new Matrix(); m2.createGradientBox(300, 200); g2.beginGradientFill(GradientType.LINEAR, c2, a2, r2, m2); g2.drawEllipse(100, 0, 300, 200); g2.endFill(); addChild(foregroundShape); // 定义前景图形的混合模式 foregroundShape.blendShader=shader; foregroundShape.blendMode=BlendMode.SHADER;