module BABYLON { export class RefractionPostProcess extends PostProcess { private _refRexture: Texture; constructor(name: string, refractionTextureUrl: string, public color: Color3, public depth: number, public colorLevel: number, ratio: number, camera: Camera, samplingMode?: number, engine?: Engine, reusable?: boolean) { super(name, "refraction", ["baseColor", "depth", "colorLevel"], ["refractionSampler"], ratio, camera, samplingMode, engine, reusable); this.onActivate = (cam: Camera) => { this._refRexture = this._refRexture || new BABYLON.Texture(refractionTextureUrl, cam.getScene()); }; this.onApply = (effect: Effect) => { effect.setColor3("baseColor", this.color); effect.setFloat("depth", this.depth); effect.setFloat("colorLevel", this.colorLevel); effect.setTexture("refractionSampler", this._refRexture); }; } // Methods public dispose(camera: Camera): void { if (this._refRexture) { this._refRexture.dispose(); } super.dispose(camera); } } }