浏览代码

Fixing bug with shadows

David catuhe 10 年之前
父节点
当前提交
cac398f103

文件差异内容过多而无法显示
+ 899 - 899
dist/preview release - alpha/babylon.2.2.d.ts


文件差异内容过多而无法显示
+ 7 - 7
dist/preview release - alpha/babylon.2.2.js


文件差异内容过多而无法显示
+ 5 - 4
dist/preview release - alpha/babylon.2.2.max.js


文件差异内容过多而无法显示
+ 7 - 7
dist/preview release - alpha/babylon.2.2.noworker.js


+ 3 - 1
src/Shaders/default.fragment.fx

@@ -539,8 +539,8 @@ void main(void) {
 
 
 	// Specular map
-	float glossiness = vSpecularColor.a;
 #ifdef SPECULARTERM
+	float glossiness = vSpecularColor.a;
 	vec3 specularColor = vSpecularColor.rgb;
 
 	#ifdef SPECULAR
@@ -550,6 +550,8 @@ void main(void) {
 			glossiness = specularMapColor.a;
 		#endif
 	#endif
+#else
+	float glossiness = 0;
 #endif
 
 	// Lighting

+ 1 - 3
src/babylon.engine.js

@@ -842,15 +842,13 @@ var BABYLON;
         };
         Engine.prototype.unBindFramebuffer = function (texture) {
             this._currentRenderTarget = null;
-            this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);
             if (texture.generateMipMaps) {
                 var gl = this._gl;
                 gl.bindTexture(gl.TEXTURE_2D, texture);
                 gl.generateMipmap(gl.TEXTURE_2D);
                 gl.bindTexture(gl.TEXTURE_2D, null);
             }
-            this.setViewport(this._cachedViewport);
-            this.wipeCaches();
+            this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);
         };
         Engine.prototype.flushFramebuffer = function () {
             this._gl.flush();

+ 2 - 7
src/babylon.engine.ts

@@ -962,10 +962,7 @@
         }
 
         public unBindFramebuffer(texture: WebGLTexture): void {
-            this._currentRenderTarget = null;
-
-            this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);
-
+            this._currentRenderTarget = null;           
             if (texture.generateMipMaps) {
                 var gl = this._gl;
                 gl.bindTexture(gl.TEXTURE_2D, texture);
@@ -973,9 +970,7 @@
                 gl.bindTexture(gl.TEXTURE_2D, null);
             }
             
-            this.setViewport(this._cachedViewport);
-
-            this.wipeCaches();
+            this._gl.bindFramebuffer(this._gl.FRAMEBUFFER, null);
         }
 
         public flushFramebuffer(): void {

+ 3 - 0
src/babylon.scene.js

@@ -1118,6 +1118,9 @@ var BABYLON;
                 BABYLON.Tools.EndPerformanceCounter("Render targets", this._renderTargets.length > 0);
                 this._renderId++;
             }
+            if (this._renderTargets.length > 0) {
+                engine.restoreDefaultFramebuffer();
+            }
             this._renderTargetsDuration += BABYLON.Tools.Now - beforeRenderTargetDate;
             // Prepare Frame
             this.postProcessManager._prepareFrame();

+ 3 - 1
src/babylon.scene.ts

@@ -1434,7 +1434,9 @@
 
                 this._renderId++;
             }
-
+            if (this._renderTargets.length > 0) { // Restore back buffer
+                engine.restoreDefaultFramebuffer();
+            }
             this._renderTargetsDuration += Tools.Now - beforeRenderTargetDate;
 
             // Prepare Frame