Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hcmair.starling.effects
- {
- import flash.display3D.Context3D;
- import flash.display3D.Context3DProgramType;
- import starling.rendering.FilterEffect;
- import starling.rendering.Program;
- public class ColorMaskEffect extends FilterEffect
- {
- private var _offsets:Vector.<Number>;
- public function ColorMaskEffect()
- {
- _offsets = new Vector.<Number>(2, true);
- }
- override protected function createProgram():Program
- {
- var vertexShader:String = STD_VERTEX_SHADER;
- var fragmentShader:String =
- "tex ft0, v0, fs0 <2d, linear> \n" + // read the pixel
- "sub ft1, ft1, ft1 \n" + // fill ft1 with zero
- "sge ft0.w, ft0.w, ft1.w \n" + // set the alpha to 1 if greater than zero
- "mov oc, ft0" // move it to the output
- return Program.fromSource(vertexShader, fragmentShader);
- }
- override protected function beforeDraw(context:Context3D):void
- {
- context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, _offsets);
- super.beforeDraw(context);
- }
- public function get maskColor():uint { return _offsets[0]; }
- public function set maskColor(value:uint):void { _offsets[0] = value; }
- public function get alphaOffset():Number { return _offsets[1]; }
- public function set alphaOffset(value:Number):void { _offsets[1] = value; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement