diff --git a/examples/jsm/nodes/loaders/NodeLoader.js b/examples/jsm/loaders/NodeLoader.js similarity index 92% rename from examples/jsm/nodes/loaders/NodeLoader.js rename to examples/jsm/loaders/NodeLoader.js index fff46ef8ccbde6..0027333ae71388 100644 --- a/examples/jsm/nodes/loaders/NodeLoader.js +++ b/examples/jsm/loaders/NodeLoader.js @@ -1,5 +1,5 @@ -import { createNodeFromType } from '../core/Node.js'; -import { nodeObject } from '../shadernode/ShaderNode.js'; +import { createNodeFromType } from '../nodes/core/Node.js'; +import { nodeObject } from '../nodes/shadernode/ShaderNode.js'; import { FileLoader, Loader } from 'three'; class NodeLoader extends Loader { diff --git a/examples/jsm/nodes/loaders/NodeMaterialLoader.js b/examples/jsm/loaders/NodeMaterialLoader.js similarity index 100% rename from examples/jsm/nodes/loaders/NodeMaterialLoader.js rename to examples/jsm/loaders/NodeMaterialLoader.js diff --git a/examples/jsm/nodes/loaders/NodeObjectLoader.js b/examples/jsm/loaders/NodeObjectLoader.js similarity index 100% rename from examples/jsm/nodes/loaders/NodeObjectLoader.js rename to examples/jsm/loaders/NodeObjectLoader.js diff --git a/examples/jsm/nodes/materials/Materials.js b/examples/jsm/materials/Materials.js similarity index 99% rename from examples/jsm/nodes/materials/Materials.js rename to examples/jsm/materials/Materials.js index 7c1073c3bc627e..c3578bd551313f 100644 --- a/examples/jsm/nodes/materials/Materials.js +++ b/examples/jsm/materials/Materials.js @@ -1,6 +1,7 @@ // @TODO: We can simplify "export { default as SomeNode, other, exports } from '...'" to just "export * from '...'" if we will use only named exports export { default as NodeMaterial, addNodeMaterial, createNodeMaterialFromType } from './NodeMaterial.js'; +/* export { default as InstancedPointsNodeMaterial } from './InstancedPointsNodeMaterial.js'; export { default as LineBasicNodeMaterial } from './LineBasicNodeMaterial.js'; export { default as LineDashedNodeMaterial } from './LineDashedNodeMaterial.js'; @@ -17,3 +18,4 @@ export { default as MeshMatcapNodeMaterial } from './MeshMatcapNodeMaterial.js'; export { default as PointsNodeMaterial } from './PointsNodeMaterial.js'; export { default as SpriteNodeMaterial } from './SpriteNodeMaterial.js'; export { default as ShadowNodeMaterial } from './ShadowNodeMaterial.js'; +*/ \ No newline at end of file diff --git a/examples/jsm/materials/MeshBasicMaterial.js b/examples/jsm/materials/MeshBasicMaterial.js new file mode 100644 index 00000000000000..92381482f5ddb9 --- /dev/null +++ b/examples/jsm/materials/MeshBasicMaterial.js @@ -0,0 +1,82 @@ +import NodeMaterial from './NodeMaterial.js'; +import { MultiplyOperation } from '../../../src/constants.js'; +import { Color } from '../../../src/math/Color.js'; +import { Euler } from '../../../src/math/Euler.js'; + +class MeshBasicMaterial extends NodeMaterial { + + constructor( parameters ) { + + super(); + + this.isMeshBasicMaterial = true; + + this.color = new Color( 0xffffff ); // emissive + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.fog = true; + + this.setValues( parameters ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.fog = source.fog; + + return this; + + } + +} + +export default MeshBasicMaterial; diff --git a/examples/jsm/materials/MeshPhongMaterial.js b/examples/jsm/materials/MeshPhongMaterial.js new file mode 100644 index 00000000000000..2a3853599f780d --- /dev/null +++ b/examples/jsm/materials/MeshPhongMaterial.js @@ -0,0 +1,143 @@ +import NodeMaterial from './NodeMaterial.js'; +import { MultiplyOperation, TangentSpaceNormalMap } from '../../../src/constants.js'; +import { Vector2 } from '../../../src/math/Vector2.js'; +import { Color } from '../../../src/math/Color.js'; +import { Euler } from '../../../src/math/Euler.js'; + +import { + shininess, specularColor, + materialShininess, materialSpecular +} from '../nodes/Nodes.js'; + +import PhongLightingModel from '../nodes/functions/PhongLightingModel.js'; + +class MeshPhongMaterial extends NodeMaterial { + + constructor( parameters ) { + + super(); + + this.isMeshPhongMaterial = true; + + this.color = new Color( 0xffffff ); // diffuse + this.specular = new Color( 0x111111 ); + this.shininess = 30; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.specularMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapRotation = new Euler(); + this.combine = MultiplyOperation; + this.reflectivity = 1; + this.refractionRatio = 0.98; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.flatShading = false; + + this.fog = true; + + this.lights = true; + + this.setValues( parameters ); + + } + + setupLightingModel( /*builder*/ ) { + + return new PhongLightingModel(); + + } + + setupVariants() { + + shininess.assign( materialShininess.max( 1e-4 ) ); // to prevent pow( 0.0, 0.0 ) ); + specularColor.assign( materialSpecular ); + + } + + copy( source ) { + + super.copy( source ); + + this.color.copy( source.color ); + this.specular.copy( source.specular ); + this.shininess = source.shininess; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.specularMap = source.specularMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.combine = source.combine; + this.reflectivity = source.reflectivity; + this.refractionRatio = source.refractionRatio; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +export default MeshPhongMaterial; diff --git a/examples/jsm/materials/MeshStandardMaterial.js b/examples/jsm/materials/MeshStandardMaterial.js new file mode 100644 index 00000000000000..79c6ae7c2b8fcb --- /dev/null +++ b/examples/jsm/materials/MeshStandardMaterial.js @@ -0,0 +1,160 @@ +import NodeMaterial from './NodeMaterial.js'; +import { TangentSpaceNormalMap } from '../../../src/constants.js'; +import { Vector2 } from '../../../src/math/Vector2.js'; +import { Color } from '../../../src/math/Color.js'; +import { Euler } from '../../../src/math/Euler.js'; + +import { + diffuseColor, metalness, roughness, specularColor, specularF90, + mix, + materialRoughness, materialMetalness, + getRoughness, + vec3, vec4 +} from '../nodes/Nodes.js'; +import PhysicalLightingModel from '../nodes/functions/PhysicalLightingModel.js'; + +class MeshStandardMaterial extends NodeMaterial { + + constructor( parameters ) { + + super(); + + this.isMeshStandardMaterial = true; + + this.color = new Color( 0xffffff ); // diffuse + this.roughness = 1.0; + this.metalness = 0.0; + + this.map = null; + + this.lightMap = null; + this.lightMapIntensity = 1.0; + + this.aoMap = null; + this.aoMapIntensity = 1.0; + + this.emissive = new Color( 0x000000 ); + this.emissiveIntensity = 1.0; + this.emissiveMap = null; + + this.bumpMap = null; + this.bumpScale = 1; + + this.normalMap = null; + this.normalMapType = TangentSpaceNormalMap; + this.normalScale = new Vector2( 1, 1 ); + + this.displacementMap = null; + this.displacementScale = 1; + this.displacementBias = 0; + + this.roughnessMap = null; + + this.metalnessMap = null; + + this.alphaMap = null; + + this.envMap = null; + this.envMapRotation = new Euler(); + this.envMapIntensity = 1.0; + + this.wireframe = false; + this.wireframeLinewidth = 1; + this.wireframeLinecap = 'round'; + this.wireframeLinejoin = 'round'; + + this.flatShading = false; + + this.fog = true; + + this.lights = true; + + this.setValues( parameters ); + + } + + setupLightingModel( /*builder*/ ) { + + return new PhysicalLightingModel(); + + } + + setupSpecular() { + + const specularColorNode = mix( vec3( 0.04 ), diffuseColor.rgb, metalness ); + + specularColor.assign( specularColorNode ); + specularF90.assign( 1.0 ); + + } + + setupVariants() { + + metalness.assign( materialMetalness ); + roughness.assign( getRoughness( { roughness: materialRoughness } ) ); + + this.setupSpecular(); + + diffuseColor.assign( vec4( diffuseColor.rgb.mul( materialRoughness.oneMinus() ), diffuseColor.a ) ); + + } + + copy( source ) { + + super.copy( source ); + + this.defines = { 'STANDARD': '' }; + + this.color.copy( source.color ); + this.roughness = source.roughness; + this.metalness = source.metalness; + + this.map = source.map; + + this.lightMap = source.lightMap; + this.lightMapIntensity = source.lightMapIntensity; + + this.aoMap = source.aoMap; + this.aoMapIntensity = source.aoMapIntensity; + + this.emissive.copy( source.emissive ); + this.emissiveMap = source.emissiveMap; + this.emissiveIntensity = source.emissiveIntensity; + + this.bumpMap = source.bumpMap; + this.bumpScale = source.bumpScale; + + this.normalMap = source.normalMap; + this.normalMapType = source.normalMapType; + this.normalScale.copy( source.normalScale ); + + this.displacementMap = source.displacementMap; + this.displacementScale = source.displacementScale; + this.displacementBias = source.displacementBias; + + this.roughnessMap = source.roughnessMap; + + this.metalnessMap = source.metalnessMap; + + this.alphaMap = source.alphaMap; + + this.envMap = source.envMap; + this.envMapRotation.copy( source.envMapRotation ); + this.envMapIntensity = source.envMapIntensity; + + this.wireframe = source.wireframe; + this.wireframeLinewidth = source.wireframeLinewidth; + this.wireframeLinecap = source.wireframeLinecap; + this.wireframeLinejoin = source.wireframeLinejoin; + + this.flatShading = source.flatShading; + + this.fog = source.fog; + + return this; + + } + +} + +export default MeshStandardMaterial; diff --git a/examples/jsm/nodes/materials/NodeMaterial.js b/examples/jsm/materials/NodeMaterial.js similarity index 87% rename from examples/jsm/nodes/materials/NodeMaterial.js rename to examples/jsm/materials/NodeMaterial.js index c6f0ee9fb3fdb3..eece562eb3337e 100644 --- a/examples/jsm/nodes/materials/NodeMaterial.js +++ b/examples/jsm/materials/NodeMaterial.js @@ -1,33 +1,37 @@ -import { Material, ShaderMaterial } from 'three'; -import { getNodeChildren, getCacheKey } from '../core/NodeUtils.js'; -import { attribute } from '../core/AttributeNode.js'; -import { output, diffuseColor, varyingProperty } from '../core/PropertyNode.js'; -import { materialAlphaTest, materialColor, materialOpacity, materialEmissive, materialNormal } from '../accessors/MaterialNode.js'; -import { modelViewProjection } from '../accessors/ModelViewProjectionNode.js'; -import { transformedNormalView, normalLocal } from '../accessors/NormalNode.js'; -import { instance } from '../accessors/InstanceNode.js'; -import { batch } from '../accessors/BatchNode.js'; -import { materialReference } from '../accessors/MaterialReferenceNode.js'; -import { positionLocal, positionView } from '../accessors/PositionNode.js'; -import { skinningReference } from '../accessors/SkinningNode.js'; -import { morphReference } from '../accessors/MorphNode.js'; -import { texture } from '../accessors/TextureNode.js'; -import { cubeTexture } from '../accessors/CubeTextureNode.js'; -import { lightsNode } from '../lighting/LightsNode.js'; -import { mix } from '../math/MathNode.js'; -import { float, vec3, vec4 } from '../shadernode/ShaderNode.js'; -import AONode from '../lighting/AONode.js'; -import { lightingContext } from '../lighting/LightingContextNode.js'; -import EnvironmentNode from '../lighting/EnvironmentNode.js'; -import IrradianceNode from '../lighting/IrradianceNode.js'; -import { depthPixel } from '../display/ViewportDepthNode.js'; -import { cameraLogDepth } from '../accessors/CameraNode.js'; -import { clipping, clippingAlpha } from '../accessors/ClippingNode.js'; -import { faceDirection } from '../display/FrontFacingNode.js'; +import { Material } from 'three'; +import { + attribute, + output, diffuseColor, varyingProperty, + materialAlphaTest, materialColor, materialOpacity, materialEmissive, materialNormal, + modelViewProjection, + transformedNormalView, + instance, + batch, + materialReference, + positionLocal, positionView, + skinningReference, + morphReference, + texture, + cubeTexture, + lightsNode, + mix, + float, vec3, vec4, + lightingContext, + depthPixel, + cameraLogDepth, + clipping, clippingAlpha, + faceDirection +} from '../nodes/Nodes.js'; + +import { getNodeChildren, getCacheKey } from '../nodes/core/NodeUtils.js'; + +import AONode from '../nodes/lighting/AONode.js'; +import EnvironmentNode from '../nodes/lighting/EnvironmentNode.js'; +import IrradianceNode from '../nodes/lighting/IrradianceNode.js'; const NodeMaterials = new Map(); -class NodeMaterial extends ShaderMaterial { +class NodeMaterial extends Material { constructor() { diff --git a/examples/jsm/nodes/materials/PointsNodeMaterial.js b/examples/jsm/materials/PointsNodeMaterial.js similarity index 100% rename from examples/jsm/nodes/materials/PointsNodeMaterial.js rename to examples/jsm/materials/PointsNodeMaterial.js diff --git a/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js b/examples/jsm/materials/nodes/InstancedPointsNodeMaterial.js similarity index 81% rename from examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js rename to examples/jsm/materials/nodes/InstancedPointsNodeMaterial.js index 068049b1020a14..7cec66653fc2a4 100644 --- a/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +++ b/examples/jsm/materials/nodes/InstancedPointsNodeMaterial.js @@ -1,15 +1,17 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { varying } from '../core/VaryingNode.js'; -import { property } from '../core/PropertyNode.js'; -import { attribute } from '../core/AttributeNode.js'; -import { cameraProjectionMatrix } from '../accessors/CameraNode.js'; -import { materialColor, materialPointWidth } from '../accessors/MaterialNode.js'; // or should this be a property, instead? -import { modelViewMatrix } from '../accessors/ModelNode.js'; -import { positionGeometry } from '../accessors/PositionNode.js'; -import { smoothstep } from '../math/MathNode.js'; -import { tslFn, vec2, vec4 } from '../shadernode/ShaderNode.js'; -import { uv } from '../accessors/UVNode.js'; -import { viewport } from '../display/ViewportNode.js'; +import { + varying, + property, + attribute, + cameraProjectionMatrix, + materialColor, materialPointWidth, + modelViewMatrix, + positionGeometry, + smoothstep, + tslFn, vec2, vec4, + uv, + viewport +} from '../nodes/Nodes.js'; import { PointsMaterial } from 'three'; diff --git a/examples/jsm/nodes/materials/Line2NodeMaterial.js b/examples/jsm/materials/nodes/Line2NodeMaterial.js similarity index 92% rename from examples/jsm/nodes/materials/Line2NodeMaterial.js rename to examples/jsm/materials/nodes/Line2NodeMaterial.js index 515c811d356805..564907c666891e 100644 --- a/examples/jsm/nodes/materials/Line2NodeMaterial.js +++ b/examples/jsm/materials/nodes/Line2NodeMaterial.js @@ -1,17 +1,19 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { temp } from '../core/VarNode.js'; -import { varying } from '../core/VaryingNode.js'; -import { property, varyingProperty } from '../core/PropertyNode.js'; -import { attribute } from '../core/AttributeNode.js'; -import { cameraProjectionMatrix } from '../accessors/CameraNode.js'; -import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth } from '../accessors/MaterialNode.js'; -import { modelViewMatrix } from '../accessors/ModelNode.js'; -import { positionGeometry } from '../accessors/PositionNode.js'; -import { mix, smoothstep } from '../math/MathNode.js'; -import { tslFn, float, vec2, vec3, vec4, If } from '../shadernode/ShaderNode.js'; -import { uv } from '../accessors/UVNode.js'; -import { viewport } from '../display/ViewportNode.js'; -import { dashSize, gapSize } from '../core/PropertyNode.js'; +import { + temp, + varying, + property, varyingProperty, + attribute, + cameraProjectionMatrix, + materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth, + modelViewMatrix, + positionGeometry, + mix, smoothstep, + tslFn, float, vec2, vec3, vec4, If, + uv, + viewport, + dashSize, gapSize +} from '../nodes/Nodes.js'; import { LineDashedMaterial } from 'three'; diff --git a/examples/jsm/nodes/materials/LineBasicNodeMaterial.js b/examples/jsm/materials/nodes/LineBasicNodeMaterial.js similarity index 100% rename from examples/jsm/nodes/materials/LineBasicNodeMaterial.js rename to examples/jsm/materials/nodes/LineBasicNodeMaterial.js diff --git a/examples/jsm/nodes/materials/LineDashedNodeMaterial.js b/examples/jsm/materials/nodes/LineDashedNodeMaterial.js similarity index 80% rename from examples/jsm/nodes/materials/LineDashedNodeMaterial.js rename to examples/jsm/materials/nodes/LineDashedNodeMaterial.js index 12682b1c97151d..e6f8af0d8cc426 100644 --- a/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +++ b/examples/jsm/materials/nodes/LineDashedNodeMaterial.js @@ -1,9 +1,12 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { attribute } from '../core/AttributeNode.js'; -import { varying } from '../core/VaryingNode.js'; -import { materialLineDashSize, materialLineGapSize, materialLineScale } from '../accessors/MaterialNode.js'; -import { dashSize, gapSize } from '../core/PropertyNode.js'; -import { float } from '../shadernode/ShaderNode.js'; +import { + attribute, + varying, + materialLineDashSize, materialLineGapSize, materialLineScale, + dashSize, gapSize, + float +} from '../nodes/Nodes.js'; + import { LineDashedMaterial } from 'three'; const defaultValues = new LineDashedMaterial(); diff --git a/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js b/examples/jsm/materials/nodes/MeshBasicNodeMaterial.js similarity index 100% rename from examples/jsm/nodes/materials/MeshBasicNodeMaterial.js rename to examples/jsm/materials/nodes/MeshBasicNodeMaterial.js diff --git a/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js b/examples/jsm/materials/nodes/MeshLambertNodeMaterial.js similarity index 89% rename from examples/jsm/nodes/materials/MeshLambertNodeMaterial.js rename to examples/jsm/materials/nodes/MeshLambertNodeMaterial.js index 5587030422de39..8a7adfe1842a6e 100644 --- a/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshLambertNodeMaterial.js @@ -1,5 +1,5 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import PhongLightingModel from '../functions/PhongLightingModel.js'; +import PhongLightingModel from '../nodes/functions/PhongLightingModel.js'; import { MeshLambertMaterial } from 'three'; diff --git a/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js b/examples/jsm/materials/nodes/MeshMatcapNodeMaterial.js similarity index 100% rename from examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js rename to examples/jsm/materials/nodes/MeshMatcapNodeMaterial.js diff --git a/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js b/examples/jsm/materials/nodes/MeshNormalNodeMaterial.js similarity index 69% rename from examples/jsm/nodes/materials/MeshNormalNodeMaterial.js rename to examples/jsm/materials/nodes/MeshNormalNodeMaterial.js index 9baa5cca243b0d..195ce4115be632 100644 --- a/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshNormalNodeMaterial.js @@ -1,9 +1,11 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { diffuseColor } from '../core/PropertyNode.js'; -import { directionToColor } from '../utils/PackingNode.js'; -import { materialOpacity } from '../accessors/MaterialNode.js'; -import { transformedNormalView } from '../accessors/NormalNode.js'; -import { float, vec4 } from '../shadernode/ShaderNode.js'; +import { + diffuseColor, + directionToColor, + materialOpacity, + transformedNormalView, + float, vec4 +} from '../nodes/Nodes.js'; import { MeshNormalMaterial } from 'three'; diff --git a/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js b/examples/jsm/materials/nodes/MeshPhongNodeMaterial.js similarity index 56% rename from examples/jsm/nodes/materials/MeshPhongNodeMaterial.js rename to examples/jsm/materials/nodes/MeshPhongNodeMaterial.js index 54cdb470516486..bb87ad7487a7c0 100644 --- a/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshPhongNodeMaterial.js @@ -1,14 +1,14 @@ -import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { shininess, specularColor } from '../core/PropertyNode.js'; -import { materialShininess, materialSpecular } from '../accessors/MaterialNode.js'; -import { float } from '../shadernode/ShaderNode.js'; -import PhongLightingModel from '../functions/PhongLightingModel.js'; +import { + shininess, specularColor, + materialShininess, materialSpecular, + float +} from '../../nodes/Nodes.js'; -import { MeshPhongMaterial } from 'three'; +import PhongLightingModel from '../../nodes/functions/PhongLightingModel.js'; -const defaultValues = new MeshPhongMaterial(); +import MeshPhongMaterial from '../MeshPhongMaterial.js'; -class MeshPhongNodeMaterial extends NodeMaterial { +class MeshPhongNodeMaterial extends MeshPhongMaterial { constructor( parameters ) { @@ -16,13 +16,9 @@ class MeshPhongNodeMaterial extends NodeMaterial { this.isMeshPhongNodeMaterial = true; - this.lights = true; - this.shininessNode = null; this.specularNode = null; - this.setDefaultValues( defaultValues ); - this.setValues( parameters ); } @@ -61,5 +57,3 @@ class MeshPhongNodeMaterial extends NodeMaterial { } export default MeshPhongNodeMaterial; - -addNodeMaterial( 'MeshPhongNodeMaterial', MeshPhongNodeMaterial ); diff --git a/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js b/examples/jsm/materials/nodes/MeshPhysicalNodeMaterial.js similarity index 84% rename from examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js rename to examples/jsm/materials/nodes/MeshPhysicalNodeMaterial.js index ace2f9b620663e..9171629a91f7ff 100644 --- a/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshPhysicalNodeMaterial.js @@ -1,12 +1,15 @@ -import { addNodeMaterial } from './NodeMaterial.js'; -import { transformedClearcoatNormalView } from '../accessors/NormalNode.js'; -import { clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor } from '../core/PropertyNode.js'; -import { materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialSpecularIntensity, materialSpecularColor, materialAnisotropy, materialIOR, materialTransmission, materialThickness, materialAttenuationDistance, materialAttenuationColor } from '../accessors/MaterialNode.js'; -import { float, vec2, vec3, If } from '../shadernode/ShaderNode.js'; -import { TBNViewMatrix } from '../accessors/AccessorsUtils.js'; -import PhysicalLightingModel from '../functions/PhysicalLightingModel.js'; +import { addNodeMaterial } from '../NodeMaterial.js'; +import { + transformedClearcoatNormalView, + clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor, + materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialSpecularIntensity, materialSpecularColor, materialAnisotropy, materialIOR, materialTransmission, materialThickness, materialAttenuationDistance, materialAttenuationColor, + float, vec2, vec3, If, + TBNViewMatrix, + mix, pow2, min +} from '../../nodes/Nodes.js'; +import PhysicalLightingModel from '../../nodes/functions/PhysicalLightingModel.js'; import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js'; -import { mix, pow2, min } from '../math/MathNode.js'; + import { MeshPhysicalMaterial } from 'three'; const defaultValues = new MeshPhysicalMaterial(); diff --git a/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js b/examples/jsm/materials/nodes/MeshSSSNodeMaterial.js similarity index 89% rename from examples/jsm/nodes/materials/MeshSSSNodeMaterial.js rename to examples/jsm/materials/nodes/MeshSSSNodeMaterial.js index 03ac0174d0aeb8..64a93fc26e92cb 100644 --- a/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshSSSNodeMaterial.js @@ -1,9 +1,11 @@ import { addNodeMaterial } from './NodeMaterial.js'; -import { transformedNormalView } from '../accessors/NormalNode.js'; -import { positionViewDirection } from '../accessors/PositionNode.js'; -import PhysicalLightingModel from '../functions/PhysicalLightingModel.js'; +import { + transformedNormalView, + positionViewDirection, + float, vec3 +} from '../nodes/Nodes.js'; +import PhysicalLightingModel from '../nodes/functions/PhysicalLightingModel.js'; import MeshPhysicalNodeMaterial from './MeshPhysicalNodeMaterial.js'; -import { float, vec3 } from '../shadernode/ShaderNode.js'; class SSSLightingModel extends PhysicalLightingModel { diff --git a/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js b/examples/jsm/materials/nodes/MeshStandardNodeMaterial.js similarity index 61% rename from examples/jsm/nodes/materials/MeshStandardNodeMaterial.js rename to examples/jsm/materials/nodes/MeshStandardNodeMaterial.js index 7d1de73c94887f..d2df90095c2240 100644 --- a/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +++ b/examples/jsm/materials/nodes/MeshStandardNodeMaterial.js @@ -1,16 +1,15 @@ -import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { diffuseColor, metalness, roughness, specularColor, specularF90 } from '../core/PropertyNode.js'; -import { mix } from '../math/MathNode.js'; -import { materialRoughness, materialMetalness } from '../accessors/MaterialNode.js'; -import getRoughness from '../functions/material/getRoughness.js'; -import PhysicalLightingModel from '../functions/PhysicalLightingModel.js'; -import { float, vec3, vec4 } from '../shadernode/ShaderNode.js'; +import { + diffuseColor, metalness, roughness, specularColor, specularF90, + mix, + materialRoughness, materialMetalness, + getRoughness, + float, vec3, vec4 +} from '../../nodes/Nodes.js'; +import PhysicalLightingModel from '../../nodes/functions/PhysicalLightingModel.js'; -import { MeshStandardMaterial } from 'three'; +import MeshStandardMaterial from '../MeshStandardMaterial.js'; -const defaultValues = new MeshStandardMaterial(); - -class MeshStandardNodeMaterial extends NodeMaterial { +class MeshStandardNodeMaterial extends MeshStandardMaterial { constructor( parameters ) { @@ -23,8 +22,6 @@ class MeshStandardNodeMaterial extends NodeMaterial { this.metalnessNode = null; this.roughnessNode = null; - this.setDefaultValues( defaultValues ); - this.setValues( parameters ); } @@ -83,5 +80,3 @@ class MeshStandardNodeMaterial extends NodeMaterial { } export default MeshStandardNodeMaterial; - -addNodeMaterial( 'MeshStandardNodeMaterial', MeshStandardNodeMaterial ); diff --git a/examples/jsm/nodes/materials/MeshToonNodeMaterial.js b/examples/jsm/materials/nodes/MeshToonNodeMaterial.js similarity index 100% rename from examples/jsm/nodes/materials/MeshToonNodeMaterial.js rename to examples/jsm/materials/nodes/MeshToonNodeMaterial.js diff --git a/examples/jsm/nodes/materials/ShadowNodeMaterial.js b/examples/jsm/materials/nodes/ShadowNodeMaterial.js similarity index 89% rename from examples/jsm/nodes/materials/ShadowNodeMaterial.js rename to examples/jsm/materials/nodes/ShadowNodeMaterial.js index dce2875c2272c3..b754d9af70f665 100644 --- a/examples/jsm/nodes/materials/ShadowNodeMaterial.js +++ b/examples/jsm/materials/nodes/ShadowNodeMaterial.js @@ -1,5 +1,5 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import ShadowMaskModel from '../functions/ShadowMaskModel.js'; +import ShadowMaskModel from '../nodes/functions/ShadowMaskModel.js'; import { ShadowMaterial } from 'three'; diff --git a/examples/jsm/nodes/materials/SpriteNodeMaterial.js b/examples/jsm/materials/nodes/SpriteNodeMaterial.js similarity index 81% rename from examples/jsm/nodes/materials/SpriteNodeMaterial.js rename to examples/jsm/materials/nodes/SpriteNodeMaterial.js index e6b54b5613dbe5..44a7315e713737 100644 --- a/examples/jsm/nodes/materials/SpriteNodeMaterial.js +++ b/examples/jsm/materials/nodes/SpriteNodeMaterial.js @@ -1,10 +1,12 @@ import NodeMaterial, { addNodeMaterial } from './NodeMaterial.js'; -import { uniform } from '../core/UniformNode.js'; -import { cameraProjectionMatrix } from '../accessors/CameraNode.js'; -import { materialRotation } from '../accessors/MaterialNode.js'; -import { modelViewMatrix, modelWorldMatrix } from '../accessors/ModelNode.js'; -import { positionLocal } from '../accessors/PositionNode.js'; -import { float, vec2, vec3, vec4 } from '../shadernode/ShaderNode.js'; +import { + uniform, + cameraProjectionMatrix, + materialRotation, + modelViewMatrix, modelWorldMatrix, + positionLocal, + float, vec2, vec3, vec4 +} from '../nodes/Nodes.js'; import { SpriteMaterial } from 'three'; diff --git a/examples/jsm/nodes/Nodes.js b/examples/jsm/nodes/Nodes.js index 2d07b922cc4170..b848bf28c7795d 100644 --- a/examples/jsm/nodes/Nodes.js +++ b/examples/jsm/nodes/Nodes.js @@ -26,7 +26,7 @@ export { default as NodeUniform } from './core/NodeUniform.js'; export { default as NodeVar } from './core/NodeVar.js'; export { default as NodeVarying } from './core/NodeVarying.js'; export { default as ParameterNode, parameter } from './core/ParameterNode.js'; -export { default as PropertyNode, property, varyingProperty, output, diffuseColor, roughness, metalness, clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, shininess, dashSize, gapSize, pointWidth, alphaT, anisotropy, anisotropyB, anisotropyT } from './core/PropertyNode.js'; +export * from './core/PropertyNode.js'; export { default as StackNode, stack } from './core/StackNode.js'; export { default as TempNode } from './core/TempNode.js'; export { default as UniformGroupNode, uniformGroup, objectGroup, renderGroup, frameGroup } from './core/UniformGroupNode.js'; @@ -83,9 +83,10 @@ export { default as BufferNode, buffer } from './accessors/BufferNode.js'; export { default as CameraNode, cameraProjectionMatrix, cameraProjectionMatrixInverse, cameraViewMatrix, cameraNormalMatrix, cameraWorldMatrix, cameraPosition, cameraNear, cameraFar, cameraLogDepth } from './accessors/CameraNode.js'; export { default as VertexColorNode, vertexColor } from './accessors/VertexColorNode.js'; export { default as CubeTextureNode, cubeTexture } from './accessors/CubeTextureNode.js'; +export { default as ClippingNode, clipping, clippingAlpha } from './accessors/ClippingNode.js'; export { default as InstanceNode, instance } from './accessors/InstanceNode.js'; export { default as BatchNode, batch } from './accessors/BatchNode.js'; -export { default as MaterialNode, materialAlphaTest, materialColor, materialShininess, materialEmissive, materialOpacity, materialSpecular, materialSpecularStrength, materialReflectivity, materialRoughness, materialMetalness, materialNormal, materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialRotation, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineWidth, materialLineDashOffset, materialPointWidth, materialAnisotropy, materialAnisotropyVector } from './accessors/MaterialNode.js'; +export * from './accessors/MaterialNode.js'; export { default as MaterialReferenceNode, materialReference } from './accessors/MaterialReferenceNode.js'; export { default as RendererReferenceNode, rendererReference } from './accessors/RendererReferenceNode.js'; export { default as MorphNode, morphReference } from './accessors/MorphNode.js'; @@ -98,7 +99,7 @@ export { default as PointUVNode, pointUV } from './accessors/PointUVNode.js'; export { default as PositionNode, positionGeometry, positionLocal, positionWorld, positionWorldDirection, positionView, positionViewDirection } from './accessors/PositionNode.js'; export { default as ReferenceNode, reference, referenceBuffer } from './accessors/ReferenceNode.js'; export { default as ReflectVectorNode, reflectVector } from './accessors/ReflectVectorNode.js'; -export { default as SkinningNode, skinning } from './accessors/SkinningNode.js'; +export { default as SkinningNode, skinning, skinningReference } from './accessors/SkinningNode.js'; export { default as SceneNode, backgroundBlurriness, backgroundIntensity } from './accessors/SceneNode.js'; export { default as StorageBufferNode, storage, storageObject } from './accessors/StorageBufferNode.js'; export { default as TangentNode, tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView, transformedTangentWorld } from './accessors/TangentNode.js'; @@ -169,17 +170,9 @@ export * as PMREMUtils from './pmrem/PMREMUtils.js'; // procedural export { default as CheckerNode, checker } from './procedural/CheckerNode.js'; -// loaders -export { default as NodeLoader } from './loaders/NodeLoader.js'; -export { default as NodeObjectLoader } from './loaders/NodeObjectLoader.js'; -export { default as NodeMaterialLoader } from './loaders/NodeMaterialLoader.js'; - // parsers export { default as GLSLNodeParser } from './parsers/GLSLNodeParser.js'; // @TODO: Move to jsm/renderers/webgl. -// materials -export * from './materials/Materials.js'; - // materialX export * from './materialx/MaterialXNodes.js'; diff --git a/examples/jsm/nodes/core/NodeBuilder.js b/examples/jsm/nodes/core/NodeBuilder.js index 4ca4f02c0ee817..28c73d0aa9fc98 100644 --- a/examples/jsm/nodes/core/NodeBuilder.js +++ b/examples/jsm/nodes/core/NodeBuilder.js @@ -7,7 +7,7 @@ import NodeKeywords from './NodeKeywords.js'; import NodeCache from './NodeCache.js'; import ParameterNode from './ParameterNode.js'; import FunctionNode from '../code/FunctionNode.js'; -import { createNodeMaterialFromType, default as NodeMaterial } from '../materials/NodeMaterial.js'; +import { createNodeMaterialFromType } from '../../materials/NodeMaterial.js'; import { NodeUpdateType, defaultBuildStages, shaderStages } from './constants.js'; import { @@ -1090,10 +1090,9 @@ class NodeBuilder { const { object, material } = this; - if ( material !== null ) { - NodeMaterial.fromMaterial( material ).build( this ); + material.build( this ); } else { diff --git a/examples/jsm/renderers/common/Background.js b/examples/jsm/renderers/common/Background.js index 46d41faf7fc0be..2db0a3cda61986 100644 --- a/examples/jsm/renderers/common/Background.js +++ b/examples/jsm/renderers/common/Background.js @@ -1,7 +1,8 @@ import DataMap from './DataMap.js'; import Color4 from './Color4.js'; import { Mesh, SphereGeometry, BackSide, LinearSRGBColorSpace } from 'three'; -import { vec4, context, normalWorld, backgroundBlurriness, backgroundIntensity, NodeMaterial, modelViewProjection } from '../../nodes/Nodes.js'; +import { vec4, context, normalWorld, backgroundBlurriness, backgroundIntensity, modelViewProjection } from '../../nodes/Nodes.js'; +import NodeMaterial from '../../materials/NodeMaterial.js'; const _clearColor = new Color4(); diff --git a/examples/jsm/renderers/common/CubeRenderTarget.js b/examples/jsm/renderers/common/CubeRenderTarget.js index ce3d14ac171ad5..e727e3a7a8bce3 100644 --- a/examples/jsm/renderers/common/CubeRenderTarget.js +++ b/examples/jsm/renderers/common/CubeRenderTarget.js @@ -2,7 +2,7 @@ import { WebGLCubeRenderTarget, Scene, CubeCamera, BoxGeometry, Mesh, BackSide, import { equirectUV } from '../../nodes/utils/EquirectUVNode.js'; import { texture as TSL_Texture } from '../../nodes/accessors/TextureNode.js'; import { positionWorldDirection } from '../../nodes/accessors/PositionNode.js'; -import { createNodeMaterialFromType } from '../../nodes/materials/NodeMaterial.js'; +import { createNodeMaterialFromType } from '../../materials/NodeMaterial.js'; // @TODO: Consider rename WebGLCubeRenderTarget to just CubeRenderTarget diff --git a/examples/jsm/renderers/common/PostProcessing.js b/examples/jsm/renderers/common/PostProcessing.js index 99554edb807a48..e1a40145e22e2f 100644 --- a/examples/jsm/renderers/common/PostProcessing.js +++ b/examples/jsm/renderers/common/PostProcessing.js @@ -1,5 +1,6 @@ -import { vec4, NodeMaterial } from '../../nodes/Nodes.js'; +import NodeMaterial from '../../materials/NodeMaterial.js'; import QuadMesh from '../../objects/QuadMesh.js'; +import { vec4 } from '../../nodes/Nodes.js'; const quadMesh = new QuadMesh( new NodeMaterial() ); diff --git a/examples/jsm/renderers/common/Renderer.js b/examples/jsm/renderers/common/Renderer.js index 1dec53e008a386..f778c6513ca60c 100644 --- a/examples/jsm/renderers/common/Renderer.js +++ b/examples/jsm/renderers/common/Renderer.js @@ -13,7 +13,7 @@ import Nodes from './nodes/Nodes.js'; import Color4 from './Color4.js'; import ClippingContext from './ClippingContext.js'; import { Scene, Frustum, Matrix4, Vector2, Vector3, Vector4, DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoColorSpace, NoToneMapping, LinearFilter, LinearSRGBColorSpace, RenderTarget, HalfFloatType, RGBAFormat } from 'three'; -import { NodeMaterial } from '../../nodes/Nodes.js'; +import NodeMaterial from '../../materials/NodeMaterial.js'; import QuadMesh from '../../objects/QuadMesh.js'; const _scene = new Scene(); diff --git a/examples/jsm/renderers/common/extras/PMREMGenerator.js b/examples/jsm/renderers/common/extras/PMREMGenerator.js index 38fecad21d1c40..e63acced05b585 100644 --- a/examples/jsm/renderers/common/extras/PMREMGenerator.js +++ b/examples/jsm/renderers/common/extras/PMREMGenerator.js @@ -1,4 +1,4 @@ -import NodeMaterial from '../../../nodes/materials/NodeMaterial.js'; +import NodeMaterial from '../../../materials/NodeMaterial.js'; import { getDirection, blur } from '../../../nodes/pmrem/PMREMUtils.js'; import { equirectUV } from '../../../nodes/utils/EquirectUVNode.js'; import { uniform } from '../../../nodes/core/UniformNode.js'; diff --git a/examples/jsm/renderers/webgpu/Three.js b/examples/jsm/renderers/webgpu/Three.js new file mode 100644 index 00000000000000..1f1a68c14eb9cb --- /dev/null +++ b/examples/jsm/renderers/webgpu/Three.js @@ -0,0 +1,192 @@ +import { REVISION } from '../../../../src/constants.js'; + +export { WebGLArrayRenderTarget } from '../../../../src/renderers/WebGLArrayRenderTarget.js'; +export { WebGL3DRenderTarget } from '../../../../src/renderers/WebGL3DRenderTarget.js'; +export { WebGLCubeRenderTarget } from '../../../../src/renderers/WebGLCubeRenderTarget.js'; +export { WebGLRenderTarget } from '../../../../src/renderers/WebGLRenderTarget.js'; +//export { WebGLRenderer } from './renderers/WebGLRenderer.js'; +//export { ShaderLib } from './renderers/shaders/ShaderLib.js'; +//export { UniformsLib } from './renderers/shaders/UniformsLib.js'; +//export { UniformsUtils } from './renderers/shaders/UniformsUtils.js'; +//export { ShaderChunk } from './renderers/shaders/ShaderChunk.js'; +export { FogExp2 } from '../../../../src/scenes/FogExp2.js'; +export { Fog } from '../../../../src/scenes/Fog.js'; +export { Scene } from '../../../../src/scenes/Scene.js'; +export { Sprite } from '../../../../src/objects/Sprite.js'; +export { LOD } from '../../../../src/objects/LOD.js'; +export { SkinnedMesh } from '../../../../src/objects/SkinnedMesh.js'; +export { Skeleton } from '../../../../src/objects/Skeleton.js'; +export { Bone } from '../../../../src/objects/Bone.js'; +export { Mesh } from '../../../../src/objects/Mesh.js'; +export { InstancedMesh } from '../../../../src/objects/InstancedMesh.js'; +export { BatchedMesh } from '../../../../src/objects/BatchedMesh.js'; +export { LineSegments } from '../../../../src/objects/LineSegments.js'; +export { LineLoop } from '../../../../src/objects/LineLoop.js'; +export { Line } from '../../../../src/objects/Line.js'; +export { Points } from '../../../../src/objects/Points.js'; +export { Group } from '../../../../src/objects/Group.js'; +export { VideoTexture } from '../../../../src/textures/VideoTexture.js'; +export { FramebufferTexture } from '../../../../src/textures/FramebufferTexture.js'; +export { Source } from '../../../../src/textures/Source.js'; +export { DataTexture } from '../../../../src/textures/DataTexture.js'; +export { DataArrayTexture } from '../../../../src/textures/DataArrayTexture.js'; +export { Data3DTexture } from '../../../../src/textures/Data3DTexture.js'; +export { CompressedTexture } from '../../../../src/textures/CompressedTexture.js'; +export { CompressedArrayTexture } from '../../../../src/textures/CompressedArrayTexture.js'; +export { CompressedCubeTexture } from '../../../../src/textures/CompressedCubeTexture.js'; +export { CubeTexture } from '../../../../src/textures/CubeTexture.js'; +export { CanvasTexture } from '../../../../src/textures/CanvasTexture.js'; +export { DepthTexture } from '../../../../src/textures/DepthTexture.js'; +export { Texture } from '../../../../src/textures/Texture.js'; +export * from '../../../../src/geometries/Geometries.js'; +//export * from './materials/Materials.js'; +export { Material } from '../../../../src/materials/Material.js'; +export { AnimationLoader } from '../../../../src/loaders/AnimationLoader.js'; +export { CompressedTextureLoader } from '../../../../src/loaders/CompressedTextureLoader.js'; +export { CubeTextureLoader } from '../../../../src/loaders/CubeTextureLoader.js'; +export { DataTextureLoader } from '../../../../src/loaders/DataTextureLoader.js'; +export { TextureLoader } from '../../../../src/loaders/TextureLoader.js'; +export { ObjectLoader } from '../../../../src/loaders/ObjectLoader.js'; +export { MaterialLoader } from '../../../../src/loaders/MaterialLoader.js'; +export { BufferGeometryLoader } from '../../../../src/loaders/BufferGeometryLoader.js'; +export { DefaultLoadingManager, LoadingManager } from '../../../../src/loaders/LoadingManager.js'; +export { ImageLoader } from '../../../../src/loaders/ImageLoader.js'; +export { ImageBitmapLoader } from '../../../../src/loaders/ImageBitmapLoader.js'; +export { FileLoader } from '../../../../src/loaders/FileLoader.js'; +export { Loader } from '../../../../src/loaders/Loader.js'; +export { LoaderUtils } from '../../../../src/loaders/LoaderUtils.js'; +export { Cache } from '../../../../src/loaders/Cache.js'; +export { AudioLoader } from '../../../../src/loaders/AudioLoader.js'; +export { SpotLight } from '../../../../src/lights/SpotLight.js'; +export { PointLight } from '../../../../src/lights/PointLight.js'; +export { RectAreaLight } from '../../../../src/lights/RectAreaLight.js'; +export { HemisphereLight } from '../../../../src/lights/HemisphereLight.js'; +export { DirectionalLight } from '../../../../src/lights/DirectionalLight.js'; +export { AmbientLight } from '../../../../src/lights/AmbientLight.js'; +export { Light } from '../../../../src/lights/Light.js'; +export { LightProbe } from '../../../../src/lights/LightProbe.js'; +export { StereoCamera } from '../../../../src/cameras/StereoCamera.js'; +export { PerspectiveCamera } from '../../../../src/cameras/PerspectiveCamera.js'; +export { OrthographicCamera } from '../../../../src/cameras/OrthographicCamera.js'; +export { CubeCamera } from '../../../../src/cameras/CubeCamera.js'; +export { ArrayCamera } from '../../../../src/cameras/ArrayCamera.js'; +export { Camera } from '../../../../src/cameras/Camera.js'; +export { AudioListener } from '../../../../src/audio/AudioListener.js'; +export { PositionalAudio } from '../../../../src/audio/PositionalAudio.js'; +export { AudioContext } from '../../../../src/audio/AudioContext.js'; +export { AudioAnalyser } from '../../../../src/audio/AudioAnalyser.js'; +export { Audio } from '../../../../src/audio/Audio.js'; +export { VectorKeyframeTrack } from '../../../../src/animation/tracks/VectorKeyframeTrack.js'; +export { StringKeyframeTrack } from '../../../../src/animation/tracks/StringKeyframeTrack.js'; +export { QuaternionKeyframeTrack } from '../../../../src/animation/tracks/QuaternionKeyframeTrack.js'; +export { NumberKeyframeTrack } from '../../../../src/animation/tracks/NumberKeyframeTrack.js'; +export { ColorKeyframeTrack } from '../../../../src/animation/tracks/ColorKeyframeTrack.js'; +export { BooleanKeyframeTrack } from '../../../../src/animation/tracks/BooleanKeyframeTrack.js'; +export { PropertyMixer } from '../../../../src/animation/PropertyMixer.js'; +export { PropertyBinding } from '../../../../src/animation/PropertyBinding.js'; +export { KeyframeTrack } from '../../../../src/animation/KeyframeTrack.js'; +export { AnimationUtils } from '../../../../src/animation/AnimationUtils.js'; +export { AnimationObjectGroup } from '../../../../src/animation/AnimationObjectGroup.js'; +export { AnimationMixer } from '../../../../src/animation/AnimationMixer.js'; +export { AnimationClip } from '../../../../src/animation/AnimationClip.js'; +export { AnimationAction } from '../../../../src/animation/AnimationAction.js'; +export { RenderTarget } from '../../../../src/core/RenderTarget.js'; +export { Uniform } from '../../../../src/core/Uniform.js'; +export { UniformsGroup } from '../../../../src/core/UniformsGroup.js'; +export { InstancedBufferGeometry } from '../../../../src/core/InstancedBufferGeometry.js'; +export { BufferGeometry } from '../../../../src/core/BufferGeometry.js'; +export { InterleavedBufferAttribute } from '../../../../src/core/InterleavedBufferAttribute.js'; +export { InstancedInterleavedBuffer } from '../../../../src/core/InstancedInterleavedBuffer.js'; +export { InterleavedBuffer } from '../../../../src/core/InterleavedBuffer.js'; +export { InstancedBufferAttribute } from '../../../../src/core/InstancedBufferAttribute.js'; +export { GLBufferAttribute } from '../../../../src/core/GLBufferAttribute.js'; +export * from '../../../../src/core/BufferAttribute.js'; +export { Object3D } from '../../../../src/core/Object3D.js'; +export { Raycaster } from '../../../../src/core/Raycaster.js'; +export { Layers } from '../../../../src/core/Layers.js'; +export { EventDispatcher } from '../../../../src/core/EventDispatcher.js'; +export { Clock } from '../../../../src/core/Clock.js'; +export { QuaternionLinearInterpolant } from '../../../../src/math/interpolants/QuaternionLinearInterpolant.js'; +export { LinearInterpolant } from '../../../../src/math/interpolants/LinearInterpolant.js'; +export { DiscreteInterpolant } from '../../../../src/math/interpolants/DiscreteInterpolant.js'; +export { CubicInterpolant } from '../../../../src/math/interpolants/CubicInterpolant.js'; +export { Interpolant } from '../../../../src/math/Interpolant.js'; +export { Triangle } from '../../../../src/math/Triangle.js'; +export { MathUtils } from '../../../../src/math/MathUtils.js'; +export { Spherical } from '../../../../src/math/Spherical.js'; +export { Cylindrical } from '../../../../src/math/Cylindrical.js'; +export { Plane } from '../../../../src/math/Plane.js'; +export { Frustum } from '../../../../src/math/Frustum.js'; +export { Sphere } from '../../../../src/math/Sphere.js'; +export { Ray } from '../../../../src/math/Ray.js'; +export { Matrix4 } from '../../../../src/math/Matrix4.js'; +export { Matrix3 } from '../../../../src/math/Matrix3.js'; +export { Box3 } from '../../../../src/math/Box3.js'; +export { Box2 } from '../../../../src/math/Box2.js'; +export { Line3 } from '../../../../src/math/Line3.js'; +export { Euler } from '../../../../src/math/Euler.js'; +export { Vector4 } from '../../../../src/math/Vector4.js'; +export { Vector3 } from '../../../../src/math/Vector3.js'; +export { Vector2 } from '../../../../src/math/Vector2.js'; +export { Quaternion } from '../../../../src/math/Quaternion.js'; +export { Color } from '../../../../src/math/Color.js'; +export { ColorManagement } from '../../../../src/math/ColorManagement.js'; +export { SphericalHarmonics3 } from '../../../../src/math/SphericalHarmonics3.js'; +export { SpotLightHelper } from '../../../../src/helpers/SpotLightHelper.js'; +export { SkeletonHelper } from '../../../../src/helpers/SkeletonHelper.js'; +export { PointLightHelper } from '../../../../src/helpers/PointLightHelper.js'; +export { HemisphereLightHelper } from '../../../../src/helpers/HemisphereLightHelper.js'; +export { GridHelper } from '../../../../src/helpers/GridHelper.js'; +export { PolarGridHelper } from '../../../../src/helpers/PolarGridHelper.js'; +export { DirectionalLightHelper } from '../../../../src/helpers/DirectionalLightHelper.js'; +export { CameraHelper } from '../../../../src/helpers/CameraHelper.js'; +export { BoxHelper } from '../../../../src/helpers/BoxHelper.js'; +export { Box3Helper } from '../../../../src/helpers/Box3Helper.js'; +export { PlaneHelper } from '../../../../src/helpers/PlaneHelper.js'; +export { ArrowHelper } from '../../../../src/helpers/ArrowHelper.js'; +export { AxesHelper } from '../../../../src/helpers/AxesHelper.js'; +export * from '../../../../src/extras/curves/Curves.js'; +export { Shape } from '../../../../src/extras/core/Shape.js'; +export { Path } from '../../../../src/extras/core/Path.js'; +export { ShapePath } from '../../../../src/extras/core/ShapePath.js'; +export { CurvePath } from '../../../../src/extras/core/CurvePath.js'; +export { Curve } from '../../../../src/extras/core/Curve.js'; +export { DataUtils } from '../../../../src/extras/DataUtils.js'; +export { ImageUtils } from '../../../../src/extras/ImageUtils.js'; +export { ShapeUtils } from '../../../../src/extras/ShapeUtils.js'; +export { PMREMGenerator } from '../../../../src/extras/PMREMGenerator.js'; +//export { WebGLUtils } from './renderers/webgl/WebGLUtils.js'; +export { createCanvasElement } from '../../../../src/utils.js'; +export * from '../../../../src/constants.js'; +export * from '../../../../src/Three.Legacy.js'; + +export { default as WebGPURenderer } from './WebGPURenderer.js'; + +export { default as NodeMaterial } from '../../materials/NodeMaterial.js'; +export { default as MeshBasicMaterial } from '../../materials/MeshBasicMaterial.js'; +export { default as MeshPhongMaterial } from '../../materials/MeshPhongMaterial.js'; +export { default as MeshPhongNodeMaterial } from '../../materials/nodes/MeshPhongNodeMaterial.js'; +export { default as MeshStandardMaterial } from '../../materials/MeshStandardMaterial.js'; +export { default as MeshStandardNodeMaterial } from '../../materials/nodes/MeshStandardNodeMaterial.js'; + +if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) { + + __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: { + revision: REVISION, + } } ) ); + +} + +if ( typeof window !== 'undefined' ) { + + if ( window.__THREE__ ) { + + console.warn( 'WARNING: Multiple instances of Three.js being imported.' ); + + } else { + + window.__THREE__ = REVISION; + + } + +} diff --git a/examples/webgpu_lights_phong.html b/examples/webgpu_lights_phong.html index 8aec628cd462d5..f0bc49f73ec4a6 100644 --- a/examples/webgpu_lights_phong.html +++ b/examples/webgpu_lights_phong.html @@ -16,7 +16,7 @@