Răsfoiți Sursa

Updated builds.

Mr.doob 3 ani în urmă
părinte
comite
9ce2215be0
3 a modificat fișierele cu 70 adăugiri și 4 ștergeri
  1. 32 2
      build/three.js
  2. 0 0
      build/three.min.js
  3. 38 2
      build/three.module.js

+ 32 - 2
build/three.js

@@ -1115,6 +1115,36 @@
 	function createElementNS(name) {
 		return document.createElementNS('http://www.w3.org/1999/xhtml', name);
 	}
+	/**
+		* cyrb53 hash for string from: https://stackoverflow.com/a/52171480
+		*
+		* Public Domain, @bryc - https://stackoverflow.com/users/815680/bryc
+		*
+		* It is roughly similar to the well-known MurmurHash/xxHash algorithms. It uses a combination
+		* of multiplication and Xorshift to generate the hash, but not as thorough. As a result it's
+		* faster than either would be in JavaScript and significantly simpler to implement. Keep in
+		* mind this is not a secure algorithm, if privacy/security is a concern, this is not for you.
+		*
+		* @param {string} str
+		* @param {number} seed, default 0
+		* @returns number
+		*/
+
+
+	function hashString(str, seed = 0) {
+		let h1 = 0xdeadbeef ^ seed,
+				h2 = 0x41c6ce57 ^ seed;
+
+		for (let i = 0, ch; i < str.length; i++) {
+			ch = str.charCodeAt(i);
+			h1 = Math.imul(h1 ^ ch, 2654435761);
+			h2 = Math.imul(h2 ^ ch, 1597334677);
+		}
+
+		h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507) ^ Math.imul(h2 ^ h2 >>> 13, 3266489909);
+		h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507) ^ Math.imul(h1 ^ h1 >>> 13, 3266489909);
+		return 4294967296 * (2097151 & h2) + (h1 >>> 0);
+	}
 
 	let _canvas;
 
@@ -14444,8 +14474,8 @@
 			if (parameters.shaderID) {
 				array.push(parameters.shaderID);
 			} else {
-				array.push(parameters.fragmentShader);
-				array.push(parameters.vertexShader);
+				array.push(hashString(parameters.fragmentShader));
+				array.push(hashString(parameters.vertexShader));
 			}
 
 			if (parameters.defines !== undefined) {

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
build/three.min.js


+ 38 - 2
build/three.module.js

@@ -1418,6 +1418,42 @@ function createElementNS( name ) {
 
 }
 
+/**
+  * cyrb53 hash for string from: https://stackoverflow.com/a/52171480
+  *
+  * Public Domain, @bryc - https://stackoverflow.com/users/815680/bryc
+  *
+  * It is roughly similar to the well-known MurmurHash/xxHash algorithms. It uses a combination
+  * of multiplication and Xorshift to generate the hash, but not as thorough. As a result it's
+  * faster than either would be in JavaScript and significantly simpler to implement. Keep in
+  * mind this is not a secure algorithm, if privacy/security is a concern, this is not for you.
+  *
+  * @param {string} str
+  * @param {number} seed, default 0
+  * @returns number
+  */
+function hashString( str, seed = 0 ) {
+
+	let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
+
+	for ( let i = 0, ch; i < str.length; i ++ ) {
+
+		ch = str.charCodeAt( i );
+
+		h1 = Math.imul( h1 ^ ch, 2654435761 );
+
+		h2 = Math.imul( h2 ^ ch, 1597334677 );
+
+	}
+
+	h1 = Math.imul( h1 ^ ( h1 >>> 16 ), 2246822507 ) ^ Math.imul( h2 ^ ( h2 >>> 13 ), 3266489909 );
+
+	h2 = Math.imul( h2 ^ ( h2 >>> 16 ), 2246822507 ) ^ Math.imul( h1 ^ ( h1 >>> 13 ), 3266489909 );
+
+	return 4294967296 * ( 2097151 & h2 ) + ( h1 >>> 0 );
+
+}
+
 let _canvas;
 
 class ImageUtils {
@@ -19121,8 +19157,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
 
 		} else {
 
-			array.push( parameters.fragmentShader );
-			array.push( parameters.vertexShader );
+			array.push( hashString( parameters.fragmentShader ) );
+			array.push( hashString( parameters.vertexShader ) );
 
 		}
 

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff