MeshShaderMaterial.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /**
  2. * @author alteredq / http://alteredqualia.com/
  3. *
  4. * parameters = {
  5. * fragment_shader: <string>,
  6. * vertex_shader: <string>,
  7. * uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } },
  8. * shading: THREE.SmoothShading,
  9. * blending: THREE.NormalBlending,
  10. * depth_test: <bool>,
  11. * wireframe: <boolean>,
  12. * wireframe_linewidth: <float>,
  13. * vertex_colors: <bool>,
  14. * skinning: <bool>
  15. * }
  16. */
  17. THREE.MeshShaderMaterial = function ( parameters ) {
  18. this.id = THREE.MaterialCounter.value ++;
  19. this.fragment_shader = "void main() {}";
  20. this.vertex_shader = "void main() {}";
  21. this.uniforms = {};
  22. this.opacity = 1.0; // set to < 1.0 to renderer in transparent batch
  23. this.shading = THREE.SmoothShading;
  24. this.blending = THREE.NormalBlending;
  25. this.depth_test = true;
  26. this.wireframe = false;
  27. this.wireframe_linewidth = 1.0;
  28. this.wireframe_linecap = 'round'; // doesn't make sense here
  29. this.wireframe_linejoin = 'round'; // not implemented in WebGLRenderer (and this material doesn't make sense in CanvasRenderer)
  30. this.vertex_colors = false; // must set this if shader wants to use "color" attribute stream
  31. this.skinning = false; // must set this is shader wants to use skinning attribute streams
  32. if ( parameters ) {
  33. if ( parameters.fragment_shader !== undefined ) this.fragment_shader = parameters.fragment_shader;
  34. if ( parameters.vertex_shader !== undefined ) this.vertex_shader = parameters.vertex_shader;
  35. if ( parameters.uniforms !== undefined ) this.uniforms = parameters.uniforms;
  36. if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
  37. if ( parameters.shading !== undefined ) this.shading = parameters.shading;
  38. if ( parameters.blending !== undefined ) this.blending = parameters.blending;
  39. if ( parameters.depth_test !== undefined ) this.depth_test = parameters.depth_test;
  40. if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
  41. if ( parameters.wireframe_linewidth !== undefined ) this.wireframe_linewidth = parameters.wireframe_linewidth;
  42. if ( parameters.wireframe_linecap !== undefined ) this.wireframe_linecap = parameters.wireframe_linecap;
  43. if ( parameters.wireframe_linejoin !== undefined ) this.wireframe_linejoin = parameters.wireframe_linejoin;
  44. if ( parameters.vertex_colors !== undefined ) this.vertex_colors = parameters.vertex_colors;
  45. if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning;
  46. }
  47. };
粤ICP备19079148号