/** * @author alteredq / http://alteredqualia.com/ * * parameters = { * defines: { "label" : "value" }, * uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } }, * * fragmentShader: , * vertexShader: , * * shading: THREE.SmoothShading, * blending: THREE.NormalBlending, * depthTest: , * depthWrite: , * * wireframe: , * wireframeLinewidth: , * * lights: , * * vertexColors: THREE.NoColors / THREE.VertexColors / THREE.FaceColors, * * skinning: , * morphTargets: , * morphNormals: , * * fog: * } */ THREE.ShaderMaterial = function ( parameters ) { THREE.Material.call( this ); this.type = 'ShaderMaterial'; this.defines = {}; this.uniforms = {}; this.attributes = null; 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.shading = THREE.SmoothShading; 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.vertexColors = THREE.NoColors; // set to use "color" attribute stream 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 // 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.setValues( parameters ); }; THREE.ShaderMaterial.prototype = Object.create( THREE.Material.prototype ); THREE.ShaderMaterial.prototype.constructor = THREE.ShaderMaterial; THREE.ShaderMaterial.prototype.clone = function () { var material = new THREE.ShaderMaterial(); THREE.Material.prototype.clone.call( this, material ); material.fragmentShader = this.fragmentShader; material.vertexShader = this.vertexShader; material.uniforms = THREE.UniformsUtils.clone( this.uniforms ); material.attributes = this.attributes; material.defines = this.defines; material.shading = this.shading; material.wireframe = this.wireframe; material.wireframeLinewidth = this.wireframeLinewidth; material.fog = this.fog; material.lights = this.lights; material.vertexColors = this.vertexColors; material.skinning = this.skinning; material.morphTargets = this.morphTargets; material.morphNormals = this.morphNormals; return material; };