constructor( parameters ) {

		super();

		console.warn( 'THREE.MeshGouraudMaterial: MeshGouraudMaterial has been deprecated and will be removed with r183. Use THREE.MeshLambertMaterial instead.' ); // @deprecated r173

		this.isMeshGouraudMaterial = true;

		this.type = 'MeshGouraudMaterial';

		//this.color = new THREE.Color( 0xffffff ); // diffuse

		//this.map = null;

		//this.lightMap = null;
		//this.lightMapIntensity = 1.0;

		//this.aoMap = null;
		//this.aoMapIntensity = 1.0;

		//this.emissive = new THREE.Color( 0x000000 );
		//this.emissiveIntensity = 1.0;
		//this.emissiveMap = null;

		//this.specularMap = null;

		//this.alphaMap = null;

		//this.envMap = null;
		this.combine = MultiplyOperation; // combine has no uniform
		//this.reflectivity = 1;
		//this.refractionRatio = 0.98;

		this.fog = false; // set to use scene fog
		this.lights = true; // set to use scene lights
		this.clipping = false; // set to use user-defined clipping planes

		const shader = GouraudShader;

		this.defines = Object.assign( {}, shader.defines );
		this.uniforms = UniformsUtils.clone( shader.uniforms );
		this.vertexShader = shader.vertexShader;
		this.fragmentShader = shader.fragmentShader;

		const exposePropertyNames = [
			'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity',
			'emissive', 'emissiveIntensity', 'emissiveMap', 'specularMap', 'alphaMap',
			'envMap', 'reflectivity', 'refractionRatio', 'opacity', 'diffuse'
		];

		for ( const propertyName of exposePropertyNames ) {

			Object.defineProperty( this, propertyName, {

				get: function () {

					return this.uniforms[ propertyName ].value;

				},

				set: function ( value ) {

					this.uniforms[ propertyName ].value = value;

				}

			} );

		}

		Object.defineProperty( this, 'color', Object.getOwnPropertyDescriptor( this, 'diffuse' ) );

		this.setValues( parameters );

	}
MeshGouraudMaterial

Lambert illumination model with Gouraud (per-vertex) shading