WebGLNodes.js 942 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { WebGLNodeBuilder } from './WebGLNodeBuilder.js';
  2. import { Material } from 'three';
  3. function addCodeAfterSnippet( source, snippet, code ) {
  4. const index = source.indexOf( snippet );
  5. if ( index !== - 1 ) {
  6. const start = source.substring( 0, index + snippet.length );
  7. const end = source.substring( index + snippet.length );
  8. return `${start}\n${code}\n${end}`;
  9. }
  10. return source;
  11. }
  12. Material.prototype.onBuild = function ( parameters, renderer ) {
  13. new WebGLNodeBuilder( this, renderer, parameters ).build();
  14. let fragmentShader = parameters.fragmentShader;
  15. fragmentShader = addCodeAfterSnippet( fragmentShader, '#include <color_pars_fragment>',
  16. `#ifdef NODE_HEADER_UNIFORMS
  17. NODE_HEADER_UNIFORMS
  18. #endif` );
  19. fragmentShader = addCodeAfterSnippet( fragmentShader, '#include <color_fragment>',
  20. `#ifdef NODE_COLOR
  21. diffuseColor = NODE_COLOR;
  22. #endif` );
  23. parameters.fragmentShader = fragmentShader;
  24. };