|
@@ -0,0 +1,45 @@
|
|
|
+import NodeMaterial from './NodeMaterial.js';
|
|
|
+import { MeshNormalMaterial } from 'three';
|
|
|
+import { vec4, diffuseColor, materialOpacity, transformedNormalView, directionToColor } from '../shadernode/ShaderNodeElements.js';
|
|
|
+
|
|
|
+const defaultValues = new MeshNormalMaterial();
|
|
|
+
|
|
|
+class MeshNormalNodeMaterial extends NodeMaterial {
|
|
|
+
|
|
|
+ constructor( parameters ) {
|
|
|
+
|
|
|
+ super();
|
|
|
+
|
|
|
+ this.isMeshNormalNodeMaterial = true;
|
|
|
+
|
|
|
+ this.opacityNode = null;
|
|
|
+
|
|
|
+ this.positionNode = null;
|
|
|
+
|
|
|
+ this.setDefaultValues( defaultValues );
|
|
|
+
|
|
|
+ this.setValues( parameters );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ constructDiffuseColor( builder, stack ) {
|
|
|
+
|
|
|
+ const opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;
|
|
|
+
|
|
|
+ stack.assign( diffuseColor, vec4( directionToColor( transformedNormalView ), opacityNode ) );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ copy( source ) {
|
|
|
+
|
|
|
+ this.opacityNode = source.opacityNode;
|
|
|
+
|
|
|
+ this.positionNode = source.positionNode;
|
|
|
+
|
|
|
+ return super.copy( source );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+export default MeshNormalNodeMaterial;
|