/src/away3d/filters/tasks/Filter3DBrightPassTask.as

http://github.com/away3d/away3d-core-fp11 · ActionScript · 51 lines · 43 code · 8 blank · 0 comment · 0 complexity · 36b72bbed4978afae1aa60369b9633f8 MD5 · raw file

  1. package away3d.filters.tasks
  2. {
  3. import away3d.cameras.Camera3D;
  4. import away3d.core.managers.Stage3DProxy;
  5. import flash.display3D.Context3DProgramType;
  6. import flash.display3D.textures.Texture;
  7. public class Filter3DBrightPassTask extends Filter3DTaskBase
  8. {
  9. private var _brightPassData:Vector.<Number>;
  10. private var _threshold:Number;
  11. public function Filter3DBrightPassTask(threshold:Number = .75)
  12. {
  13. super();
  14. _threshold = threshold;
  15. _brightPassData = Vector.<Number>([threshold, 1/(1 - threshold), 0, 0]);
  16. }
  17. public function get threshold():Number
  18. {
  19. return _threshold;
  20. }
  21. public function set threshold(value:Number):void
  22. {
  23. _threshold = value;
  24. _brightPassData[0] = value;
  25. _brightPassData[1] = 1/(1 - value);
  26. }
  27. override protected function getFragmentCode():String
  28. {
  29. return "tex ft0, v0, fs0 <2d,linear,clamp> \n" +
  30. "dp3 ft1.x, ft0.xyz, ft0.xyz \n" +
  31. "sqt ft1.x, ft1.x \n" +
  32. "sub ft1.y, ft1.x, fc0.x \n" +
  33. "mul ft1.y, ft1.y, fc0.y \n" +
  34. "sat ft1.y, ft1.y \n" +
  35. "mul ft0.xyz, ft0.xyz, ft1.y \n" +
  36. "mov oc, ft0 \n";
  37. }
  38. override public function activate(stage3DProxy:Stage3DProxy, camera3D:Camera3D, depthTexture:Texture):void
  39. {
  40. stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.FRAGMENT, 0, _brightPassData, 1);
  41. }
  42. }
  43. }