MeshNormalNodeMaterial.js 960 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import NodeMaterial from './NodeMaterial.js';
  2. import { MeshNormalMaterial } from 'three';
  3. import { vec4, diffuseColor, materialOpacity, transformedNormalView, directionToColor } from '../shadernode/ShaderNodeElements.js';
  4. const defaultValues = new MeshNormalMaterial();
  5. class MeshNormalNodeMaterial extends NodeMaterial {
  6. constructor( parameters ) {
  7. super();
  8. this.isMeshNormalNodeMaterial = true;
  9. this.opacityNode = null;
  10. this.positionNode = null;
  11. this.setDefaultValues( defaultValues );
  12. this.setValues( parameters );
  13. }
  14. constructDiffuseColor( builder, stack ) {
  15. const opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;
  16. stack.assign( diffuseColor, vec4( directionToColor( transformedNormalView ), opacityNode ) );
  17. }
  18. copy( source ) {
  19. this.opacityNode = source.opacityNode;
  20. this.positionNode = source.positionNode;
  21. return super.copy( source );
  22. }
  23. }
  24. export default MeshNormalNodeMaterial;
粤ICP备19079148号