diff --git a/src/materials/MeshShaderMaterial.js b/src/materials/MeshShaderMaterial.js new file mode 100644 index 0000000000000000000000000000000000000000..5adadcb5061300487a9e04022ba5d166dcf8e3ae --- /dev/null +++ b/src/materials/MeshShaderMaterial.js @@ -0,0 +1,65 @@ +/** + * @author alteredq / http://alteredqualia.com/ + * + * parameters = { + * fragment_shader: , + * vertex_shader: , + * uniforms: [ "parameter1": value1, "parameter2": value2 ], + + * shading: THREE.SmoothShading, + * blending: THREE.NormalBlending, + * wireframe: , + * wireframe_linewidth: + * } + */ + +THREE.MeshShaderMaterial = function ( parameters ) { + + this.id = THREE.MeshShaderMaterialCounter.value ++; + + this.fragment_shader = "void main() {}"; + this.vertex_shader = "void main() {}"; + this.uniforms = {}; + + this.shading = THREE.SmoothShading; + this.blending = THREE.NormalBlending; + + this.wireframe = false; + this.wireframe_linewidth = 1; + this.wireframe_linecap = 'round'; + this.wireframe_linejoin = 'round'; + + 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.shading !== undefined ) this.shading = parameters.shading; + if ( parameters.blending !== undefined ) this.blending = parameters.blending; + + 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; + + } + + this.toString = function () { + + return 'THREE.MeshShaderMaterial (
' + + 'id: ' + this.id + '
' + + + 'blending: ' + this.blending + '
' + + 'wireframe: ' + this.wireframe + '
' + + 'wireframe_linewidth: ' + this.wireframe_linewidth +'
' + + 'wireframe_linecap: ' + this.wireframe_linecap +'
' + + 'wireframe_linejoin: ' + this.wireframe_linejoin +'
' + + ')'; + + }; + +} + +THREE.MeshShaderMaterialCounter = { value: 0 };