Преглед на файлове

Merge pull request #14040 from Mugen87/dev4

WebGLUniforms: Added caching for setValueT1a/setValueT6a
Mr.doob преди 7 години
родител
ревизия
624b961bc7
променени са 1 файла, в които са добавени 20 реда и са изтрити 6 реда
  1. 20 6
      src/renderers/webgl/WebGLUniforms.js

+ 20 - 6
src/renderers/webgl/WebGLUniforms.js

@@ -536,10 +536,17 @@ function setValueM4a( gl, v ) {
 
 
 function setValueT1a( gl, v, renderer ) {
 function setValueT1a( gl, v, renderer ) {
 
 
-	var n = v.length,
-		units = allocTexUnits( renderer, n );
+	var cache = this.cache;
+	var n = v.length;
+
+	var units = allocTexUnits( renderer, n );
+
+	if ( arraysEqual( cache, units ) === false ) {
 
 
-	gl.uniform1iv( this.addr, units );
+		gl.uniform1iv( this.addr, units );
+		copyArray( cache, units );
+
+	}
 
 
 	for ( var i = 0; i !== n; ++ i ) {
 	for ( var i = 0; i !== n; ++ i ) {
 
 
@@ -551,10 +558,17 @@ function setValueT1a( gl, v, renderer ) {
 
 
 function setValueT6a( gl, v, renderer ) {
 function setValueT6a( gl, v, renderer ) {
 
 
-	var n = v.length,
-		units = allocTexUnits( renderer, n );
+	var cache = this.cache;
+	var n = v.length;
+
+	var units = allocTexUnits( renderer, n );
+
+	if ( arraysEqual( cache, units ) === false ) {
 
 
-	gl.uniform1iv( this.addr, units );
+		gl.uniform1iv( this.addr, units );
+		copyArray( cache, units );
+
+	}
 
 
 	for ( var i = 0; i !== n; ++ i ) {
 	for ( var i = 0; i !== n; ++ i ) {