Przeglądaj źródła

fallback to old bloom if needed

Trevor Baron 7 lat temu
rodzic
commit
8714902063

+ 9 - 4
src/PostProcess/RenderPipeline/Pipelines/babylon.defaultRenderingPipeline.ts

@@ -141,9 +141,14 @@
             if (this._bloomThreshold === value) {
             if (this._bloomThreshold === value) {
                 return;
                 return;
             }
             }
-            this.bloom.threshold = value;
-            
-            this._bloomThreshold = value;
+            if((this.bloom.threshold > 0 && value == 0) || (this.bloom.threshold == 0 && value > 0)){
+                this.bloom.threshold = value;
+                this._bloomThreshold = value;
+                this._buildPipeline();
+            }else{
+                this.bloom.threshold = value;
+                this._bloomThreshold = value;
+            }
         }
         }
 
 
         @serialize()
         @serialize()
@@ -451,7 +456,7 @@
                 if(!this.bloom._isReady()){
                 if(!this.bloom._isReady()){
                     this.bloom._updateEffects();
                     this.bloom._updateEffects();
                 }
                 }
-                mergeOptions.bloom = {blurred: this.bloom._effects[this.bloom._effects.length-1], weight: this.bloomWeight}
+                mergeOptions.bloom = {blurred: this.bloom._effects[this.bloom._effects.length-1], weight: this.bloomWeight, mix: this._bloomThreshold == 0}
                 if(!mergeOptions.originalFromInput){
                 if(!mergeOptions.originalFromInput){
                     mergeOptions.originalFromInput=this.bloom._effects[0];
                     mergeOptions.originalFromInput=this.bloom._effects[0];
                 }
                 }

+ 4 - 0
src/PostProcess/babylon.defaultPipelineMergePostProcess.ts

@@ -20,6 +20,7 @@ module BABYLON {
         public bloom?: {
         public bloom?: {
             blurred: PostProcess;
             blurred: PostProcess;
             weight: number;
             weight: number;
+            mix?: boolean
         };
         };
     }
     }
 
 
@@ -87,6 +88,9 @@ module BABYLON {
                 }
                 }
                 if(this._mergeOptions.bloom){
                 if(this._mergeOptions.bloom){
                     defines += "#define BLOOM 1\n";
                     defines += "#define BLOOM 1\n";
+                    if(this._mergeOptions.bloom.mix){
+                        defines += "#define MIX 1\n";
+                    }
                 }
                 }
             }
             }
             super.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError);
             super.updateEffect(defines, uniforms, samplers, indexParameters, onCompiled, onError);

+ 5 - 1
src/Shaders/defaultPipelineMerge.fragment.fx

@@ -52,6 +52,10 @@ void main(void)
 #endif
 #endif
 #ifdef BLOOM
 #ifdef BLOOM
     vec3 blurred = texture2D(bloomBlur, vUV).rgb;
     vec3 blurred = texture2D(bloomBlur, vUV).rgb;
-    gl_FragColor.rgb = gl_FragColor.rgb + (blurred.rgb * bloomWeight);
+    #ifdef MIX
+        gl_FragColor.rgb = mix(gl_FragColor.rgb, blurred.rgb, bloomWeight);
+    #else
+        gl_FragColor.rgb = gl_FragColor.rgb + (blurred.rgb * bloomWeight);
+    #endif    
 #endif
 #endif
 }
 }