/src/away3d/filters/tasks/Filter3DXFadeCompositeTask.as

http://github.com/away3d/away3d-core-fp11 · ActionScript · 72 lines · 59 code · 13 blank · 0 comment · 3 complexity · f80d1b5477a86b50ce06959df1d07a3e MD5 · raw file

  1. package away3d.filters.tasks
  2. {
  3. import away3d.arcane;
  4. import away3d.cameras.Camera3D;
  5. import away3d.core.managers.Stage3DProxy;
  6. import flash.display3D.Context3D;
  7. import flash.display3D.Context3DProgramType;
  8. import flash.display3D.textures.Texture;
  9. import flash.display3D.textures.TextureBase;
  10. use namespace arcane;
  11. public class Filter3DXFadeCompositeTask extends Filter3DTaskBase
  12. {
  13. private var _data:Vector.<Number>;
  14. private var _overlayTexture:TextureBase;
  15. public function Filter3DXFadeCompositeTask(amount:Number)
  16. {
  17. super();
  18. if (amount < 0)
  19. amount = 0;
  20. else if (amount > 1)
  21. amount = 1;
  22. _data = Vector.<Number>([ amount, 0, 0, 0 ]);
  23. }
  24. public function get overlayTexture():TextureBase
  25. {
  26. return _overlayTexture;
  27. }
  28. public function set overlayTexture(value:TextureBase):void
  29. {
  30. _overlayTexture = value;
  31. }
  32. public function get amount():Number
  33. {
  34. return _data[0];
  35. }
  36. public function set amount(value:Number):void
  37. {
  38. _data[0] = value;
  39. }
  40. override protected function getFragmentCode():String
  41. {
  42. return "tex ft0, v0, fs0 <2d,nearest> \n" +
  43. "tex ft1, v0, fs1 <2d,nearest> \n" +
  44. "sub ft1, ft1, ft0 \n" +
  45. "mul ft1, ft1, fc0.x \n" +
  46. "add oc, ft1, ft0 \n";
  47. }
  48. override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void
  49. {
  50. var context:Context3D = stage3DProxy._context3D;
  51. context.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, _data, 1);
  52. context.setTextureAt(1, _overlayTexture);
  53. }
  54. override public function deactivate(stage3DProxy:Stage3DProxy):void
  55. {
  56. stage3DProxy._context3D.setTextureAt(1, null);
  57. }
  58. }
  59. }