123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import MaterialNode from './MaterialNode.js';
- import { materialReference } from './MaterialReferenceNode.js';
- import { normalView } from './NormalNode.js';
- import { normalMap } from '../display/NormalMapNode.js';
- import { bumpMap } from '../display/BumpMapNode.js';
- import { addNodeClass } from '../core/Node.js';
- import { nodeImmutable } from '../shadernode/ShaderNode.js';
- class ExtendedMaterialNode extends MaterialNode {
- constructor( scope ) {
- super( scope );
- }
- getNodeType( builder ) {
- const scope = this.scope;
- let type = null;
- if ( scope === ExtendedMaterialNode.NORMAL || scope === ExtendedMaterialNode.CLEARCOAT_NORMAL ) {
- type = 'vec3';
- }
- return type || super.getNodeType( builder );
- }
- construct( builder ) {
- const material = builder.material;
- const scope = this.scope;
- let node = null;
- if ( scope === ExtendedMaterialNode.NORMAL ) {
- if ( material.normalMap ) {
- node = normalMap( this.getTexture( builder, 'normalMap' ), materialReference( 'normalScale', 'vec2' ) );
- } else if ( material.bumpMap ) {
- node = bumpMap( material.bumpMap, materialReference( 'bumpScale', 'float' ) );
- } else {
- node = normalView;
- }
- } else if ( scope === ExtendedMaterialNode.CLEARCOAT_NORMAL ) {
- node = material.clearcoatNormalMap ? normalMap( this.getTexture( builder, 'clearcoatNormalMap' ), materialReference( 'clearcoatNormalScale', 'vec2' ) ) : normalView;
- }
- return node || super.construct( builder );
- }
- }
- ExtendedMaterialNode.NORMAL = 'normal';
- ExtendedMaterialNode.CLEARCOAT_NORMAL = 'clearcoatNormal';
- export default ExtendedMaterialNode;
- export const materialNormal = nodeImmutable( ExtendedMaterialNode, ExtendedMaterialNode.NORMAL );
- export const materialClearcoatNormal = nodeImmutable( ExtendedMaterialNode, ExtendedMaterialNode.CLEARCOAT_NORMAL );
- addNodeClass( ExtendedMaterialNode );
|