babylon.postProcessRenderPass.ts 1.7 KB

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