babylon.postProcessRenderPass.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. module BABYLON {
  2. export class PostProcessRenderPass {
  3. private _renderList: Mesh[];
  4. private _renderTexture: RenderTargetTexture;
  5. private _scene: Scene;
  6. private _refCount: number = 0;
  7. // private
  8. public _name: string;
  9. constructor(scene: Scene, name: string, size: number, renderList: Mesh[], beforeRender: () => void, afterRender: () => void) {
  10. this._name = name;
  11. this._renderTexture = new RenderTargetTexture(name, size, scene);
  12. this.setRenderList(renderList);
  13. this._renderTexture.onBeforeRenderObservable.add(beforeRender);
  14. this._renderTexture.onAfterRenderObservable.add(afterRender);
  15. this._scene = scene;
  16. this._renderList = renderList;
  17. }
  18. // private
  19. public _incRefCount(): number {
  20. if (this._refCount === 0) {
  21. this._scene.customRenderTargets.push(this._renderTexture);
  22. }
  23. return ++this._refCount;
  24. }
  25. public _decRefCount(): number {
  26. this._refCount--;
  27. if (this._refCount <= 0) {
  28. this._scene.customRenderTargets.splice(this._scene.customRenderTargets.indexOf(this._renderTexture), 1);
  29. }
  30. return this._refCount;
  31. }
  32. public _update(): void {
  33. this.setRenderList(this._renderList);
  34. }
  35. // public
  36. public setRenderList(renderList: Mesh[]): void {
  37. this._renderTexture.renderList = renderList;
  38. }
  39. public getRenderTexture(): RenderTargetTexture {
  40. return this._renderTexture;
  41. }
  42. }
  43. }