babylon.postProcessRenderPipelineManager.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. module BABYLON {
  2. export class PostProcessRenderPipelineManager {
  3. private _renderPipelines: {[Key:string]:PostProcessRenderPipeline};
  4. constructor() {
  5. this._renderPipelines = {};
  6. }
  7. public addPipeline(renderPipeline: PostProcessRenderPipeline): void {
  8. this._renderPipelines[renderPipeline._name] = renderPipeline;
  9. }
  10. public attachCamerasToRenderPipeline(renderPipelineName: string, cameras: Camera, unique?: boolean): void;
  11. public attachCamerasToRenderPipeline(renderPipelineName: string, cameras: Camera[], unique?: boolean): void;
  12. public attachCamerasToRenderPipeline(renderPipelineName: string, cameras: any, unique: boolean = false): void {
  13. var renderPipeline: PostProcessRenderPipeline = this._renderPipelines[renderPipelineName];
  14. if (!renderPipeline) {
  15. return;
  16. }
  17. renderPipeline._attachCameras(cameras, unique);
  18. }
  19. public detachCamerasFromRenderPipeline(renderPipelineName: string, cameras: Camera): void;
  20. public detachCamerasFromRenderPipeline(renderPipelineName: string, cameras: Camera[]): void;
  21. public detachCamerasFromRenderPipeline(renderPipelineName: string, cameras: any): void {
  22. var renderPipeline: PostProcessRenderPipeline = this._renderPipelines[renderPipelineName];
  23. if (!renderPipeline) {
  24. return;
  25. }
  26. renderPipeline._detachCameras(cameras);
  27. }
  28. public enableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera): void;
  29. public enableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera[]): void;
  30. public enableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: any): void {
  31. var renderPipeline: PostProcessRenderPipeline = this._renderPipelines[renderPipelineName];
  32. if (!renderPipeline) {
  33. return;
  34. }
  35. renderPipeline._enableEffect(renderEffectName, cameras);
  36. }
  37. public disableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera): void;
  38. public disableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: Camera[]): void;
  39. public disableEffectInPipeline(renderPipelineName: string, renderEffectName: string, cameras: any): void {
  40. var renderPipeline: PostProcessRenderPipeline = this._renderPipelines[renderPipelineName];
  41. if (!renderPipeline) {
  42. return;
  43. }
  44. renderPipeline._disableEffect(renderEffectName, cameras);
  45. }
  46. public update(): void {
  47. for (var renderPipelineName in this._renderPipelines) {
  48. if (this._renderPipelines.hasOwnProperty(renderPipelineName)) {
  49. var pipeline = this._renderPipelines[renderPipelineName];
  50. if (!pipeline.isSupported) {
  51. pipeline.dispose();
  52. delete this._renderPipelines[renderPipelineName];
  53. } else {
  54. pipeline._update();
  55. }
  56. }
  57. }
  58. }
  59. public _rebuild(): void {
  60. for (var renderPipelineName in this._renderPipelines) {
  61. if (this._renderPipelines.hasOwnProperty(renderPipelineName)) {
  62. var pipeline = this._renderPipelines[renderPipelineName];
  63. pipeline._rebuild();
  64. }
  65. }
  66. }
  67. public dispose(): void {
  68. for (var renderPipelineName in this._renderPipelines) {
  69. if (this._renderPipelines.hasOwnProperty(renderPipelineName)) {
  70. var pipeline = this._renderPipelines[renderPipelineName];
  71. pipeline.dispose();
  72. }
  73. }
  74. }
  75. }
  76. }