소스 검색

fixed sneaky bug with uniformBase caching

Benjamin Guignabert 8 년 전
부모
커밋
981417fe1d
4개의 변경된 파일2156개의 추가작업 그리고 2144개의 파일을 삭제
  1. 1075 1071
      dist/preview release/babylon.d.ts
  2. 1075 1071
      dist/preview release/babylon.module.d.ts
  3. 3 2
      src/Materials/babylon.effect.ts
  4. 3 0
      src/Materials/babylon.uniformBuffer.ts

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1075 - 1071
dist/preview release/babylon.d.ts


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1075 - 1071
dist/preview release/babylon.module.d.ts


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

@@ -108,6 +108,7 @@
 
         private _program: WebGLProgram;
         private _valueCache: { [key: string]: any } = {};
+        private static _baseCache: { [key: number]: WebGLBuffer } = {};
 
         constructor(baseName: any, attributesNamesOrOptions: string[] | EffectCreationOptions, uniformsNamesOrEngine: string[] | Engine, samplers?: string[], engine?: Engine, defines?: string, fallbacks?: EffectFallbacks, onCompiled?: (effect: Effect) => void, onError?: (effect: Effect, errors: string) => void, indexParameters?: any) {
             this.name = baseName;
@@ -634,10 +635,10 @@
         }
 
         public bindUniformBuffer(buffer: WebGLBuffer, name: string): void {
-            if (this._valueCache[name] === buffer) {
+            if (Effect._baseCache[this._uniformBuffersNames[name]] === buffer) {
                 return;
             }
-            this._valueCache[name] = buffer;
+            Effect._baseCache[this._uniformBuffersNames[name]] = buffer;
             this._engine.bindUniformBufferBase(buffer, this._uniformBuffersNames[name]);
         }
 

+ 3 - 0
src/Materials/babylon.uniformBuffer.ts

@@ -23,6 +23,9 @@ module BABYLON {
          * Uniform buffer objects.
          * 
          * Handles blocks of uniform on the GPU.
+         *
+         * If WebGL 2 is not available, this class falls back on traditionnal setUniformXXX calls.
+         *
          * For more information, please refer to : 
          * https://www.khronos.org/opengl/wiki/Uniform_Buffer_Object
          */