原文: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;
不适用 Pixel Bender的混合模式的截图:
使用 Pixel Bender的混合模式的截图: