Browse Source

Merge pull request #15465 from takahirox/ShaderMaterialExtensionsSerialization

ShaderMaterial.extensions serialization
Mr.doob 6 years ago
parent
commit
cacce1a604
2 changed files with 20 additions and 0 deletions
  1. 10 0
      src/loaders/MaterialLoader.js
  2. 10 0
      src/materials/ShaderMaterial.js

+ 10 - 0
src/loaders/MaterialLoader.js

@@ -146,6 +146,16 @@ Object.assign( MaterialLoader.prototype, {
 		if ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;
 		if ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;
 
+		if ( json.extensions !== undefined ) {
+
+			for ( var key in json.extensions ) {
+
+				material.extensions[ key ] = json.extensions[ key ];
+
+			}
+
+		}
+
 		// Deprecated
 
 		if ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading

+ 10 - 0
src/materials/ShaderMaterial.js

@@ -182,6 +182,16 @@ ShaderMaterial.prototype.toJSON = function ( meta ) {
 	data.vertexShader = this.vertexShader;
 	data.fragmentShader = this.fragmentShader;
 
+	var extensions = {};
+
+	for ( var key in this.extensions ) {
+
+		if ( this.extensions[ key ] === true ) extensions[ key ] = true;
+
+	}
+
+	if ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;
+
 	return data;
 
 };