/** * @author alteredq / http://alteredqualia.com/ * * parameters = { * fragment_shader: , * vertex_shader: , * uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } }, * shading: THREE.SmoothShading, * blending: THREE.NormalBlending, * depth_test: , * wireframe: , * wireframe_linewidth: , * vertex_colors: , * skinning: * } */ THREE.MeshShaderMaterial = function ( parameters ) { this.id = THREE.MaterialCounter.value ++; this.fragment_shader = "void main() {}"; this.vertex_shader = "void main() {}"; this.uniforms = {}; this.opacity = 1.0; // set to < 1.0 to renderer in transparent batch this.shading = THREE.SmoothShading; this.blending = THREE.NormalBlending; this.depth_test = true; this.wireframe = false; this.wireframe_linewidth = 1.0; this.wireframe_linecap = 'round'; // doesn't make sense here this.wireframe_linejoin = 'round'; // not implemented in WebGLRenderer (and this material doesn't make sense in CanvasRenderer) this.vertex_colors = false; // must set this if shader wants to use "color" attribute stream this.skinning = false; // must set this is shader wants to use skinning attribute streams if ( parameters ) { if ( parameters.fragment_shader !== undefined ) this.fragment_shader = parameters.fragment_shader; if ( parameters.vertex_shader !== undefined ) this.vertex_shader = parameters.vertex_shader; if ( parameters.uniforms !== undefined ) this.uniforms = parameters.uniforms; if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity; if ( parameters.shading !== undefined ) this.shading = parameters.shading; if ( parameters.blending !== undefined ) this.blending = parameters.blending; if ( parameters.depth_test !== undefined ) this.depth_test = parameters.depth_test; if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe; if ( parameters.wireframe_linewidth !== undefined ) this.wireframe_linewidth = parameters.wireframe_linewidth; if ( parameters.wireframe_linecap !== undefined ) this.wireframe_linecap = parameters.wireframe_linecap; if ( parameters.wireframe_linejoin !== undefined ) this.wireframe_linejoin = parameters.wireframe_linejoin; if ( parameters.vertex_colors !== undefined ) this.vertex_colors = parameters.vertex_colors; if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning; } }; THREE.MeshShaderMaterial.prototype = { toString: function () { return 'THREE.MeshShaderMaterial (
' + 'id: ' + this.id + '
' + 'blending: ' + this.blending + '
' + 'depth_test: ' + this.depth_test + '
' + 'wireframe: ' + this.wireframe + '
' + 'wireframe_linewidth: ' + this.wireframe_linewidth +'
' + 'wireframe_linecap: ' + this.wireframe_linecap +'
' + 'wireframe_linejoin: ' + this.wireframe_linejoin +'
' + 'vertex_colors: ' + this.vertex_colors + '
' + 'skinning: ' + this.skinning + '
' + ')'; } };