text: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  // WARNING: This file was auto-generated, any change will be overridden in next release. Please use configs/es6.conf.js then run "npm run convert". //
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  import { Material } from './Material.js'
  import { UniformsUtils } from '../renderers/shaders/UniformsUtils.js'
  
  function ShaderMaterial( parameters ) {
  
  	Material.call( this );
  
  	this.type = 'ShaderMaterial';
  
  	this.defines = {};
  	this.uniforms = {};
  
  	this.vertexShader = 'void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}';
  	this.fragmentShader = 'void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}';
  
  	this.linewidth = 1;
  
  	this.wireframe = false;
  	this.wireframeLinewidth = 1;
  
  	this.fog = false; // set to use scene fog
  	this.lights = false; // set to use scene lights
  	this.clipping = false; // set to use user-defined clipping planes
  
  	this.skinning = false; // set to use skinning attribute streams
  	this.morphTargets = false; // set to use morph targets
  	this.morphNormals = false; // set to use morph normals
  
  	this.extensions = {
  		derivatives: false, // set to use derivatives
  		fragDepth: false, // set to use fragment depth values
  		drawBuffers: false, // set to use draw buffers
  		shaderTextureLOD: false // set to use shader texture LOD
  	};
  
  	// When rendered geometry doesn't include these attributes but the material does,
  	// use these default values in WebGL. This avoids errors when buffer data is missing.
  	this.defaultAttributeValues = {
  		'color': [ 1, 1, 1 ],
  		'uv': [ 0, 0 ],
  		'uv2': [ 0, 0 ]
  	};
  
  	this.index0AttributeName = undefined;
  	this.uniformsNeedUpdate = false;
  
  	if ( parameters !== undefined ) {
  
  		if ( parameters.attributes !== undefined ) {
  
  			console.error( 'ShaderMaterial: attributes should now be defined in BufferGeometry instead.' );
  
  		}
  
  		this.setValues( parameters );
  
  	}
  
  }
  
  ShaderMaterial.prototype = Object.create( Material.prototype );
  ShaderMaterial.prototype.constructor = ShaderMaterial;
  
  ShaderMaterial.prototype.isShaderMaterial = true;
  
  ShaderMaterial.prototype.copy = function ( source ) {
  
  	Material.prototype.copy.call( this, source );
  
  	this.fragmentShader = source.fragmentShader;
  	this.vertexShader = source.vertexShader;
  
  	this.uniforms = UniformsUtils.clone( source.uniforms );
  
  	this.defines = Object.assign( {}, source.defines );
  
  	this.wireframe = source.wireframe;
  	this.wireframeLinewidth = source.wireframeLinewidth;
  
  	this.lights = source.lights;
  	this.clipping = source.clipping;
  
  	this.skinning = source.skinning;
  
  	this.morphTargets = source.morphTargets;
  	this.morphNormals = source.morphNormals;
  
  	this.extensions = source.extensions;
  
  	return this;
  
  };
  
  ShaderMaterial.prototype.toJSON = function ( meta ) {
  
  	var data = Material.prototype.toJSON.call( this, meta );
  
  	data.uniforms = {};
  
  	for ( var name in this.uniforms ) {
  
  		var uniform = this.uniforms[ name ];
  		var value = uniform.value;
  
  		if ( value.isTexture ) {
  
  			data.uniforms[ name ] = {
  				type: 't',
  				value: value.toJSON( meta ).uuid
  			};
  
  		} else if ( value.isColor ) {
  
  			data.uniforms[ name ] = {
  				type: 'c',
  				value: value.getHex()
  			};
  
  		} else if ( value.isVector2 ) {
  
  			data.uniforms[ name ] = {
  				type: 'v2',
  				value: value.toArray()
  			};
  
  		} else if ( value.isVector3 ) {
  
  			data.uniforms[ name ] = {
  				type: 'v3',
  				value: value.toArray()
  			};
  
  		} else if ( value.isVector4 ) {
  
  			data.uniforms[ name ] = {
  				type: 'v4',
  				value: value.toArray()
  			};
  
  		} else if ( value.isMatrix4 ) {
  
  			data.uniforms[ name ] = {
  				type: 'm4',
  				value: value.toArray()
  			};
  
  		} else {
  
  			data.uniforms[ name ] = {
  				value: value
  			};
  
  			// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far
  
  		}
  
  	}
  
  	if ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;
  
  	data.vertexShader = this.vertexShader;
  	data.fragmentShader = this.fragmentShader;
  
  	return data;
  
  };
  
  ;
  
  export { ShaderMaterial }
  