浏览代码

Added WebGLMaterials.

Mr.doob 9 年之前
父节点
当前提交
3861491bfd
共有 3 个文件被更改,包括 45 次插入3 次删除
  1. 4 3
      src/renderers/WebGLRenderer.js
  2. 40 0
      src/renderers/webgl/WebGLMaterials.js
  3. 1 0
      utils/build/includes/common.json

+ 4 - 3
src/renderers/WebGLRenderer.js

@@ -203,6 +203,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	var state = new THREE.WebGLState( _gl, extensions, paramThreeToGL );
 	var properties = new THREE.WebGLProperties();
+	var materialsCache = new THREE.WebGLMaterials();
 	var objects = new THREE.WebGLObjects( _gl, properties, this.info );
 	var programCache = new THREE.WebGLPrograms( this, capabilities );
 
@@ -594,7 +595,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	function releaseMaterialProgramReference( material ) {
 
-		var programInfo = properties.get( material ).program;
+		var programInfo = materialsCache.get( material ).program;
 
 		material.program = undefined;
 
@@ -1374,7 +1375,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	function initMaterial( material, lights, fog, object ) {
 
-		var materialProperties = properties.get( material );
+		var materialProperties = materialsCache.get( material );
 
 		var parameters = programCache.getParameters( material, lights, fog, object );
 		var code = programCache.getProgramCode( material, parameters );
@@ -1538,7 +1539,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		_usedTextureUnits = 0;
 
-		var materialProperties = properties.get( material );
+		var materialProperties = materialsCache.get( material );
 
 		if ( material.needsUpdate || ! materialProperties.program ) {
 

+ 40 - 0
src/renderers/webgl/WebGLMaterials.js

@@ -0,0 +1,40 @@
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+THREE.WebGLMaterials = function () {
+
+	var properties = {};
+
+	this.get = function ( material ) {
+
+		var uuid = material.uuid;
+		var map = properties[ uuid ];
+
+		if ( map === undefined ) {
+
+			map = {
+
+			};
+
+			properties[ uuid ] = map;
+
+		}
+
+		return map;
+
+	};
+
+	this.delete = function ( object ) {
+
+		delete properties[ object.uuid ];
+
+	};
+
+	this.clear = function () {
+
+		properties = {};
+
+	};
+
+};

+ 1 - 0
utils/build/includes/common.json

@@ -194,6 +194,7 @@
 	"src/renderers/webgl/WebGLExtensions.js",
 	"src/renderers/webgl/WebGLCapabilities.js",
 	"src/renderers/webgl/WebGLGeometries.js",
+	"src/renderers/webgl/WebGLMaterials.js",
 	"src/renderers/webgl/WebGLObjects.js",
 	"src/renderers/webgl/WebGLProgram.js",
 	"src/renderers/webgl/WebGLPrograms.js",