Benjamin Guignabert пре 8 година
родитељ
комит
8d75083d1d

Разлика између датотеке није приказан због своје велике величине
+ 620 - 621
dist/preview release/babylon.d.ts


Разлика између датотеке није приказан због своје велике величине
+ 620 - 621
dist/preview release/babylon.module.d.ts


+ 2 - 0
src/Lights/babylon.light.ts

@@ -281,6 +281,8 @@
                 mesh._removeLightSource(this);
             }
 
+            this._uniformBuffer.dispose();
+
             // Remove from scene
             this.getScene().removeLight(this);
             super.dispose();

+ 1 - 2
src/Materials/babylon.effect.ts

@@ -83,7 +83,6 @@
         private _engine: Engine;
         private _uniformBuffersNames: string[];
         private _uniformsNames: string[];
-        private _uniformOrder: string[];
         private _samplers: string[];
         private _isReady = false;
         private _compilationError = "";
@@ -722,7 +721,7 @@
 
         public setVector2(uniformName: string, vector2: Vector2): Effect {
             if (this._cacheFloat2(uniformName, vector2.x, vector2.y)) {
-                    this._engine.setFloat2(this.getUniform(uniformName), vector2.x, vector2.y);
+                this._engine.setFloat2(this.getUniform(uniformName), vector2.x, vector2.y);
             }
             return this;
         }

+ 3 - 1
src/Materials/babylon.standardMaterial.ts

@@ -781,7 +781,7 @@ module BABYLON {
             this._uniformBuffer.addUniform("vDiffuseColor", 4);
             this._uniformBuffer.addUniform("pointSize", 1);
         }
-        
+
         public unbind(): void {
             if (this._activeEffect) {
                 if (this._reflectionTexture && this._reflectionTexture.isRenderTarget) {
@@ -1097,6 +1097,8 @@ module BABYLON {
                 }
             }
 
+            this._uniformBuffer.dispose();
+
             super.dispose(forceDisposeEffect, forceDisposeTextures);
         }
 

+ 3 - 3
src/Shaders/ShadersInclude/bumpFragment.fx

@@ -4,7 +4,7 @@
 	#if defined(TANGENT) && defined(NORMAL)
 		mat3 TBN = vTBN;
 	#else
-		mat3 TBN = cotangent_frame(normalW * uMaterial.vBumpInfos.y, vPositionW, vBumpUV);
+		mat3 TBN = cotangent_frame(normalW * vBumpInfos.y, vPositionW, vBumpUV);
 	#endif
 #endif
 
@@ -12,9 +12,9 @@
 	mat3 invTBN = transposeMat3(TBN);
 
 	#ifdef PARALLAXOCCLUSION
-		uvOffset = parallaxOcclusion(invTBN * -viewDirectionW, invTBN * normalW, vBumpUV, uMaterial.vBumpInfos.z);
+		uvOffset = parallaxOcclusion(invTBN * -viewDirectionW, invTBN * normalW, vBumpUV, vBumpInfos.z);
 	#else
-		uvOffset = parallaxOffset(invTBN * viewDirectionW, uMaterial.vBumpInfos.z);
+		uvOffset = parallaxOffset(invTBN * viewDirectionW, vBumpInfos.z);
 	#endif
 #endif
 

+ 1 - 1
src/Shaders/ShadersInclude/pointCloudVertex.fx

@@ -1,3 +1,3 @@
 #ifdef POINTSIZE
-	gl_PointSize = uMaterial.pointSize;
+	gl_PointSize = pointSize;
 #endif

+ 0 - 2
src/Shaders/ShadersInclude/pointCloudVertexDeclaration.fx

@@ -1,2 +0,0 @@
-#ifdef POINTSIZE
-#endif

+ 3 - 3
src/Shaders/ShadersInclude/reflectionFunction.fx

@@ -39,7 +39,7 @@
 	vec3 viewDir = worldPos.xyz - vEyePosition;
 	vec3 coords = normalize(reflect(viewDir, worldNormal));
 
-	return vec3(uMaterial.reflectionMatrix * vec4(coords, 1));
+	return vec3(reflectionMatrix * vec4(coords, 1));
 #endif
 
 #ifdef REFLECTIONMAP_CUBIC
@@ -48,11 +48,11 @@
 #ifdef INVERTCUBICMAP
 	coords.y = 1.0 - coords.y;
 #endif
-	return vec3(uMaterial.reflectionMatrix * vec4(coords, 0));
+	return vec3(reflectionMatrix * vec4(coords, 0));
 #endif
 
 #ifdef REFLECTIONMAP_PROJECTION
-	return vec3(uMaterial.reflectionMatrix * (view * worldPos));
+	return vec3(reflectionMatrix * (view * worldPos));
 #endif
 
 #ifdef REFLECTIONMAP_SKYBOX

+ 4 - 2
src/Shaders/default.fragment.fx

@@ -35,8 +35,6 @@ uniform Material
 	float pointSize;
 };
 
-uniform vec3 vEyePosition;
-uniform vec3 vAmbientColor;
 
 #ifdef BUMP
 #extension GL_OES_standard_derivatives : enable
@@ -49,6 +47,9 @@ uniform vec3 vAmbientColor;
 // Constants
 #define RECIPROCAL_PI2 0.15915494
 
+uniform vec3 vEyePosition;
+uniform vec3 vAmbientColor;
+
 // Input
 varying vec3 vPositionW;
 
@@ -379,6 +380,7 @@ void main(void) {
 	alpha = clamp(alpha + dot(reflectionColor, vec3(0.3, 0.59, 0.11)), 0., 1.);
 #endif
 
+	// Composition
 #ifdef EMISSIVEASILLUMINATION
 	vec4 color = vec4(clamp(finalDiffuse * baseAmbientColor + finalSpecular + reflectionColor + emissiveColor + refractionColor, 0.0, 1.0), alpha);
 #else

+ 0 - 2
src/Shaders/default.vertex.fx

@@ -92,8 +92,6 @@ varying vec2 vSpecularUV;
 varying vec2 vBumpUV;
 #endif
 
-#include<pointCloudVertexDeclaration>
-
 // Output
 varying vec3 vPositionW;
 #ifdef NORMAL

+ 6 - 6
src/babylon.engine.ts

@@ -1487,6 +1487,12 @@
             this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER, location, buffer);
         }
 
+        public bindUniformBlock(shaderProgram: WebGLProgram, blockName: string, index: number): void {
+            var uniformLocation = this._gl.getUniformBlockIndex(shaderProgram, blockName);
+
+            this._gl.uniformBlockBinding(shaderProgram, uniformLocation, index);
+        };
+
         private bindIndexBuffer(buffer: WebGLBuffer): void {
             if (!this._vaoRecordInProgress) {
                 this._unBindVertexArrayObject();
@@ -1871,12 +1877,6 @@
             return results;
         }
 
-        public bindUniformBlock(shaderProgram: WebGLProgram, blockName: string, index: number): void {
-            var uniformLocation = this._gl.getUniformBlockIndex(shaderProgram, blockName);
-
-            this._gl.uniformBlockBinding(shaderProgram, uniformLocation, index);
-        };
-
         public getAttributes(shaderProgram: WebGLProgram, attributesNames: string[]): number[] {
             var results = [];
 

+ 3 - 0
src/babylon.scene.ts

@@ -3169,6 +3169,9 @@
                 this.textures[0].dispose();
             }
 
+            // Release UBO
+            this._transformMatrixBuffer.dispose();
+
             // Post-processes
             this.postProcessManager.dispose();