Browse Source

Fix Glow/Bloom and Nightly

sebastien 7 years ago
parent
commit
b34c6e6b67
30 changed files with 35643 additions and 35764 deletions
  1. 19415 19426
      Playground/babylon.d.txt
  2. 15995 15996
      dist/preview release/babylon.d.ts
  3. 42 42
      dist/preview release/babylon.js
  4. 15 10
      dist/preview release/babylon.max.js
  5. 43 43
      dist/preview release/babylon.worker.js
  6. 15 10
      dist/preview release/es6.js
  7. 0 10
      dist/preview release/gui/babylon.gui.d.ts
  8. 0 10
      dist/preview release/gui/babylon.gui.js
  9. 4 4
      dist/preview release/gui/babylon.gui.min.js
  10. 0 10
      dist/preview release/gui/babylon.gui.module.d.ts
  11. 4 4
      dist/preview release/inspector/babylon.inspector.bundle.js
  12. 3 3
      dist/preview release/inspector/babylon.inspector.min.js
  13. 2 2
      dist/preview release/loaders/babylon.glTF1FileLoader.min.js
  14. 2 2
      dist/preview release/loaders/babylon.glTF2FileLoader.min.js
  15. 3 3
      dist/preview release/loaders/babylon.glTFFileLoader.min.js
  16. 1 1
      dist/preview release/loaders/babylon.objFileLoader.min.js
  17. 3 3
      dist/preview release/loaders/babylonjs.loaders.min.js
  18. 1 1
      dist/preview release/materialsLibrary/babylon.customMaterial.min.js
  19. 1 1
      dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js
  20. 1 1
      dist/preview release/materialsLibrary/babylon.waterMaterial.min.js
  21. 3 3
      dist/preview release/materialsLibrary/babylonjs.materials.min.js
  22. 1 1
      dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js
  23. 1 1
      dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js
  24. 1 1
      dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js
  25. 1 1
      dist/preview release/serializers/babylon.glTF2Serializer.min.js
  26. 1 1
      dist/preview release/serializers/babylonjs.serializers.min.js
  27. 53 53
      dist/preview release/viewer/babylon.viewer.js
  28. 16 110
      dist/preview release/viewer/babylon.viewer.max.js
  29. 14 6
      src/Layer/babylon.glowLayer.ts
  30. 2 5
      src/PostProcess/babylon.bloomEffect.ts

File diff suppressed because it is too large
+ 19415 - 19426
Playground/babylon.d.txt


File diff suppressed because it is too large
+ 15995 - 15996
dist/preview release/babylon.d.ts


File diff suppressed because it is too large
+ 42 - 42
dist/preview release/babylon.js


+ 15 - 10
dist/preview release/babylon.max.js

@@ -71187,10 +71187,8 @@ var BABYLON;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.autoClear = false;
             _this._blurY.autoClear = false;
             _this.kernel = bloomKernel;
             _this.kernel = bloomKernel;
-            _this._upscale = new BABYLON.PassPostProcess("upscale", bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
-            _this._upscale.autoClear = false;
-            _this._effects = [_this._downscale, _this._blurX, _this._blurY, _this._upscale];
-            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, 1, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
+            _this._effects = [_this._downscale, _this._blurX, _this._blurY];
+            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
             _this._merge.autoClear = false;
             _this._merge.autoClear = false;
             _this._effects.push(_this._merge);
             _this._effects.push(_this._merge);
             return _this;
             return _this;
@@ -88337,10 +88335,17 @@ var BABYLON;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
+            var textureType = 0;
+            if (this._engine.getCaps().textureHalfFloatRender) {
+                textureType = BABYLON.Engine.TEXTURETYPE_HALF_FLOAT;
+            }
+            else {
+                textureType = BABYLON.Engine.TEXTURETYPE_UNSIGNED_INT;
+            }
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88351,7 +88356,7 @@ var BABYLON;
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88361,7 +88366,7 @@ var BABYLON;
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
@@ -88370,11 +88375,11 @@ var BABYLON;
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
@@ -88383,7 +88388,7 @@ var BABYLON;
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];

File diff suppressed because it is too large
+ 43 - 43
dist/preview release/babylon.worker.js


+ 15 - 10
dist/preview release/es6.js

@@ -71159,10 +71159,8 @@ var BABYLON;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.autoClear = false;
             _this._blurY.autoClear = false;
             _this.kernel = bloomKernel;
             _this.kernel = bloomKernel;
-            _this._upscale = new BABYLON.PassPostProcess("upscale", bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
-            _this._upscale.autoClear = false;
-            _this._effects = [_this._downscale, _this._blurX, _this._blurY, _this._upscale];
-            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, 1, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
+            _this._effects = [_this._downscale, _this._blurX, _this._blurY];
+            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
             _this._merge.autoClear = false;
             _this._merge.autoClear = false;
             _this._effects.push(_this._merge);
             _this._effects.push(_this._merge);
             return _this;
             return _this;
@@ -88309,10 +88307,17 @@ var BABYLON;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
+            var textureType = 0;
+            if (this._engine.getCaps().textureHalfFloatRender) {
+                textureType = BABYLON.Engine.TEXTURETYPE_HALF_FLOAT;
+            }
+            else {
+                textureType = BABYLON.Engine.TEXTURETYPE_UNSIGNED_INT;
+            }
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88323,7 +88328,7 @@ var BABYLON;
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88333,7 +88338,7 @@ var BABYLON;
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
@@ -88342,11 +88347,11 @@ var BABYLON;
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
@@ -88355,7 +88360,7 @@ var BABYLON;
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];

+ 0 - 10
dist/preview release/gui/babylon.gui.d.ts

@@ -211,42 +211,34 @@ declare module BABYLON.GUI {
         readonly typeName: string;
         readonly typeName: string;
         /**
         /**
         * An event triggered when the pointer move over the control.
         * An event triggered when the pointer move over the control.
-        * @type {BABYLON.Observable}
         */
         */
         onPointerMoveObservable: Observable<Vector2>;
         onPointerMoveObservable: Observable<Vector2>;
         /**
         /**
         * An event triggered when the pointer move out of the control.
         * An event triggered when the pointer move out of the control.
-        * @type {BABYLON.Observable}
         */
         */
         onPointerOutObservable: Observable<Control>;
         onPointerOutObservable: Observable<Control>;
         /**
         /**
         * An event triggered when the pointer taps the control
         * An event triggered when the pointer taps the control
-        * @type {BABYLON.Observable}
         */
         */
         onPointerDownObservable: Observable<Vector2WithInfo>;
         onPointerDownObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when pointer up
         * An event triggered when pointer up
-        * @type {BABYLON.Observable}
         */
         */
         onPointerUpObservable: Observable<Vector2WithInfo>;
         onPointerUpObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when a control is clicked on
         * An event triggered when a control is clicked on
-        * @type {BABYLON.Observable}
         */
         */
         onPointerClickObservable: Observable<Vector2WithInfo>;
         onPointerClickObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when pointer enters the control
         * An event triggered when pointer enters the control
-        * @type {BABYLON.Observable}
         */
         */
         onPointerEnterObservable: Observable<Control>;
         onPointerEnterObservable: Observable<Control>;
         /**
         /**
         * An event triggered when the control is marked as dirty
         * An event triggered when the control is marked as dirty
-        * @type {BABYLON.Observable}
         */
         */
         onDirtyObservable: Observable<Control>;
         onDirtyObservable: Observable<Control>;
         /**
         /**
        * An event triggered after the control is drawn
        * An event triggered after the control is drawn
-       * @type {BABYLON.Observable}
        */
        */
         onAfterDrawObservable: Observable<Control>;
         onAfterDrawObservable: Observable<Control>;
         alpha: number;
         alpha: number;
@@ -571,12 +563,10 @@ declare module BABYLON.GUI {
         private _outlineColor;
         private _outlineColor;
         /**
         /**
         * An event triggered after the text is changed
         * An event triggered after the text is changed
-        * @type {BABYLON.Observable}
         */
         */
         onTextChangedObservable: Observable<TextBlock>;
         onTextChangedObservable: Observable<TextBlock>;
         /**
         /**
         * An event triggered after the text was broken up into lines
         * An event triggered after the text was broken up into lines
-        * @type {BABYLON.Observable}
         */
         */
         onLinesReadyObservable: Observable<TextBlock>;
         onLinesReadyObservable: Observable<TextBlock>;
         /**
         /**

+ 0 - 10
dist/preview release/gui/babylon.gui.js

@@ -909,42 +909,34 @@ var BABYLON;
                 this._linkOffsetY = new GUI.ValueAndUnit(0);
                 this._linkOffsetY = new GUI.ValueAndUnit(0);
                 /**
                 /**
                 * An event triggered when the pointer move over the control.
                 * An event triggered when the pointer move over the control.
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerMoveObservable = new BABYLON.Observable();
                 this.onPointerMoveObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when the pointer move out of the control.
                 * An event triggered when the pointer move out of the control.
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerOutObservable = new BABYLON.Observable();
                 this.onPointerOutObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when the pointer taps the control
                 * An event triggered when the pointer taps the control
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerDownObservable = new BABYLON.Observable();
                 this.onPointerDownObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when pointer up
                 * An event triggered when pointer up
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerUpObservable = new BABYLON.Observable();
                 this.onPointerUpObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when a control is clicked on
                 * An event triggered when a control is clicked on
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerClickObservable = new BABYLON.Observable();
                 this.onPointerClickObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when pointer enters the control
                 * An event triggered when pointer enters the control
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onPointerEnterObservable = new BABYLON.Observable();
                 this.onPointerEnterObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered when the control is marked as dirty
                 * An event triggered when the control is marked as dirty
-                * @type {BABYLON.Observable}
                 */
                 */
                 this.onDirtyObservable = new BABYLON.Observable();
                 this.onDirtyObservable = new BABYLON.Observable();
                 /**
                 /**
                * An event triggered after the control is drawn
                * An event triggered after the control is drawn
-               * @type {BABYLON.Observable}
                */
                */
                 this.onAfterDrawObservable = new BABYLON.Observable();
                 this.onAfterDrawObservable = new BABYLON.Observable();
             }
             }
@@ -3413,12 +3405,10 @@ var BABYLON;
                 _this._outlineColor = "white";
                 _this._outlineColor = "white";
                 /**
                 /**
                 * An event triggered after the text is changed
                 * An event triggered after the text is changed
-                * @type {BABYLON.Observable}
                 */
                 */
                 _this.onTextChangedObservable = new BABYLON.Observable();
                 _this.onTextChangedObservable = new BABYLON.Observable();
                 /**
                 /**
                 * An event triggered after the text was broken up into lines
                 * An event triggered after the text was broken up into lines
-                * @type {BABYLON.Observable}
                 */
                 */
                 _this.onLinesReadyObservable = new BABYLON.Observable();
                 _this.onLinesReadyObservable = new BABYLON.Observable();
                 _this.text = text;
                 _this.text = text;

File diff suppressed because it is too large
+ 4 - 4
dist/preview release/gui/babylon.gui.min.js


+ 0 - 10
dist/preview release/gui/babylon.gui.module.d.ts

@@ -216,42 +216,34 @@ declare module BABYLON.GUI {
         readonly typeName: string;
         readonly typeName: string;
         /**
         /**
         * An event triggered when the pointer move over the control.
         * An event triggered when the pointer move over the control.
-        * @type {BABYLON.Observable}
         */
         */
         onPointerMoveObservable: Observable<Vector2>;
         onPointerMoveObservable: Observable<Vector2>;
         /**
         /**
         * An event triggered when the pointer move out of the control.
         * An event triggered when the pointer move out of the control.
-        * @type {BABYLON.Observable}
         */
         */
         onPointerOutObservable: Observable<Control>;
         onPointerOutObservable: Observable<Control>;
         /**
         /**
         * An event triggered when the pointer taps the control
         * An event triggered when the pointer taps the control
-        * @type {BABYLON.Observable}
         */
         */
         onPointerDownObservable: Observable<Vector2WithInfo>;
         onPointerDownObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when pointer up
         * An event triggered when pointer up
-        * @type {BABYLON.Observable}
         */
         */
         onPointerUpObservable: Observable<Vector2WithInfo>;
         onPointerUpObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when a control is clicked on
         * An event triggered when a control is clicked on
-        * @type {BABYLON.Observable}
         */
         */
         onPointerClickObservable: Observable<Vector2WithInfo>;
         onPointerClickObservable: Observable<Vector2WithInfo>;
         /**
         /**
         * An event triggered when pointer enters the control
         * An event triggered when pointer enters the control
-        * @type {BABYLON.Observable}
         */
         */
         onPointerEnterObservable: Observable<Control>;
         onPointerEnterObservable: Observable<Control>;
         /**
         /**
         * An event triggered when the control is marked as dirty
         * An event triggered when the control is marked as dirty
-        * @type {BABYLON.Observable}
         */
         */
         onDirtyObservable: Observable<Control>;
         onDirtyObservable: Observable<Control>;
         /**
         /**
        * An event triggered after the control is drawn
        * An event triggered after the control is drawn
-       * @type {BABYLON.Observable}
        */
        */
         onAfterDrawObservable: Observable<Control>;
         onAfterDrawObservable: Observable<Control>;
         alpha: number;
         alpha: number;
@@ -576,12 +568,10 @@ declare module BABYLON.GUI {
         private _outlineColor;
         private _outlineColor;
         /**
         /**
         * An event triggered after the text is changed
         * An event triggered after the text is changed
-        * @type {BABYLON.Observable}
         */
         */
         onTextChangedObservable: Observable<TextBlock>;
         onTextChangedObservable: Observable<TextBlock>;
         /**
         /**
         * An event triggered after the text was broken up into lines
         * An event triggered after the text was broken up into lines
-        * @type {BABYLON.Observable}
         */
         */
         onLinesReadyObservable: Observable<TextBlock>;
         onLinesReadyObservable: Observable<TextBlock>;
         /**
         /**

File diff suppressed because it is too large
+ 4 - 4
dist/preview release/inspector/babylon.inspector.bundle.js


File diff suppressed because it is too large
+ 3 - 3
dist/preview release/inspector/babylon.inspector.min.js


File diff suppressed because it is too large
+ 2 - 2
dist/preview release/loaders/babylon.glTF1FileLoader.min.js


File diff suppressed because it is too large
+ 2 - 2
dist/preview release/loaders/babylon.glTF2FileLoader.min.js


File diff suppressed because it is too large
+ 3 - 3
dist/preview release/loaders/babylon.glTFFileLoader.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/loaders/babylon.objFileLoader.min.js


File diff suppressed because it is too large
+ 3 - 3
dist/preview release/loaders/babylonjs.loaders.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/materialsLibrary/babylon.customMaterial.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/materialsLibrary/babylon.shadowOnlyMaterial.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/materialsLibrary/babylon.waterMaterial.min.js


File diff suppressed because it is too large
+ 3 - 3
dist/preview release/materialsLibrary/babylonjs.materials.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.asciiArtPostProcess.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/postProcessesLibrary/babylon.digitalRainPostProcess.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/postProcessesLibrary/babylonjs.postProcess.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/serializers/babylon.glTF2Serializer.min.js


File diff suppressed because it is too large
+ 1 - 1
dist/preview release/serializers/babylonjs.serializers.min.js


File diff suppressed because it is too large
+ 53 - 53
dist/preview release/viewer/babylon.viewer.js


+ 16 - 110
dist/preview release/viewer/babylon.viewer.max.js

@@ -7624,6 +7624,7 @@ var BABYLON;
     BABYLON.MultiObserver = MultiObserver;
     BABYLON.MultiObserver = MultiObserver;
     /**
     /**
      * The Observable class is a simple implementation of the Observable pattern.
      * The Observable class is a simple implementation of the Observable pattern.
+     *
      * There's one slight particularity though: a given Observable can notify its observer using a particular mask value, only the Observers registered with this mask value will be notified.
      * There's one slight particularity though: a given Observable can notify its observer using a particular mask value, only the Observers registered with this mask value will be notified.
      * This enable a more fine grained execution without having to rely on multiple different Observable objects.
      * This enable a more fine grained execution without having to rely on multiple different Observable objects.
      * For instance you may have a given Observable that have four different types of notifications: Move (mask = 0x01), Stop (mask = 0x02), Turn Right (mask = 0X04), Turn Left (mask = 0X08).
      * For instance you may have a given Observable that have four different types of notifications: Move (mask = 0x01), Stop (mask = 0x02), Turn Right (mask = 0X04), Turn Left (mask = 0X08).
@@ -15803,7 +15804,6 @@ var BABYLON;
             this._animationPropertiesOverride = null;
             this._animationPropertiesOverride = null;
             /**
             /**
             * An event triggered when the mesh is disposed
             * An event triggered when the mesh is disposed
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             // Behaviors
             // Behaviors
@@ -16708,7 +16708,6 @@ var BABYLON;
             _this._isWorldMatrixFrozen = false;
             _this._isWorldMatrixFrozen = false;
             /**
             /**
             * An event triggered after the world matrix is updated
             * An event triggered after the world matrix is updated
-            * @type {BABYLON.Observable}
             */
             */
             _this.onAfterWorldMatrixUpdateObservable = new BABYLON.Observable();
             _this.onAfterWorldMatrixUpdateObservable = new BABYLON.Observable();
             _this._nonUniformScaling = false;
             _this._nonUniformScaling = false;
@@ -17654,17 +17653,14 @@ var BABYLON;
             // Events
             // Events
             /**
             /**
             * An event triggered when this mesh collides with another one
             * An event triggered when this mesh collides with another one
-            * @type {BABYLON.Observable}
             */
             */
             _this.onCollideObservable = new BABYLON.Observable();
             _this.onCollideObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the collision's position changes
             * An event triggered when the collision's position changes
-            * @type {BABYLON.Observable}
             */
             */
             _this.onCollisionPositionChangeObservable = new BABYLON.Observable();
             _this.onCollisionPositionChangeObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when material is changed
             * An event triggered when material is changed
-            * @type {BABYLON.Observable}
             */
             */
             _this.onMaterialChangedObservable = new BABYLON.Observable();
             _this.onMaterialChangedObservable = new BABYLON.Observable();
             // Properties
             // Properties
@@ -17731,7 +17727,6 @@ var BABYLON;
             _this.alwaysSelectAsActiveMesh = false;
             _this.alwaysSelectAsActiveMesh = false;
             /**
             /**
              * This scene's action manager
              * This scene's action manager
-             * @type {BABYLON.ActionManager}
             */
             */
             _this.actionManager = null;
             _this.actionManager = null;
             // Physics
             // Physics
@@ -21776,178 +21771,145 @@ var BABYLON;
             this.disableOfflineSupportExceptionRules = new Array();
             this.disableOfflineSupportExceptionRules = new Array();
             /**
             /**
             * An event triggered when the scene is disposed.
             * An event triggered when the scene is disposed.
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             this._onDisposeObserver = null;
             this._onDisposeObserver = null;
             /**
             /**
             * An event triggered before rendering the scene (right after animations and physics)
             * An event triggered before rendering the scene (right after animations and physics)
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeRenderObservable = new BABYLON.Observable();
             this.onBeforeRenderObservable = new BABYLON.Observable();
             this._onBeforeRenderObserver = null;
             this._onBeforeRenderObserver = null;
             /**
             /**
             * An event triggered after rendering the scene
             * An event triggered after rendering the scene
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterRenderObservable = new BABYLON.Observable();
             this.onAfterRenderObservable = new BABYLON.Observable();
             this._onAfterRenderObserver = null;
             this._onAfterRenderObserver = null;
             /**
             /**
             * An event triggered before animating the scene
             * An event triggered before animating the scene
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeAnimationsObservable = new BABYLON.Observable();
             this.onBeforeAnimationsObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after animations processing
             * An event triggered after animations processing
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterAnimationsObservable = new BABYLON.Observable();
             this.onAfterAnimationsObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before draw calls are ready to be sent
             * An event triggered before draw calls are ready to be sent
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeDrawPhaseObservable = new BABYLON.Observable();
             this.onBeforeDrawPhaseObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after draw calls have been sent
             * An event triggered after draw calls have been sent
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterDrawPhaseObservable = new BABYLON.Observable();
             this.onAfterDrawPhaseObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when physic simulation is about to be run
             * An event triggered when physic simulation is about to be run
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforePhysicsObservable = new BABYLON.Observable();
             this.onBeforePhysicsObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when physic simulation has been done
             * An event triggered when physic simulation has been done
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterPhysicsObservable = new BABYLON.Observable();
             this.onAfterPhysicsObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the scene is ready
             * An event triggered when the scene is ready
-            * @type {BABYLON.Observable}
             */
             */
             this.onReadyObservable = new BABYLON.Observable();
             this.onReadyObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before rendering a camera
             * An event triggered before rendering a camera
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeCameraRenderObservable = new BABYLON.Observable();
             this.onBeforeCameraRenderObservable = new BABYLON.Observable();
             this._onBeforeCameraRenderObserver = null;
             this._onBeforeCameraRenderObserver = null;
             /**
             /**
             * An event triggered after rendering a camera
             * An event triggered after rendering a camera
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterCameraRenderObservable = new BABYLON.Observable();
             this.onAfterCameraRenderObservable = new BABYLON.Observable();
             this._onAfterCameraRenderObserver = null;
             this._onAfterCameraRenderObserver = null;
             /**
             /**
             * An event triggered when active meshes evaluation is about to start
             * An event triggered when active meshes evaluation is about to start
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeActiveMeshesEvaluationObservable = new BABYLON.Observable();
             this.onBeforeActiveMeshesEvaluationObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when active meshes evaluation is done
             * An event triggered when active meshes evaluation is done
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterActiveMeshesEvaluationObservable = new BABYLON.Observable();
             this.onAfterActiveMeshesEvaluationObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when particles rendering is about to start
             * An event triggered when particles rendering is about to start
             * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
             * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeParticlesRenderingObservable = new BABYLON.Observable();
             this.onBeforeParticlesRenderingObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when particles rendering is done
             * An event triggered when particles rendering is done
             * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
             * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterParticlesRenderingObservable = new BABYLON.Observable();
             this.onAfterParticlesRenderingObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when sprites rendering is about to start
             * An event triggered when sprites rendering is about to start
             * Note: This event can be trigger more than once per frame (because sprites can be rendered by render target textures as well)
             * Note: This event can be trigger more than once per frame (because sprites can be rendered by render target textures as well)
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeSpritesRenderingObservable = new BABYLON.Observable();
             this.onBeforeSpritesRenderingObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when sprites rendering is done
             * An event triggered when sprites rendering is done
             * Note: This event can be trigger more than once per frame (because sprites can be rendered by render target textures as well)
             * Note: This event can be trigger more than once per frame (because sprites can be rendered by render target textures as well)
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterSpritesRenderingObservable = new BABYLON.Observable();
             this.onAfterSpritesRenderingObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
             * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
-            * @type {BABYLON.Observable}
             */
             */
             this.onDataLoadedObservable = new BABYLON.Observable();
             this.onDataLoadedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a camera is created
             * An event triggered when a camera is created
-            * @type {BABYLON.Observable}
             */
             */
             this.onNewCameraAddedObservable = new BABYLON.Observable();
             this.onNewCameraAddedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a camera is removed
             * An event triggered when a camera is removed
-            * @type {BABYLON.Observable}
             */
             */
             this.onCameraRemovedObservable = new BABYLON.Observable();
             this.onCameraRemovedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a light is created
             * An event triggered when a light is created
-            * @type {BABYLON.Observable}
             */
             */
             this.onNewLightAddedObservable = new BABYLON.Observable();
             this.onNewLightAddedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a light is removed
             * An event triggered when a light is removed
-            * @type {BABYLON.Observable}
             */
             */
             this.onLightRemovedObservable = new BABYLON.Observable();
             this.onLightRemovedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a geometry is created
             * An event triggered when a geometry is created
-            * @type {BABYLON.Observable}
             */
             */
             this.onNewGeometryAddedObservable = new BABYLON.Observable();
             this.onNewGeometryAddedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a geometry is removed
             * An event triggered when a geometry is removed
-            * @type {BABYLON.Observable}
             */
             */
             this.onGeometryRemovedObservable = new BABYLON.Observable();
             this.onGeometryRemovedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a transform node is created
             * An event triggered when a transform node is created
-            * @type {BABYLON.Observable}
             */
             */
             this.onNewTransformNodeAddedObservable = new BABYLON.Observable();
             this.onNewTransformNodeAddedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a transform node is removed
             * An event triggered when a transform node is removed
-            * @type {BABYLON.Observable}
             */
             */
             this.onTransformNodeRemovedObservable = new BABYLON.Observable();
             this.onTransformNodeRemovedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a mesh is created
             * An event triggered when a mesh is created
-            * @type {BABYLON.Observable}
             */
             */
             this.onNewMeshAddedObservable = new BABYLON.Observable();
             this.onNewMeshAddedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when a mesh is removed
             * An event triggered when a mesh is removed
-            * @type {BABYLON.Observable}
             */
             */
             this.onMeshRemovedObservable = new BABYLON.Observable();
             this.onMeshRemovedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when render targets are about to be rendered
             * An event triggered when render targets are about to be rendered
             * Can happen multiple times per frame.
             * Can happen multiple times per frame.
-            * @type {BABYLON.Observable}
             */
             */
             this.OnBeforeRenderTargetsRenderObservable = new BABYLON.Observable();
             this.OnBeforeRenderTargetsRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when render targets were rendered.
             * An event triggered when render targets were rendered.
             * Can happen multiple times per frame.
             * Can happen multiple times per frame.
-            * @type {BABYLON.Observable}
             */
             */
             this.OnAfterRenderTargetsRenderObservable = new BABYLON.Observable();
             this.OnAfterRenderTargetsRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before calculating deterministic simulation step
             * An event triggered before calculating deterministic simulation step
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeStepObservable = new BABYLON.Observable();
             this.onBeforeStepObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after calculating deterministic simulation step
             * An event triggered after calculating deterministic simulation step
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterStepObservable = new BABYLON.Observable();
             this.onAfterStepObservable = new BABYLON.Observable();
             /**
             /**
@@ -21996,7 +21958,6 @@ var BABYLON;
             // Coordinate system
             // Coordinate system
             /**
             /**
             * use right-handed coordinate system on this scene.
             * use right-handed coordinate system on this scene.
-            * @type {boolean}
             */
             */
             this._useRightHandedSystem = false;
             this._useRightHandedSystem = false;
             // Fog
             // Fog
@@ -22009,12 +21970,10 @@ var BABYLON;
             // Lights
             // Lights
             /**
             /**
             * is shadow enabled on this scene.
             * is shadow enabled on this scene.
-            * @type {boolean}
             */
             */
             this._shadowsEnabled = true;
             this._shadowsEnabled = true;
             /**
             /**
             * is light enabled on this scene.
             * is light enabled on this scene.
-            * @type {boolean}
             */
             */
             this._lightsEnabled = true;
             this._lightsEnabled = true;
             /**
             /**
@@ -27116,7 +27075,6 @@ var BABYLON;
             this.animations = new Array();
             this.animations = new Array();
             /**
             /**
             * An event triggered when the texture is disposed.
             * An event triggered when the texture is disposed.
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             this.delayLoadState = BABYLON.Engine.DELAYLOADSTATE_NONE;
             this.delayLoadState = BABYLON.Engine.DELAYLOADSTATE_NONE;
@@ -27991,17 +27949,14 @@ var BABYLON;
             // Events 
             // Events 
             /**
             /**
              * An event triggered before rendering the mesh
              * An event triggered before rendering the mesh
-             * @type {BABYLON.Observable}
              */
              */
             _this.onBeforeRenderObservable = new BABYLON.Observable();
             _this.onBeforeRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after rendering the mesh
             * An event triggered after rendering the mesh
-            * @type {BABYLON.Observable}
             */
             */
             _this.onAfterRenderObservable = new BABYLON.Observable();
             _this.onAfterRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before drawing the mesh
             * An event triggered before drawing the mesh
-            * @type {BABYLON.Observable}
             */
             */
             _this.onBeforeDrawObservable = new BABYLON.Observable();
             _this.onBeforeDrawObservable = new BABYLON.Observable();
             // Members
             // Members
@@ -31605,17 +31560,14 @@ var BABYLON;
             this.storeEffectOnSubMeshes = false;
             this.storeEffectOnSubMeshes = false;
             /**
             /**
             * An event triggered when the material is disposed.
             * An event triggered when the material is disposed.
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the material is bound.
             * An event triggered when the material is bound.
-            * @type {BABYLON.Observable}
             */
             */
             this.onBindObservable = new BABYLON.Observable();
             this.onBindObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the material is unbound.
             * An event triggered when the material is unbound.
-            * @type {BABYLON.Observable}
             */
             */
             this.onUnBindObservable = new BABYLON.Observable();
             this.onUnBindObservable = new BABYLON.Observable();
             /**
             /**
@@ -37763,7 +37715,6 @@ var BABYLON;
             this._isEnabled = true;
             this._isEnabled = true;
             /**
             /**
             * An event triggered when the configuration changes and requires Shader to Update some parameters.
             * An event triggered when the configuration changes and requires Shader to Update some parameters.
-            * @type {BABYLON.Observable}
             */
             */
             this.onUpdateParameters = new BABYLON.Observable();
             this.onUpdateParameters = new BABYLON.Observable();
         }
         }
@@ -49358,7 +49309,6 @@ var BABYLON;
             this.triggerOptions = triggerOptions;
             this.triggerOptions = triggerOptions;
             /**
             /**
             * An event triggered prior to action being executed.
             * An event triggered prior to action being executed.
-            * @type Observable
             */
             */
             this.onBeforeExecuteObservable = new BABYLON.Observable();
             this.onBeforeExecuteObservable = new BABYLON.Observable();
             if (triggerOptions.parameter) {
             if (triggerOptions.parameter) {
@@ -50591,7 +50541,6 @@ var BABYLON;
             this.isPickable = false;
             this.isPickable = false;
             /**
             /**
             * An event triggered when the manager is disposed.
             * An event triggered when the manager is disposed.
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             this._vertexBuffers = {};
             this._vertexBuffers = {};
@@ -59549,27 +59498,22 @@ var BABYLON;
             // Events
             // Events
             /**
             /**
             * An event triggered when the texture is unbind.
             * An event triggered when the texture is unbind.
-            * @type {BABYLON.Observable}
             */
             */
             _this.onBeforeBindObservable = new BABYLON.Observable();
             _this.onBeforeBindObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the texture is unbind.
             * An event triggered when the texture is unbind.
-            * @type {BABYLON.Observable}
             */
             */
             _this.onAfterUnbindObservable = new BABYLON.Observable();
             _this.onAfterUnbindObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before rendering the texture
             * An event triggered before rendering the texture
-            * @type {BABYLON.Observable}
             */
             */
             _this.onBeforeRenderObservable = new BABYLON.Observable();
             _this.onBeforeRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after rendering the texture
             * An event triggered after rendering the texture
-            * @type {BABYLON.Observable}
             */
             */
             _this.onAfterRenderObservable = new BABYLON.Observable();
             _this.onAfterRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after the texture clear
             * An event triggered after the texture clear
-            * @type {BABYLON.Observable}
             */
             */
             _this.onClearObservable = new BABYLON.Observable();
             _this.onClearObservable = new BABYLON.Observable();
             _this._currentRefreshId = -1;
             _this._currentRefreshId = -1;
@@ -61141,27 +61085,22 @@ var BABYLON;
             // Events
             // Events
             /**
             /**
             * An event triggered when the postprocess is activated.
             * An event triggered when the postprocess is activated.
-            * @type {BABYLON.Observable}
             */
             */
             this.onActivateObservable = new BABYLON.Observable();
             this.onActivateObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the postprocess changes its size.
             * An event triggered when the postprocess changes its size.
-            * @type {BABYLON.Observable}
             */
             */
             this.onSizeChangedObservable = new BABYLON.Observable();
             this.onSizeChangedObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered when the postprocess applies its effect.
             * An event triggered when the postprocess applies its effect.
-            * @type {BABYLON.Observable}
             */
             */
             this.onApplyObservable = new BABYLON.Observable();
             this.onApplyObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before rendering the postprocess
             * An event triggered before rendering the postprocess
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeRenderObservable = new BABYLON.Observable();
             this.onBeforeRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after rendering the postprocess
             * An event triggered after rendering the postprocess
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterRenderObservable = new BABYLON.Observable();
             this.onAfterRenderObservable = new BABYLON.Observable();
             if (camera != null) {
             if (camera != null) {
@@ -68899,57 +68838,47 @@ var BABYLON;
             // Members
             // Members
             /**
             /**
             * The PassPostProcess id in the pipeline that contains the original scene color
             * The PassPostProcess id in the pipeline that contains the original scene color
-            * @type {string}
             */
             */
             _this.SSAOOriginalSceneColorEffect = "SSAOOriginalSceneColorEffect";
             _this.SSAOOriginalSceneColorEffect = "SSAOOriginalSceneColorEffect";
             /**
             /**
             * The SSAO PostProcess id in the pipeline
             * The SSAO PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAORenderEffect = "SSAORenderEffect";
             _this.SSAORenderEffect = "SSAORenderEffect";
             /**
             /**
             * The horizontal blur PostProcess id in the pipeline
             * The horizontal blur PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAOBlurHRenderEffect = "SSAOBlurHRenderEffect";
             _this.SSAOBlurHRenderEffect = "SSAOBlurHRenderEffect";
             /**
             /**
             * The vertical blur PostProcess id in the pipeline
             * The vertical blur PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAOBlurVRenderEffect = "SSAOBlurVRenderEffect";
             _this.SSAOBlurVRenderEffect = "SSAOBlurVRenderEffect";
             /**
             /**
             * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)
             * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)
-            * @type {string}
             */
             */
             _this.SSAOCombineRenderEffect = "SSAOCombineRenderEffect";
             _this.SSAOCombineRenderEffect = "SSAOCombineRenderEffect";
             /**
             /**
             * The output strength of the SSAO post-process. Default value is 1.0.
             * The output strength of the SSAO post-process. Default value is 1.0.
-            * @type {number}
             */
             */
             _this.totalStrength = 1.0;
             _this.totalStrength = 1.0;
             /**
             /**
             * The radius around the analyzed pixel used by the SSAO post-process. Default value is 0.0006
             * The radius around the analyzed pixel used by the SSAO post-process. Default value is 0.0006
-            * @type {number}
             */
             */
             _this.radius = 0.0001;
             _this.radius = 0.0001;
             /**
             /**
             * Related to fallOff, used to interpolate SSAO samples (first interpolate function input) based on the occlusion difference of each pixel
             * Related to fallOff, used to interpolate SSAO samples (first interpolate function input) based on the occlusion difference of each pixel
             * Must not be equal to fallOff and superior to fallOff.
             * Must not be equal to fallOff and superior to fallOff.
             * Default value is 0.975
             * Default value is 0.975
-            * @type {number}
             */
             */
             _this.area = 0.0075;
             _this.area = 0.0075;
             /**
             /**
             * Related to area, used to interpolate SSAO samples (second interpolate function input) based on the occlusion difference of each pixel
             * Related to area, used to interpolate SSAO samples (second interpolate function input) based on the occlusion difference of each pixel
             * Must not be equal to area and inferior to area.
             * Must not be equal to area and inferior to area.
             * Default value is 0.0
             * Default value is 0.0
-            * @type {number}
             */
             */
             _this.fallOff = 0.000001;
             _this.fallOff = 0.000001;
             /**
             /**
             * The base color of the SSAO post-process
             * The base color of the SSAO post-process
             * The final result is "base + ssao" between [0, 1]
             * The final result is "base + ssao" between [0, 1]
-            * @type {number}
             */
             */
             _this.base = 0.5;
             _this.base = 0.5;
             _this._firstUpdate = true;
             _this._firstUpdate = true;
@@ -69128,63 +69057,51 @@ var BABYLON;
             // Members
             // Members
             /**
             /**
             * The PassPostProcess id in the pipeline that contains the original scene color
             * The PassPostProcess id in the pipeline that contains the original scene color
-            * @type {string}
             */
             */
             _this.SSAOOriginalSceneColorEffect = "SSAOOriginalSceneColorEffect";
             _this.SSAOOriginalSceneColorEffect = "SSAOOriginalSceneColorEffect";
             /**
             /**
             * The SSAO PostProcess id in the pipeline
             * The SSAO PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAORenderEffect = "SSAORenderEffect";
             _this.SSAORenderEffect = "SSAORenderEffect";
             /**
             /**
             * The horizontal blur PostProcess id in the pipeline
             * The horizontal blur PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAOBlurHRenderEffect = "SSAOBlurHRenderEffect";
             _this.SSAOBlurHRenderEffect = "SSAOBlurHRenderEffect";
             /**
             /**
             * The vertical blur PostProcess id in the pipeline
             * The vertical blur PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.SSAOBlurVRenderEffect = "SSAOBlurVRenderEffect";
             _this.SSAOBlurVRenderEffect = "SSAOBlurVRenderEffect";
             /**
             /**
             * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)
             * The PostProcess id in the pipeline that combines the SSAO-Blur output with the original scene color (SSAOOriginalSceneColorEffect)
-            * @type {string}
             */
             */
             _this.SSAOCombineRenderEffect = "SSAOCombineRenderEffect";
             _this.SSAOCombineRenderEffect = "SSAOCombineRenderEffect";
             /**
             /**
             * The output strength of the SSAO post-process. Default value is 1.0.
             * The output strength of the SSAO post-process. Default value is 1.0.
-            * @type {number}
             */
             */
             _this.totalStrength = 1.0;
             _this.totalStrength = 1.0;
             /**
             /**
             * Maximum depth value to still render AO. A smooth falloff makes the dimming more natural, so there will be no abrupt shading change.
             * Maximum depth value to still render AO. A smooth falloff makes the dimming more natural, so there will be no abrupt shading change.
-            * @type {number}
             */
             */
             _this.maxZ = 100.0;
             _this.maxZ = 100.0;
             /**
             /**
             * In order to save performances, SSAO radius is clamped on close geometry. This ratio changes by how much
             * In order to save performances, SSAO radius is clamped on close geometry. This ratio changes by how much
-            * @type {number}
             */
             */
             _this.minZAspect = 0.2;
             _this.minZAspect = 0.2;
             /**
             /**
             * Number of samples used for the SSAO calculations. Default value is 8
             * Number of samples used for the SSAO calculations. Default value is 8
-            * @type {number}
             */
             */
             _this._samples = 8;
             _this._samples = 8;
             /**
             /**
             * Are we using bilateral blur ?
             * Are we using bilateral blur ?
-            * @type {boolean}
             */
             */
             _this._expensiveBlur = true;
             _this._expensiveBlur = true;
             /**
             /**
             * The radius around the analyzed pixel used by the SSAO post-process. Default value is 2.0
             * The radius around the analyzed pixel used by the SSAO post-process. Default value is 2.0
-            * @type {number}
             */
             */
             _this.radius = 2.0;
             _this.radius = 2.0;
             /**
             /**
             * The base color of the SSAO post-process
             * The base color of the SSAO post-process
             * The final result is "base + ssao" between [0, 1]
             * The final result is "base + ssao" between [0, 1]
-            * @type {number}
             */
             */
             _this.base = 0.1;
             _this.base = 0.1;
             _this._firstUpdate = true;
             _this._firstUpdate = true;
@@ -69245,7 +69162,6 @@ var BABYLON;
         Object.defineProperty(SSAO2RenderingPipeline, "IsSupported", {
         Object.defineProperty(SSAO2RenderingPipeline, "IsSupported", {
             /**
             /**
             *  Support test.
             *  Support test.
-            * @type {boolean}
             */
             */
             get: function () {
             get: function () {
                 var engine = BABYLON.Engine.LastCreatedEngine;
                 var engine = BABYLON.Engine.LastCreatedEngine;
@@ -69483,17 +69399,14 @@ var BABYLON;
             // - grain texture
             // - grain texture
             /**
             /**
             * The chromatic aberration PostProcess id in the pipeline
             * The chromatic aberration PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.LensChromaticAberrationEffect = "LensChromaticAberrationEffect";
             _this.LensChromaticAberrationEffect = "LensChromaticAberrationEffect";
             /**
             /**
             * The highlights enhancing PostProcess id in the pipeline
             * The highlights enhancing PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.HighlightsEnhancingEffect = "HighlightsEnhancingEffect";
             _this.HighlightsEnhancingEffect = "HighlightsEnhancingEffect";
             /**
             /**
             * The depth-of-field PostProcess id in the pipeline
             * The depth-of-field PostProcess id in the pipeline
-            * @type {string}
             */
             */
             _this.LensDepthOfFieldEffect = "LensDepthOfFieldEffect";
             _this.LensDepthOfFieldEffect = "LensDepthOfFieldEffect";
             _this._scene = scene;
             _this._scene = scene;
@@ -71362,10 +71275,8 @@ var BABYLON;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.alwaysForcePOT = true;
             _this._blurY.autoClear = false;
             _this._blurY.autoClear = false;
             _this.kernel = bloomKernel;
             _this.kernel = bloomKernel;
-            _this._upscale = new BABYLON.PassPostProcess("upscale", bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
-            _this._upscale.autoClear = false;
-            _this._effects = [_this._downscale, _this._blurX, _this._blurY, _this._upscale];
-            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, 1, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
+            _this._effects = [_this._downscale, _this._blurX, _this._blurY];
+            _this._merge = new BABYLON.BloomMergePostProcess("bloomMerge", _this._downscale, _this._blurY, bloomWeight, bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
             _this._merge.autoClear = false;
             _this._merge.autoClear = false;
             _this._effects.push(_this._merge);
             _this._effects.push(_this._merge);
             return _this;
             return _this;
@@ -72484,17 +72395,14 @@ var BABYLON;
             _this._screenCoordinates = BABYLON.Vector2.Zero();
             _this._screenCoordinates = BABYLON.Vector2.Zero();
             /**
             /**
             * Custom position of the mesh. Used if "useCustomMeshPosition" is set to "true"
             * Custom position of the mesh. Used if "useCustomMeshPosition" is set to "true"
-            * @type {Vector3}
             */
             */
             _this.customMeshPosition = BABYLON.Vector3.Zero();
             _this.customMeshPosition = BABYLON.Vector3.Zero();
             /**
             /**
             * Set if the post-process should use a custom position for the light source (true) or the internal mesh position (false)
             * Set if the post-process should use a custom position for the light source (true) or the internal mesh position (false)
-            * @type {boolean}
             */
             */
             _this.useCustomMeshPosition = false;
             _this.useCustomMeshPosition = false;
             /**
             /**
             * If the post-process should inverse the light scattering direction
             * If the post-process should inverse the light scattering direction
-            * @type {boolean}
             */
             */
             _this.invert = true;
             _this.invert = true;
             /**
             /**
@@ -72503,22 +72411,18 @@ var BABYLON;
             _this.excludedMeshes = new Array();
             _this.excludedMeshes = new Array();
             /**
             /**
             * Controls the overall intensity of the post-process
             * Controls the overall intensity of the post-process
-            * @type {number}
             */
             */
             _this.exposure = 0.3;
             _this.exposure = 0.3;
             /**
             /**
             * Dissipates each sample's contribution in range [0, 1]
             * Dissipates each sample's contribution in range [0, 1]
-            * @type {number}
             */
             */
             _this.decay = 0.96815;
             _this.decay = 0.96815;
             /**
             /**
             * Controls the overall intensity of each sample
             * Controls the overall intensity of each sample
-            * @type {number}
             */
             */
             _this.weight = 0.58767;
             _this.weight = 0.58767;
             /**
             /**
             * Controls the density of each sample
             * Controls the density of each sample
-            * @type {number}
             */
             */
             _this.density = 0.926;
             _this.density = 0.926;
             scene = ((camera === null) ? scene : camera.getScene()); // parameter "scene" can be null.
             scene = ((camera === null) ? scene : camera.getScene()); // parameter "scene" can be null.
@@ -74959,7 +74863,6 @@ var BABYLON;
             // Events
             // Events
             /**
             /**
              * An event triggered before computing the skeleton's matrices
              * An event triggered before computing the skeleton's matrices
-             * @type {BABYLON.Observable}
              */
              */
             this.onBeforeComputeObservable = new BABYLON.Observable();
             this.onBeforeComputeObservable = new BABYLON.Observable();
             this.bones = [];
             this.bones = [];
@@ -88520,10 +88423,17 @@ var BABYLON;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             var blurTextureHeight = this._mainTextureDesiredSize.height;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureWidth = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
             blurTextureHeight = this._engine.needPOTTextures ? BABYLON.Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
+            var textureType = 0;
+            if (this._engine.getCaps().textureHalfFloatRender) {
+                textureType = BABYLON.Engine.TEXTURETYPE_HALF_FLOAT;
+            }
+            else {
+                textureType = BABYLON.Engine.TEXTURETYPE_UNSIGNED_INT;
+            }
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
             this._blurTexture1 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT", {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture1.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88534,7 +88444,7 @@ var BABYLON;
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
             this._blurTexture2 = new BABYLON.RenderTargetTexture("GlowLayerBlurRTT2", {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, this._scene, false, true, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, this._scene, false, true, textureType);
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapU = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = BABYLON.Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture2.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE);
@@ -88544,7 +88454,7 @@ var BABYLON;
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerHBP1", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess1.onApplyObservable.add(function (effect) {
@@ -88553,11 +88463,11 @@ var BABYLON;
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess1 = new BABYLON.BlurPostProcess("GlowLayerVBP1", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth,
                 width: blurTextureWidth,
                 height: blurTextureHeight
                 height: blurTextureHeight
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerHBP2", new BABYLON.Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
             this._horizontalBlurPostprocess2.onApplyObservable.add(function (effect) {
@@ -88566,7 +88476,7 @@ var BABYLON;
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
             this._verticalBlurPostprocess2 = new BABYLON.BlurPostProcess("GlowLayerVBP2", new BABYLON.Vector2(0, 1.0), this._options.blurKernelSize / 2, {
                 width: blurTextureWidth2,
                 width: blurTextureWidth2,
                 height: blurTextureHeight2
                 height: blurTextureHeight2
-            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, BABYLON.Engine.TEXTURETYPE_HALF_FLOAT);
+            }, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses1 = [this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
             this._postProcesses2 = [this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2];
@@ -89961,17 +89871,14 @@ var BABYLON;
             // Events
             // Events
             /**
             /**
             * An event triggered when the layer is disposed.
             * An event triggered when the layer is disposed.
-            * @type {BABYLON.Observable}
             */
             */
             this.onDisposeObservable = new BABYLON.Observable();
             this.onDisposeObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered before rendering the scene
             * An event triggered before rendering the scene
-            * @type {BABYLON.Observable}
             */
             */
             this.onBeforeRenderObservable = new BABYLON.Observable();
             this.onBeforeRenderObservable = new BABYLON.Observable();
             /**
             /**
             * An event triggered after rendering the scene
             * An event triggered after rendering the scene
-            * @type {BABYLON.Observable}
             */
             */
             this.onAfterRenderObservable = new BABYLON.Observable();
             this.onAfterRenderObservable = new BABYLON.Observable();
             this.texture = imgUrl ? new BABYLON.Texture(imgUrl, scene, true) : null;
             this.texture = imgUrl ? new BABYLON.Texture(imgUrl, scene, true) : null;
@@ -92271,7 +92178,6 @@ var BABYLON;
             _this._fovMultiplier = 1.0;
             _this._fovMultiplier = 1.0;
             /**
             /**
              * Enable the FOV adjustment feature controlled by fovMultiplier.
              * Enable the FOV adjustment feature controlled by fovMultiplier.
-             * @type {boolean}
              */
              */
             _this.useEquirectangularFOV = false;
             _this.useEquirectangularFOV = false;
             _this._maxSimultaneousLights = 4;
             _this._maxSimultaneousLights = 4;

+ 14 - 6
src/Layer/babylon.glowLayer.ts

@@ -169,6 +169,14 @@
             blurTextureWidth = this._engine.needPOTTextures ? Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureWidth = this._engine.needPOTTextures ? Tools.GetExponentOfTwo(blurTextureWidth, this._maxSize) : blurTextureWidth;
             blurTextureHeight = this._engine.needPOTTextures ? Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
             blurTextureHeight = this._engine.needPOTTextures ? Tools.GetExponentOfTwo(blurTextureHeight, this._maxSize) : blurTextureHeight;
 
 
+            var textureType = 0;
+            if (this._engine.getCaps().textureHalfFloatRender) {
+                textureType = Engine.TEXTURETYPE_HALF_FLOAT;
+            }
+            else {
+                textureType = Engine.TEXTURETYPE_UNSIGNED_INT;
+            }
+
             this._blurTexture1 = new RenderTargetTexture("GlowLayerBlurRTT",
             this._blurTexture1 = new RenderTargetTexture("GlowLayerBlurRTT",
                 {
                 {
                     width: blurTextureWidth,
                     width: blurTextureWidth,
@@ -177,7 +185,7 @@
                 this._scene,
                 this._scene,
                 false,
                 false,
                 true,
                 true,
-                Engine.TEXTURETYPE_HALF_FLOAT);
+                textureType);
             this._blurTexture1.wrapU = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapU = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.wrapV = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture1.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture1.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
@@ -195,7 +203,7 @@
                 this._scene,
                 this._scene,
                 false,
                 false,
                 true,
                 true,
-                Engine.TEXTURETYPE_HALF_FLOAT);
+                textureType);
             this._blurTexture2.wrapU = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapU = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.wrapV = Texture.CLAMP_ADDRESSMODE;
             this._blurTexture2.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
             this._blurTexture2.updateSamplingMode(Texture.BILINEAR_SAMPLINGMODE);
@@ -208,7 +216,7 @@
                     width:  blurTextureWidth,
                     width:  blurTextureWidth,
                     height: blurTextureHeight
                     height: blurTextureHeight
                 },
                 },
-                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, Engine.TEXTURETYPE_HALF_FLOAT);
+                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.width = blurTextureWidth;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.height = blurTextureHeight;
             this._horizontalBlurPostprocess1.onApplyObservable.add(effect => {
             this._horizontalBlurPostprocess1.onApplyObservable.add(effect => {
@@ -219,13 +227,13 @@
                     width:  blurTextureWidth,
                     width:  blurTextureWidth,
                     height: blurTextureHeight
                     height: blurTextureHeight
                 },
                 },
-                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, Engine.TEXTURETYPE_HALF_FLOAT);
+                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
 
 
             this._horizontalBlurPostprocess2 = new BlurPostProcess("GlowLayerHBP2", new Vector2(1.0, 0), this._options.blurKernelSize / 2, {
             this._horizontalBlurPostprocess2 = new BlurPostProcess("GlowLayerHBP2", new Vector2(1.0, 0), this._options.blurKernelSize / 2, {
                     width:  blurTextureWidth2,
                     width:  blurTextureWidth2,
                     height: blurTextureHeight2
                     height: blurTextureHeight2
                 },
                 },
-                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, Engine.TEXTURETYPE_HALF_FLOAT);
+                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.width = blurTextureWidth2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.height = blurTextureHeight2;
             this._horizontalBlurPostprocess2.onApplyObservable.add(effect => {
             this._horizontalBlurPostprocess2.onApplyObservable.add(effect => {
@@ -236,7 +244,7 @@
                     width:  blurTextureWidth2,
                     width:  blurTextureWidth2,
                     height: blurTextureHeight2
                     height: blurTextureHeight2
                 },
                 },
-                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, Engine.TEXTURETYPE_HALF_FLOAT);
+                null, Texture.BILINEAR_SAMPLINGMODE, this._scene.getEngine(), false, textureType);
 
 
             this._postProcesses = [ this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2 ];
             this._postProcesses = [ this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1, this._horizontalBlurPostprocess2, this._verticalBlurPostprocess2 ];
             this._postProcesses1 = [ this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1 ];
             this._postProcesses1 = [ this._horizontalBlurPostprocess1, this._verticalBlurPostprocess1 ];

+ 2 - 5
src/PostProcess/babylon.bloomEffect.ts

@@ -14,7 +14,6 @@ module BABYLON {
         public _downscale:ExtractHighlightsPostProcess;
         public _downscale:ExtractHighlightsPostProcess;
         private _blurX:BlurPostProcess;
         private _blurX:BlurPostProcess;
         private _blurY:BlurPostProcess;
         private _blurY:BlurPostProcess;
-        private _upscale:PassPostProcess;
         private _merge:BloomMergePostProcess;
         private _merge:BloomMergePostProcess;
         
         
         /**
         /**
@@ -73,11 +72,9 @@ module BABYLON {
 
 
             this.kernel = bloomKernel;
             this.kernel = bloomKernel;
 
 
-            this._upscale = new PassPostProcess("upscale", bloomScale, null, Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
-            this._upscale.autoClear = false;
-            this._effects = [this._downscale, this._blurX, this._blurY, this._upscale];
+            this._effects = [this._downscale, this._blurX, this._blurY];
 
 
-            this._merge = new BloomMergePostProcess("bloomMerge", this._downscale, this._blurY, bloomWeight, 1, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
+            this._merge = new BloomMergePostProcess("bloomMerge", this._downscale, this._blurY, bloomWeight, bloomScale, null, BABYLON.Texture.BILINEAR_SAMPLINGMODE, scene.getEngine(), false, pipelineTextureType, blockCompilation);
             this._merge.autoClear = false;
             this._merge.autoClear = false;
             this._effects.push(this._merge);
             this._effects.push(this._merge);
         }
         }