babylon.postProcessRenderPipeline.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. var BABYLON;
  2. (function (BABYLON) {
  3. var PostProcessRenderPipeline = (function () {
  4. function PostProcessRenderPipeline(engine, name) {
  5. this._engine = engine;
  6. this._name = name;
  7. this._renderEffects = [];
  8. this._renderEffectsForIsolatedPass = [];
  9. this._cameras = [];
  10. }
  11. PostProcessRenderPipeline.prototype.addEffect = function (renderEffect) {
  12. this._renderEffects[renderEffect._name] = renderEffect;
  13. };
  14. PostProcessRenderPipeline.prototype.enableEffect = function (renderEffectName, cameras) {
  15. var renderEffects = this._renderEffects[renderEffectName];
  16. if (!renderEffects) {
  17. return;
  18. }
  19. renderEffects.enable(BABYLON.Tools.MakeArray(cameras || this._cameras));
  20. };
  21. PostProcessRenderPipeline.prototype.disableEffect = function (renderEffectName, cameras) {
  22. var renderEffects = this._renderEffects[renderEffectName];
  23. if (!renderEffects) {
  24. return;
  25. }
  26. renderEffects.disable(BABYLON.Tools.MakeArray(cameras || this._cameras));
  27. };
  28. PostProcessRenderPipeline.prototype.attachCameras = function (cameras, unique) {
  29. var _cam = BABYLON.Tools.MakeArray(cameras || this._cameras);
  30. var indicesToDelete = [];
  31. for (var i = 0; i < _cam.length; i++) {
  32. var camera = _cam[i];
  33. var cameraName = camera.name;
  34. if (this._cameras.indexOf(camera) === -1) {
  35. this._cameras[cameraName] = camera;
  36. } else if (unique) {
  37. indicesToDelete.push(i);
  38. }
  39. }
  40. for (var i = 0; i < indicesToDelete.length; i++) {
  41. cameras.splice(indicesToDelete[i], 1);
  42. }
  43. for (var renderEffectName in this._renderEffects) {
  44. this._renderEffects[renderEffectName]._attachCameras(_cam);
  45. }
  46. };
  47. PostProcessRenderPipeline.prototype.detachCameras = function (cameras) {
  48. var _cam = BABYLON.Tools.MakeArray(cameras || this._cameras);
  49. for (var renderEffectName in this._renderEffects) {
  50. this._renderEffects[renderEffectName]._detachCameras(_cam);
  51. }
  52. for (var i = 0; i < _cam.length; i++) {
  53. this._cameras.splice(this._cameras.indexOf(_cam[i]), 1);
  54. }
  55. };
  56. PostProcessRenderPipeline.prototype.enableDisplayOnlyPass = function (passName, cameras) {
  57. var _cam = BABYLON.Tools.MakeArray(cameras || this._cameras);
  58. var pass = null;
  59. for (var renderEffectName in this._renderEffects) {
  60. pass = this._renderEffects[renderEffectName].getPass(passName);
  61. if (pass != null) {
  62. break;
  63. }
  64. }
  65. if (pass == null) {
  66. return;
  67. }
  68. for (var renderEffectName in this._renderEffects) {
  69. this._renderEffects[renderEffectName]._disable(_cam);
  70. }
  71. pass._name = PostProcessRenderPipeline.PASS_SAMPLER_NAME;
  72. for (var i = 0; i < _cam.length; i++) {
  73. this._renderEffectsForIsolatedPass[_cam[i].name] = this._renderEffectsForIsolatedPass[_cam[i].name] || new BABYLON.PostProcessRenderEffect(this._engine, PostProcessRenderPipeline.PASS_EFFECT_NAME, "BABYLON.DisplayPassPostProcess", 1.0, null, null);
  74. this._renderEffectsForIsolatedPass[_cam[i].name].emptyPasses();
  75. this._renderEffectsForIsolatedPass[_cam[i].name].addPass(pass);
  76. this._renderEffectsForIsolatedPass[_cam[i].name]._attachCameras(_cam[i]);
  77. }
  78. };
  79. PostProcessRenderPipeline.prototype.disableDisplayOnlyPass = function (cameras) {
  80. var _cam = BABYLON.Tools.MakeArray(cameras || this._cameras);
  81. for (var i = 0; i < _cam.length; i++) {
  82. this._renderEffectsForIsolatedPass[_cam[i].name] = this._renderEffectsForIsolatedPass[_cam[i].name] || new BABYLON.PostProcessRenderEffect(this._engine, PostProcessRenderPipeline.PASS_EFFECT_NAME, "BABYLON.DisplayPassPostProcess", 1.0, null, null);
  83. this._renderEffectsForIsolatedPass[_cam[i].name]._disable(_cam[i]);
  84. }
  85. for (var renderEffectName in this._renderEffects) {
  86. this._renderEffects[renderEffectName]._enable(_cam);
  87. }
  88. };
  89. PostProcessRenderPipeline.prototype._update = function () {
  90. for (var renderEffectName in this._renderEffects) {
  91. this._renderEffects[renderEffectName]._update();
  92. }
  93. for (var i = 0; i < this._cameras.length; i++) {
  94. if (this._renderEffectsForIsolatedPass[this._cameras[i].name]) {
  95. this._renderEffectsForIsolatedPass[this._cameras[i].name]._update();
  96. }
  97. }
  98. };
  99. PostProcessRenderPipeline.PASS_EFFECT_NAME = "passEffect";
  100. PostProcessRenderPipeline.PASS_SAMPLER_NAME = "passSampler";
  101. return PostProcessRenderPipeline;
  102. })();
  103. BABYLON.PostProcessRenderPipeline = PostProcessRenderPipeline;
  104. })(BABYLON || (BABYLON = {}));
  105. //# sourceMappingURL=babylon.postProcessRenderPipeline.js.map