super-three 0.165.0 → 0.168.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +854 -410
- package/build/three.module.js +849 -411
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +77755 -0
- package/build/three.webgpu.min.js +6 -0
- package/examples/jsm/Addons.js +5 -2
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/controls/ArcballControls.js +174 -158
- package/examples/jsm/controls/DragControls.js +260 -132
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +777 -786
- package/examples/jsm/controls/PointerLockControls.js +24 -15
- package/examples/jsm/controls/TrackballControls.js +453 -452
- package/examples/jsm/csm/CSMShader.js +4 -4
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +13 -4
- package/examples/jsm/exporters/USDZExporter.js +29 -8
- package/examples/jsm/geometries/TeapotGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +42 -43
- package/examples/jsm/helpers/ViewHelper.js +51 -2
- package/examples/jsm/libs/tween.module.js +64 -75
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
- package/examples/jsm/lines/webgpu/Line2.js +20 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
- package/examples/jsm/loaders/FBXLoader.js +23 -45
- package/examples/jsm/loaders/GLTFLoader.js +10 -4
- package/examples/jsm/loaders/KTX2Loader.js +19 -7
- package/examples/jsm/loaders/MaterialXLoader.js +10 -10
- package/examples/jsm/loaders/PCDLoader.js +9 -9
- package/examples/jsm/loaders/USDZLoader.js +124 -76
- package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
- package/examples/jsm/loaders/VTKLoader.js +76 -3
- package/examples/jsm/misc/GPUComputationRenderer.js +9 -19
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
- package/examples/jsm/objects/InstancedPoints.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +188 -0
- package/examples/jsm/objects/Water2Mesh.js +159 -0
- package/examples/jsm/objects/WaterMesh.js +102 -0
- package/examples/jsm/physics/RapierPhysics.js +20 -0
- package/examples/jsm/postprocessing/OutlinePass.js +31 -46
- package/examples/jsm/postprocessing/RenderTransitionPass.js +13 -38
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +6 -9
- package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
- package/examples/jsm/shaders/BleachBypassShader.js +1 -2
- package/examples/jsm/shaders/ColorifyShader.js +1 -2
- package/examples/jsm/shaders/FXAAShader.js +0 -2
- package/examples/jsm/shaders/GTAOShader.js +1 -1
- package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
- package/examples/jsm/shaders/OutputShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +46 -4
- package/examples/jsm/transpiler/TSLEncoder.js +24 -22
- package/examples/jsm/utils/TextureUtils.js +1 -1
- package/package.json +8 -6
- package/src/Three.WebGPU.js +200 -0
- package/src/Three.js +3 -0
- package/src/constants.js +4 -1
- package/src/core/Object3D.js +22 -22
- package/src/extras/Controls.js +32 -0
- package/src/extras/TextureUtils.js +210 -0
- package/src/lights/Light.js +1 -0
- package/src/lights/LightShadow.js +5 -0
- package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
- package/src/loaders/ObjectLoader.js +33 -2
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +6 -4
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +2 -2
- package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +2 -1
- package/src/materials/Material.js +7 -1
- package/{examples/jsm/nodes/materials → src/materials/nodes}/InstancedPointsNodeMaterial.js +36 -27
- package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +37 -40
- package/src/materials/nodes/LineBasicNodeMaterial.js +27 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +10 -11
- package/src/materials/nodes/MeshBasicNodeMaterial.js +73 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +43 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +53 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +40 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +74 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshPhysicalNodeMaterial.js +22 -20
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +6 -6
- package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshStandardNodeMaterial.js +28 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +34 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +142 -96
- package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +1 -1
- package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +5 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +34 -0
- package/{examples/jsm/nodes/materials → src/materials/nodes}/SpriteNodeMaterial.js +13 -13
- package/{examples/jsm/nodes/materials → src/materials/nodes}/VolumeNodeMaterial.js +14 -16
- package/src/math/Box2.js +4 -4
- package/src/math/Box3.js +6 -6
- package/src/math/ColorManagement.js +10 -0
- package/src/math/Matrix2.js +54 -0
- package/src/math/Vector4.js +13 -0
- package/src/nodes/Nodes.js +164 -0
- package/src/nodes/TSL.js +176 -0
- package/{examples/jsm → src}/nodes/accessors/AccessorsUtils.js +8 -8
- package/src/nodes/accessors/BatchNode.js +124 -0
- package/{examples/jsm/nodes/accessors/BitangentNode.js → src/nodes/accessors/Bitangent.js} +9 -9
- package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +41 -6
- package/{examples/jsm → src}/nodes/accessors/BufferNode.js +4 -4
- package/src/nodes/accessors/Camera.js +19 -0
- package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +16 -14
- package/src/nodes/accessors/CubeTextureNode.js +76 -0
- package/src/nodes/accessors/InstanceNode.js +144 -0
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
- package/{examples/jsm → src}/nodes/accessors/MaterialNode.js +66 -49
- package/src/nodes/accessors/MaterialProperties.js +3 -0
- package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +6 -4
- package/src/nodes/accessors/ModelNode.js +37 -0
- package/{examples/jsm → src}/nodes/accessors/ModelViewProjectionNode.js +6 -7
- package/{examples/jsm → src}/nodes/accessors/MorphNode.js +35 -31
- package/src/nodes/accessors/Normal.js +62 -0
- package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +11 -11
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +10 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +143 -0
- package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +14 -8
- package/src/nodes/accessors/ReflectVector.js +10 -0
- package/{examples/jsm → src}/nodes/accessors/RendererReferenceNode.js +6 -6
- package/{examples/jsm → src}/nodes/accessors/SceneNode.js +5 -6
- package/src/nodes/accessors/SkinningNode.js +187 -0
- package/{examples/jsm → src}/nodes/accessors/StorageBufferNode.js +54 -6
- package/{examples/jsm → src}/nodes/accessors/StorageTextureNode.js +16 -7
- package/src/nodes/accessors/Tangent.js +22 -0
- package/{examples/jsm → src}/nodes/accessors/Texture3DNode.js +11 -11
- package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
- package/{examples/jsm → src}/nodes/accessors/TextureNode.js +69 -37
- package/{examples/jsm → src}/nodes/accessors/TextureSizeNode.js +4 -6
- package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +24 -9
- package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +4 -4
- package/src/nodes/accessors/VelocityNode.js +83 -0
- package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +6 -5
- package/{examples/jsm → src}/nodes/code/CodeNode.js +5 -5
- package/{examples/jsm → src}/nodes/code/ExpressionNode.js +4 -4
- package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +5 -5
- package/{examples/jsm → src}/nodes/code/FunctionNode.js +5 -23
- package/{examples/jsm → src}/nodes/code/ScriptableNode.js +18 -6
- package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +6 -7
- package/{examples/jsm → src}/nodes/core/AssignNode.js +5 -5
- package/{examples/jsm → src}/nodes/core/AttributeNode.js +22 -21
- package/{examples/jsm → src}/nodes/core/BypassNode.js +5 -5
- package/src/nodes/core/CacheNode.js +46 -0
- package/{examples/jsm → src}/nodes/core/ConstNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/ContextNode.js +17 -11
- package/{examples/jsm → src}/nodes/core/IndexNode.js +17 -6
- package/{examples/jsm → src}/nodes/core/InputNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
- package/src/nodes/core/MRTNode.js +82 -0
- package/{examples/jsm → src}/nodes/core/Node.js +57 -31
- package/{examples/jsm → src}/nodes/core/NodeBuilder.js +216 -65
- package/src/nodes/core/NodeCache.js +36 -0
- package/{examples/jsm → src}/nodes/core/NodeFrame.js +42 -0
- package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
- package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
- package/{examples/jsm → src}/nodes/core/NodeUtils.js +7 -1
- package/{examples/jsm → src}/nodes/core/OutputStructNode.js +4 -4
- package/{examples/jsm → src}/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +84 -0
- package/{examples/jsm → src}/nodes/core/StackNode.js +26 -10
- package/{examples/jsm → src}/nodes/core/StructTypeNode.js +2 -2
- package/{examples/jsm → src}/nodes/core/TempNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +55 -0
- package/{examples/jsm → src}/nodes/core/UniformNode.js +14 -5
- package/{examples/jsm → src}/nodes/core/VarNode.js +8 -12
- package/{examples/jsm → src}/nodes/core/VaryingNode.js +13 -5
- package/{examples/jsm → src}/nodes/display/AfterImageNode.js +27 -35
- package/src/nodes/display/AnaglyphPassNode.js +61 -0
- package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +27 -30
- package/src/nodes/display/BleachBypass.js +26 -0
- package/src/nodes/display/BlendMode.js +54 -0
- package/src/nodes/display/BloomNode.js +335 -0
- package/{examples/jsm → src}/nodes/display/BumpMapNode.js +7 -12
- package/src/nodes/display/ColorAdjustment.js +46 -0
- package/src/nodes/display/ColorSpaceFunctions.js +38 -0
- package/src/nodes/display/ColorSpaceNode.js +85 -0
- package/src/nodes/display/DenoiseNode.js +201 -0
- package/src/nodes/display/DepthOfFieldNode.js +121 -0
- package/src/nodes/display/DotScreenNode.js +63 -0
- package/src/nodes/display/FXAANode.js +329 -0
- package/src/nodes/display/FilmNode.js +53 -0
- package/src/nodes/display/FrontFacingNode.js +41 -0
- package/src/nodes/display/GTAONode.js +328 -0
- package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +44 -24
- package/src/nodes/display/Lut3DNode.js +54 -0
- package/src/nodes/display/MotionBlur.js +25 -0
- package/{examples/jsm → src}/nodes/display/NormalMapNode.js +9 -11
- package/src/nodes/display/ParallaxBarrierPassNode.js +55 -0
- package/src/nodes/display/PassNode.js +367 -0
- package/src/nodes/display/PixelationPassNode.js +206 -0
- package/{examples/jsm → src}/nodes/display/PosterizeNode.js +4 -6
- package/src/nodes/display/RGBShiftNode.js +50 -0
- package/src/nodes/display/RenderOutputNode.js +56 -0
- package/src/nodes/display/SSAAPassNode.js +284 -0
- package/src/nodes/display/Sepia.js +17 -0
- package/src/nodes/display/SobelOperatorNode.js +123 -0
- package/src/nodes/display/StereoCompositePassNode.js +107 -0
- package/src/nodes/display/StereoPassNode.js +80 -0
- package/src/nodes/display/ToneMappingFunctions.js +190 -0
- package/src/nodes/display/ToneMappingNode.js +66 -0
- package/src/nodes/display/TransitionNode.js +77 -0
- package/src/nodes/display/ViewportDepthNode.js +121 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +30 -0
- package/{examples/jsm → src}/nodes/display/ViewportNode.js +28 -26
- package/src/nodes/display/ViewportSharedTextureNode.js +36 -0
- package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +12 -12
- package/{examples/jsm → src}/nodes/fog/FogExp2Node.js +4 -6
- package/{examples/jsm → src}/nodes/fog/FogNode.js +5 -7
- package/{examples/jsm → src}/nodes/fog/FogRangeNode.js +4 -6
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +131 -0
- package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +78 -0
- package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +10 -8
- package/{examples/jsm → src}/nodes/functions/PhysicalLightingModel.js +73 -31
- package/{examples/jsm → src}/nodes/functions/ShadowMaskModel.js +1 -1
- package/{examples/jsm → src}/nodes/functions/ToonLightingModel.js +6 -4
- package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
- package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
- package/{examples/jsm → src}/nodes/geometry/RangeNode.js +23 -10
- package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +5 -5
- package/src/nodes/lighting/AONode.js +24 -0
- package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +2 -7
- package/src/nodes/lighting/AnalyticLightNode.js +354 -0
- package/src/nodes/lighting/BasicEnvironmentNode.js +27 -0
- package/src/nodes/lighting/BasicLightMapNode.js +29 -0
- package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +3 -9
- package/{examples/jsm → src}/nodes/lighting/EnvironmentNode.js +23 -21
- package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +4 -7
- package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +3 -8
- package/{examples/jsm → src}/nodes/lighting/IrradianceNode.js +2 -2
- package/{examples/jsm → src}/nodes/lighting/LightNode.js +5 -5
- package/src/nodes/lighting/LightProbeNode.js +76 -0
- package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
- package/src/nodes/lighting/LightingContextNode.js +64 -0
- package/{examples/jsm → src}/nodes/lighting/LightingNode.js +4 -2
- package/src/nodes/lighting/LightsNode.js +231 -0
- package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +4 -10
- package/src/nodes/lighting/RectAreaLightNode.js +93 -0
- package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +4 -10
- package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
- package/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
- package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
- package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
- package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +31 -13
- package/src/nodes/math/Hash.js +13 -0
- package/src/nodes/math/MathNode.js +404 -0
- package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
- package/{examples/jsm → src}/nodes/math/OperatorNode.js +100 -58
- package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
- package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
- package/{examples/jsm → src}/nodes/pmrem/PMREMNode.js +60 -16
- package/{examples/jsm → src}/nodes/pmrem/PMREMUtils.js +46 -46
- package/src/nodes/procedural/Checker.js +14 -0
- package/src/nodes/tsl/TSLBase.js +30 -0
- package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +106 -96
- package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/ConvertNode.js +2 -2
- package/src/nodes/utils/CubeMapNode.js +157 -0
- package/src/nodes/utils/Discard.js +8 -0
- package/{examples/jsm → src}/nodes/utils/EquirectUVNode.js +5 -5
- package/src/nodes/utils/FlipNode.js +65 -0
- package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +7 -5
- package/{examples/jsm → src}/nodes/utils/JoinNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/LoopNode.js +19 -12
- package/{examples/jsm → src}/nodes/utils/MatcapUVNode.js +6 -6
- package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +12 -6
- package/{examples/jsm → src}/nodes/utils/OscNode.js +7 -7
- package/src/nodes/utils/Packing.js +4 -0
- package/src/nodes/utils/RTTNode.js +130 -0
- package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +17 -4
- package/{examples/jsm → src}/nodes/utils/RemapNode.js +7 -7
- package/{examples/jsm → src}/nodes/utils/RotateNode.js +4 -12
- package/{examples/jsm → src}/nodes/utils/SetNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/SplitNode.js +2 -2
- package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +5 -5
- package/src/nodes/utils/SpriteUtils.js +47 -0
- package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +4 -6
- package/{examples/jsm → src}/nodes/utils/TimerNode.js +5 -5
- package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +7 -9
- package/src/nodes/utils/UVUtils.js +19 -0
- package/src/nodes/utils/ViewportUtils.js +14 -0
- package/src/objects/BatchedMesh.js +169 -190
- package/src/objects/InstancedMesh.js +1 -1
- package/src/renderers/WebGLRenderer.js +60 -23
- package/{examples/jsm → src}/renderers/common/Attributes.js +2 -1
- package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
- package/{examples/jsm → src}/renderers/common/Background.js +12 -4
- package/src/renderers/common/BindGroup.js +18 -0
- package/{examples/jsm → src}/renderers/common/Bindings.js +45 -32
- package/{examples/jsm → src}/renderers/common/ClippingContext.js +18 -7
- package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
- package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
- package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
- package/{examples/jsm → src}/renderers/common/Info.js +34 -6
- package/src/renderers/common/PostProcessing.js +90 -0
- package/{examples/jsm/objects → src/renderers/common}/QuadMesh.js +8 -3
- package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -1
- package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderList.js +1 -1
- package/{examples/jsm → src}/renderers/common/RenderObject.js +45 -12
- package/{examples/jsm → src}/renderers/common/Renderer.js +151 -73
- package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
- package/src/renderers/common/StandardRenderer.js +18 -0
- package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
- package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
- package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
- package/{examples/jsm → src}/renderers/common/Textures.js +14 -14
- package/{examples/jsm → src}/renderers/common/Uniform.js +9 -4
- package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
- package/{examples/jsm → src}/renderers/common/extras/PMREMGenerator.js +25 -25
- package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
- package/src/renderers/common/nodes/NodeLibrary.js +118 -0
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampledTexture.js +8 -7
- package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +2 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
- package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
- package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +69 -21
- package/src/renderers/common/nodes/StandardNodeLibrary.js +105 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +16 -1
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
- package/src/renderers/shaders/UniformsLib.js +3 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -2
- package/src/renderers/webgl/WebGLBufferRenderer.js +6 -19
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +6 -18
- package/src/renderers/webgl/WebGLLights.js +6 -0
- package/src/renderers/webgl/WebGLProgram.js +27 -1
- package/src/renderers/webgl/WebGLPrograms.js +1 -1
- package/src/renderers/webgl/WebGLProperties.js +7 -0
- package/src/renderers/webgl/WebGLTextures.js +75 -57
- package/src/renderers/webgl/WebGLUniforms.js +12 -2
- package/src/renderers/webgl/WebGLUniformsGroups.js +7 -7
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +242 -120
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +227 -44
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +2 -2
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +1 -0
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +22 -1
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +62 -23
- package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +1 -1
- package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +242 -136
- package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +9 -9
- package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +281 -107
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +64 -33
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +4 -1
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -36
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +76 -44
- package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +42 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -0
- package/src/renderers/webxr/WebXRManager.js +37 -24
- package/src/textures/CompressedArrayTexture.js +1 -1
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/nodes/Nodes.js +0 -202
- package/examples/jsm/nodes/accessors/BatchNode.js +0 -78
- package/examples/jsm/nodes/accessors/CameraNode.js +0 -12
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
- package/examples/jsm/nodes/accessors/InstanceNode.js +0 -94
- package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/examples/jsm/nodes/accessors/ModelNode.js +0 -36
- package/examples/jsm/nodes/accessors/NormalNode.js +0 -14
- package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
- package/examples/jsm/nodes/accessors/PositionNode.js +0 -10
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -6
- package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
- package/examples/jsm/nodes/accessors/TangentNode.js +0 -23
- package/examples/jsm/nodes/core/CacheNode.js +0 -49
- package/examples/jsm/nodes/core/NodeCache.js +0 -26
- package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
- package/examples/jsm/nodes/core/PropertyNode.js +0 -83
- package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
- package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
- package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
- package/examples/jsm/nodes/display/FrontFacingNode.js +0 -40
- package/examples/jsm/nodes/display/PassNode.js +0 -201
- package/examples/jsm/nodes/display/ToneMappingNode.js +0 -188
- package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -37
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
- package/examples/jsm/nodes/lighting/AONode.js +0 -27
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -256
- package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
- package/examples/jsm/nodes/lighting/LightsNode.js +0 -215
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
- package/examples/jsm/nodes/materials/MeshMatcapNodeMaterial.js +0 -52
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -38
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
- package/examples/jsm/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/examples/jsm/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/examples/jsm/nodes/math/HashNode.js +0 -34
- package/examples/jsm/nodes/math/MathNode.js +0 -391
- package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
- package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
- package/examples/jsm/nodes/utils/PackingNode.js +0 -55
- package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
- package/examples/jsm/renderers/common/PostProcessing.js +0 -33
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
- /package/{examples/jsm/nodes/accessors/UVNode.js → src/nodes/accessors/UV.js} +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
- /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
- /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
- /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
- /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
- /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Animation.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
- /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ChainMap.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
- /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Pipelines.js +0 -0
- /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderBundle.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderBundles.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderObjects.js +0 -0
- /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
- /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
- /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
- /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
- /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBufferRenderer.js +0 -0
- /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
- /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
|
@@ -164,6 +164,7 @@ class ObjectLoader extends Loader {
|
|
|
164
164
|
const skeletons = this.parseSkeletons( json.skeletons, object );
|
|
165
165
|
|
|
166
166
|
this.bindSkeletons( object, skeletons );
|
|
167
|
+
this.bindLightTargets( object );
|
|
167
168
|
|
|
168
169
|
//
|
|
169
170
|
|
|
@@ -205,6 +206,7 @@ class ObjectLoader extends Loader {
|
|
|
205
206
|
const skeletons = this.parseSkeletons( json.skeletons, object );
|
|
206
207
|
|
|
207
208
|
this.bindSkeletons( object, skeletons );
|
|
209
|
+
this.bindLightTargets( object );
|
|
208
210
|
|
|
209
211
|
return object;
|
|
210
212
|
|
|
@@ -849,6 +851,7 @@ class ObjectLoader extends Loader {
|
|
|
849
851
|
case 'DirectionalLight':
|
|
850
852
|
|
|
851
853
|
object = new DirectionalLight( data.color, data.intensity );
|
|
854
|
+
object.target = data.target || '';
|
|
852
855
|
|
|
853
856
|
break;
|
|
854
857
|
|
|
@@ -867,6 +870,7 @@ class ObjectLoader extends Loader {
|
|
|
867
870
|
case 'SpotLight':
|
|
868
871
|
|
|
869
872
|
object = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );
|
|
873
|
+
object.target = data.target || '';
|
|
870
874
|
|
|
871
875
|
break;
|
|
872
876
|
|
|
@@ -923,7 +927,7 @@ class ObjectLoader extends Loader {
|
|
|
923
927
|
geometry = getGeometry( data.geometry );
|
|
924
928
|
material = getMaterial( data.material );
|
|
925
929
|
|
|
926
|
-
object = new BatchedMesh( data.
|
|
930
|
+
object = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );
|
|
927
931
|
object.geometry = geometry;
|
|
928
932
|
object.perObjectFrustumCulled = data.perObjectFrustumCulled;
|
|
929
933
|
object.sortObjects = data.sortObjects;
|
|
@@ -953,7 +957,7 @@ class ObjectLoader extends Loader {
|
|
|
953
957
|
|
|
954
958
|
} );
|
|
955
959
|
|
|
956
|
-
object.
|
|
960
|
+
object._maxInstanceCount = data.maxInstanceCount;
|
|
957
961
|
object._maxVertexCount = data.maxVertexCount;
|
|
958
962
|
object._maxIndexCount = data.maxIndexCount;
|
|
959
963
|
|
|
@@ -1047,6 +1051,7 @@ class ObjectLoader extends Loader {
|
|
|
1047
1051
|
|
|
1048
1052
|
if ( data.shadow ) {
|
|
1049
1053
|
|
|
1054
|
+
if ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;
|
|
1050
1055
|
if ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;
|
|
1051
1056
|
if ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;
|
|
1052
1057
|
if ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;
|
|
@@ -1138,6 +1143,32 @@ class ObjectLoader extends Loader {
|
|
|
1138
1143
|
|
|
1139
1144
|
}
|
|
1140
1145
|
|
|
1146
|
+
bindLightTargets( object ) {
|
|
1147
|
+
|
|
1148
|
+
object.traverse( function ( child ) {
|
|
1149
|
+
|
|
1150
|
+
if ( child.isDirectionalLight || child.isSpotLight ) {
|
|
1151
|
+
|
|
1152
|
+
const uuid = child.target;
|
|
1153
|
+
|
|
1154
|
+
const target = object.getObjectByProperty( 'uuid', uuid );
|
|
1155
|
+
|
|
1156
|
+
if ( target !== undefined ) {
|
|
1157
|
+
|
|
1158
|
+
child.target = target;
|
|
1159
|
+
|
|
1160
|
+
} else {
|
|
1161
|
+
|
|
1162
|
+
child.target = new Object3D();
|
|
1163
|
+
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
} );
|
|
1169
|
+
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1141
1172
|
}
|
|
1142
1173
|
|
|
1143
1174
|
const TEXTURE_MAPPING = {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { createNodeFromType } from '
|
|
2
|
-
import { nodeObject } from '
|
|
3
|
-
|
|
1
|
+
import { createNodeFromType } from '../../nodes/core/Node.js';
|
|
2
|
+
import { nodeObject } from '../../nodes/tsl/TSLBase.js';
|
|
3
|
+
|
|
4
|
+
import { Loader } from '../Loader.js';
|
|
5
|
+
import { FileLoader } from '../../loaders/FileLoader.js';
|
|
4
6
|
|
|
5
7
|
class NodeLoader extends Loader {
|
|
6
8
|
|
|
@@ -54,7 +56,7 @@ class NodeLoader extends Loader {
|
|
|
54
56
|
|
|
55
57
|
const { uuid, type } = nodeJSON;
|
|
56
58
|
|
|
57
|
-
nodes[ uuid ] = nodeObject( createNodeFromType( type ) );
|
|
59
|
+
nodes[ uuid ] = nodeObject( createNodeFromType( type ) );
|
|
58
60
|
nodes[ uuid ].uuid = uuid;
|
|
59
61
|
|
|
60
62
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MaterialLoader } from '
|
|
2
|
-
import { createNodeMaterialFromType } from '
|
|
1
|
+
import { MaterialLoader } from '../../loaders/MaterialLoader.js';
|
|
2
|
+
import { createNodeMaterialFromType } from '../../materials/nodes/NodeMaterial.js';
|
|
3
3
|
|
|
4
4
|
const superFromTypeFunction = MaterialLoader.createMaterialFromType;
|
|
5
5
|
|
|
@@ -100,7 +100,7 @@ class Material extends EventDispatcher {
|
|
|
100
100
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
// onBeforeRender and onBeforeCompile only supported in WebGLRenderer
|
|
104
104
|
|
|
105
105
|
onBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}
|
|
106
106
|
|
|
@@ -520,6 +520,12 @@ class Material extends EventDispatcher {
|
|
|
520
520
|
|
|
521
521
|
}
|
|
522
522
|
|
|
523
|
+
onBuild( /* shaderobject, renderer */ ) {
|
|
524
|
+
|
|
525
|
+
console.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166
|
|
526
|
+
|
|
527
|
+
}
|
|
528
|
+
|
|
523
529
|
}
|
|
524
530
|
|
|
525
531
|
export { Material };
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import NodeMaterial, {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const defaultValues = new PointsMaterial();
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
import { property } from '../../nodes/core/PropertyNode.js';
|
|
3
|
+
import { attribute } from '../../nodes/core/AttributeNode.js';
|
|
4
|
+
import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
|
|
5
|
+
import { materialColor, materialOpacity, materialPointWidth } from '../../nodes/accessors/MaterialNode.js'; // or should this be a property, instead?
|
|
6
|
+
import { modelViewMatrix } from '../../nodes/accessors/ModelNode.js';
|
|
7
|
+
import { positionGeometry } from '../../nodes/accessors/Position.js';
|
|
8
|
+
import { smoothstep } from '../../nodes/math/MathNode.js';
|
|
9
|
+
import { Fn, varying, vec2, vec4 } from '../../nodes/tsl/TSLBase.js';
|
|
10
|
+
import { uv } from '../../nodes/accessors/UV.js';
|
|
11
|
+
import { viewport } from '../../nodes/display/ViewportNode.js';
|
|
12
|
+
|
|
13
|
+
import { PointsMaterial } from '../PointsMaterial.js';
|
|
14
|
+
|
|
15
|
+
const _defaultValues = /*@__PURE__*/ new PointsMaterial();
|
|
17
16
|
|
|
18
17
|
class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
19
18
|
|
|
@@ -21,8 +20,6 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
21
20
|
|
|
22
21
|
super();
|
|
23
22
|
|
|
24
|
-
this.normals = false;
|
|
25
|
-
|
|
26
23
|
this.lights = false;
|
|
27
24
|
|
|
28
25
|
this.useAlphaToCoverage = true;
|
|
@@ -33,7 +30,9 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
33
30
|
|
|
34
31
|
this.pointColorNode = null;
|
|
35
32
|
|
|
36
|
-
this.
|
|
33
|
+
this.pointWidthNode = null;
|
|
34
|
+
|
|
35
|
+
this.setDefaultValues( _defaultValues );
|
|
37
36
|
|
|
38
37
|
this.setupShaders();
|
|
39
38
|
|
|
@@ -41,17 +40,25 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
41
40
|
|
|
42
41
|
}
|
|
43
42
|
|
|
43
|
+
setup( builder ) {
|
|
44
|
+
|
|
45
|
+
this.setupShaders();
|
|
46
|
+
|
|
47
|
+
super.setup( builder );
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
44
51
|
setupShaders() {
|
|
45
52
|
|
|
46
53
|
const useAlphaToCoverage = this.alphaToCoverage;
|
|
47
54
|
const useColor = this.useColor;
|
|
48
55
|
|
|
49
|
-
this.vertexNode =
|
|
56
|
+
this.vertexNode = Fn( () => {
|
|
50
57
|
|
|
51
58
|
//vUv = uv;
|
|
52
59
|
varying( vec2(), 'vUv' ).assign( uv() ); // @TODO: Analyze other way to do this
|
|
53
60
|
|
|
54
|
-
const instancePosition = attribute( 'instancePosition' );
|
|
61
|
+
const instancePosition = attribute( 'instancePosition' ).xyz;
|
|
55
62
|
|
|
56
63
|
// camera space
|
|
57
64
|
const mvPos = property( 'vec4', 'mvPos' );
|
|
@@ -65,7 +72,9 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
65
72
|
// offset in ndc space
|
|
66
73
|
const offset = property( 'vec2', 'offset' );
|
|
67
74
|
offset.assign( positionGeometry.xy );
|
|
68
|
-
|
|
75
|
+
|
|
76
|
+
offset.mulAssign( this.pointWidthNode ? this.pointWidthNode : materialPointWidth );
|
|
77
|
+
|
|
69
78
|
offset.assign( offset.div( viewport.z ) );
|
|
70
79
|
offset.y.assign( offset.y.mul( aspect ) );
|
|
71
80
|
|
|
@@ -81,7 +90,7 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
81
90
|
|
|
82
91
|
} )();
|
|
83
92
|
|
|
84
|
-
this.fragmentNode =
|
|
93
|
+
this.fragmentNode = Fn( () => {
|
|
85
94
|
|
|
86
95
|
const vUv = varying( vec2(), 'vUv' );
|
|
87
96
|
|
|
@@ -130,12 +139,12 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
130
139
|
|
|
131
140
|
}
|
|
132
141
|
|
|
142
|
+
alpha.mulAssign( materialOpacity );
|
|
143
|
+
|
|
133
144
|
return vec4( pointColorNode, alpha );
|
|
134
145
|
|
|
135
146
|
} )();
|
|
136
147
|
|
|
137
|
-
this.needsUpdate = true;
|
|
138
|
-
|
|
139
148
|
}
|
|
140
149
|
|
|
141
150
|
get alphaToCoverage() {
|
|
@@ -149,7 +158,7 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
149
158
|
if ( this.useAlphaToCoverage !== value ) {
|
|
150
159
|
|
|
151
160
|
this.useAlphaToCoverage = value;
|
|
152
|
-
this.
|
|
161
|
+
this.needsUpdate = true;
|
|
153
162
|
|
|
154
163
|
}
|
|
155
164
|
|
|
@@ -159,4 +168,4 @@ class InstancedPointsNodeMaterial extends NodeMaterial {
|
|
|
159
168
|
|
|
160
169
|
export default InstancedPointsNodeMaterial;
|
|
161
170
|
|
|
162
|
-
|
|
171
|
+
InstancedPointsNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'InstancedPoints', InstancedPointsNodeMaterial );
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import NodeMaterial, {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const defaultValues = new LineDashedMaterial();
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
import { property, varyingProperty } from '../../nodes/core/PropertyNode.js';
|
|
3
|
+
import { attribute } from '../../nodes/core/AttributeNode.js';
|
|
4
|
+
import { cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
|
|
5
|
+
import { materialColor, materialLineScale, materialLineDashSize, materialLineGapSize, materialLineDashOffset, materialLineWidth } from '../../nodes/accessors/MaterialNode.js';
|
|
6
|
+
import { modelViewMatrix } from '../../nodes/accessors/ModelNode.js';
|
|
7
|
+
import { positionGeometry } from '../../nodes/accessors/Position.js';
|
|
8
|
+
import { mix, smoothstep } from '../../nodes/math/MathNode.js';
|
|
9
|
+
import { Fn, varying, float, vec2, vec3, vec4, If } from '../../nodes/tsl/TSLBase.js';
|
|
10
|
+
import { uv } from '../../nodes/accessors/UV.js';
|
|
11
|
+
import { viewport } from '../../nodes/display/ViewportNode.js';
|
|
12
|
+
import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
|
|
13
|
+
|
|
14
|
+
import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
15
|
+
|
|
16
|
+
const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
|
|
19
17
|
|
|
20
18
|
class Line2NodeMaterial extends NodeMaterial {
|
|
21
19
|
|
|
@@ -23,10 +21,9 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
23
21
|
|
|
24
22
|
super();
|
|
25
23
|
|
|
26
|
-
this.normals = false;
|
|
27
24
|
this.lights = false;
|
|
28
25
|
|
|
29
|
-
this.setDefaultValues(
|
|
26
|
+
this.setDefaultValues( _defaultValues );
|
|
30
27
|
|
|
31
28
|
this.useAlphaToCoverage = true;
|
|
32
29
|
this.useColor = params.vertexColors;
|
|
@@ -62,7 +59,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
62
59
|
const useDash = this.dashed;
|
|
63
60
|
const useWorldUnits = this.worldUnits;
|
|
64
61
|
|
|
65
|
-
const trimSegment =
|
|
62
|
+
const trimSegment = Fn( ( { start, end } ) => {
|
|
66
63
|
|
|
67
64
|
const a = cameraProjectionMatrix.element( 2 ).element( 2 ); // 3nd entry in 3th column
|
|
68
65
|
const b = cameraProjectionMatrix.element( 3 ).element( 2 ); // 3nd entry in 4th column
|
|
@@ -74,7 +71,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
74
71
|
|
|
75
72
|
} );
|
|
76
73
|
|
|
77
|
-
this.vertexNode =
|
|
74
|
+
this.vertexNode = Fn( () => {
|
|
78
75
|
|
|
79
76
|
varyingProperty( 'vec2', 'vUv' ).assign( uv() );
|
|
80
77
|
|
|
@@ -111,7 +108,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
111
108
|
|
|
112
109
|
end.assign( trimSegment( { start: start, end: end } ) );
|
|
113
110
|
|
|
114
|
-
} ).
|
|
111
|
+
} ).ElseIf( end.z.lessThan( 0.0 ).and( start.z.greaterThanEqual( 0.0 ) ), () => {
|
|
115
112
|
|
|
116
113
|
start.assign( trimSegment( { start: end, end: start } ) );
|
|
117
114
|
|
|
@@ -128,13 +125,13 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
128
125
|
const ndcEnd = clipEnd.xyz.div( clipEnd.w );
|
|
129
126
|
|
|
130
127
|
// direction
|
|
131
|
-
const dir = ndcEnd.xy.sub( ndcStart.xy ).
|
|
128
|
+
const dir = ndcEnd.xy.sub( ndcStart.xy ).toVar();
|
|
132
129
|
|
|
133
130
|
// account for clip-space aspect ratio
|
|
134
131
|
dir.x.assign( dir.x.mul( aspect ) );
|
|
135
132
|
dir.assign( dir.normalize() );
|
|
136
133
|
|
|
137
|
-
const clip =
|
|
134
|
+
const clip = vec4().toVar();
|
|
138
135
|
|
|
139
136
|
if ( useWorldUnits ) {
|
|
140
137
|
|
|
@@ -147,18 +144,18 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
147
144
|
|
|
148
145
|
const worldPos = varyingProperty( 'vec4', 'worldPos' );
|
|
149
146
|
|
|
150
|
-
worldPos.assign( positionGeometry.y.lessThan( 0.5 ).
|
|
147
|
+
worldPos.assign( positionGeometry.y.lessThan( 0.5 ).select( start, end ) );
|
|
151
148
|
|
|
152
149
|
// height offset
|
|
153
150
|
const hw = materialLineWidth.mul( 0.5 );
|
|
154
|
-
worldPos.addAssign( vec4( positionGeometry.x.lessThan( 0.0 ).
|
|
151
|
+
worldPos.addAssign( vec4( positionGeometry.x.lessThan( 0.0 ).select( worldUp.mul( hw ), worldUp.mul( hw ).negate() ), 0 ) );
|
|
155
152
|
|
|
156
153
|
// don't extend the line if we're rendering dashes because we
|
|
157
154
|
// won't be rendering the endcaps
|
|
158
155
|
if ( ! useDash ) {
|
|
159
156
|
|
|
160
157
|
// cap extension
|
|
161
|
-
worldPos.addAssign( vec4( positionGeometry.y.lessThan( 0.5 ).
|
|
158
|
+
worldPos.addAssign( vec4( positionGeometry.y.lessThan( 0.5 ).select( worldDir.mul( hw ).negate(), worldDir.mul( hw ) ), 0 ) );
|
|
162
159
|
|
|
163
160
|
// add width to the box
|
|
164
161
|
worldPos.addAssign( vec4( worldFwd.mul( hw ), 0 ) );
|
|
@@ -177,9 +174,9 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
177
174
|
|
|
178
175
|
// shift the depth of the projected points so the line
|
|
179
176
|
// segments overlap neatly
|
|
180
|
-
const clipPose =
|
|
177
|
+
const clipPose = vec3().toVar();
|
|
181
178
|
|
|
182
|
-
clipPose.assign( positionGeometry.y.lessThan( 0.5 ).
|
|
179
|
+
clipPose.assign( positionGeometry.y.lessThan( 0.5 ).select( ndcStart, ndcEnd ) );
|
|
183
180
|
clip.z.assign( clipPose.z.mul( clip.w ) );
|
|
184
181
|
|
|
185
182
|
} else {
|
|
@@ -193,14 +190,14 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
193
190
|
offset.x.assign( offset.x.div( aspect ) );
|
|
194
191
|
|
|
195
192
|
// sign flip
|
|
196
|
-
offset.assign( positionGeometry.x.lessThan( 0.0 ).
|
|
193
|
+
offset.assign( positionGeometry.x.lessThan( 0.0 ).select( offset.negate(), offset ) );
|
|
197
194
|
|
|
198
195
|
// endcaps
|
|
199
196
|
If( positionGeometry.y.lessThan( 0.0 ), () => {
|
|
200
197
|
|
|
201
198
|
offset.assign( offset.sub( dir ) );
|
|
202
199
|
|
|
203
|
-
} ).
|
|
200
|
+
} ).ElseIf( positionGeometry.y.greaterThan( 1.0 ), () => {
|
|
204
201
|
|
|
205
202
|
offset.assign( offset.add( dir ) );
|
|
206
203
|
|
|
@@ -213,7 +210,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
213
210
|
offset.assign( offset.div( viewport.w ) );
|
|
214
211
|
|
|
215
212
|
// select end
|
|
216
|
-
clip.assign( positionGeometry.y.lessThan( 0.5 ).
|
|
213
|
+
clip.assign( positionGeometry.y.lessThan( 0.5 ).select( clipStart, clipEnd ) );
|
|
217
214
|
|
|
218
215
|
// back to clip space
|
|
219
216
|
offset.assign( offset.mul( clip.w ) );
|
|
@@ -226,7 +223,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
226
223
|
|
|
227
224
|
} )();
|
|
228
225
|
|
|
229
|
-
const closestLineToLine =
|
|
226
|
+
const closestLineToLine = Fn( ( { p1, p2, p3, p4 } ) => {
|
|
230
227
|
|
|
231
228
|
const p13 = p1.sub( p3 );
|
|
232
229
|
const p43 = p4.sub( p3 );
|
|
@@ -249,7 +246,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
249
246
|
|
|
250
247
|
} );
|
|
251
248
|
|
|
252
|
-
this.fragmentNode =
|
|
249
|
+
this.fragmentNode = Fn( () => {
|
|
253
250
|
|
|
254
251
|
const vUv = varyingProperty( 'vec2', 'vUv' );
|
|
255
252
|
|
|
@@ -266,7 +263,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
266
263
|
const instanceDistanceStart = attribute( 'instanceDistanceStart' );
|
|
267
264
|
const instanceDistanceEnd = attribute( 'instanceDistanceEnd' );
|
|
268
265
|
|
|
269
|
-
const lineDistance = positionGeometry.y.lessThan( 0.5 ).
|
|
266
|
+
const lineDistance = positionGeometry.y.lessThan( 0.5 ).select( dashScaleNode.mul( instanceDistanceStart ), materialLineScale.mul( instanceDistanceEnd ) );
|
|
270
267
|
|
|
271
268
|
const vLineDistance = varying( lineDistance.add( materialLineDashOffset ) );
|
|
272
269
|
const vLineDistanceOffset = offsetNode ? vLineDistance.add( offsetNode ) : vLineDistance;
|
|
@@ -318,7 +315,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
318
315
|
if ( useAlphaToCoverage ) {
|
|
319
316
|
|
|
320
317
|
const a = vUv.x;
|
|
321
|
-
const b = vUv.y.greaterThan( 0.0 ).
|
|
318
|
+
const b = vUv.y.greaterThan( 0.0 ).select( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
|
|
322
319
|
|
|
323
320
|
const len2 = a.mul( a ).add( b.mul( b ) );
|
|
324
321
|
|
|
@@ -337,7 +334,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
337
334
|
If( vUv.y.abs().greaterThan( 1.0 ), () => {
|
|
338
335
|
|
|
339
336
|
const a = vUv.x;
|
|
340
|
-
const b = vUv.y.greaterThan( 0.0 ).
|
|
337
|
+
const b = vUv.y.greaterThan( 0.0 ).select( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
|
|
341
338
|
const len2 = a.mul( a ).add( b.mul( b ) );
|
|
342
339
|
|
|
343
340
|
len2.greaterThan( 1.0 ).discard();
|
|
@@ -361,7 +358,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
361
358
|
const instanceColorStart = attribute( 'instanceColorStart' );
|
|
362
359
|
const instanceColorEnd = attribute( 'instanceColorEnd' );
|
|
363
360
|
|
|
364
|
-
const instanceColor = positionGeometry.y.lessThan( 0.5 ).
|
|
361
|
+
const instanceColor = positionGeometry.y.lessThan( 0.5 ).select( instanceColorStart, instanceColorEnd );
|
|
365
362
|
|
|
366
363
|
lineColorNode = instanceColor.mul( materialColor );
|
|
367
364
|
|
|
@@ -437,4 +434,4 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
437
434
|
|
|
438
435
|
export default Line2NodeMaterial;
|
|
439
436
|
|
|
440
|
-
|
|
437
|
+
Line2NodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'Line2', Line2NodeMaterial );
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
|
|
3
|
+
import { LineBasicMaterial } from '../LineBasicMaterial.js';
|
|
4
|
+
|
|
5
|
+
const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
|
|
6
|
+
|
|
7
|
+
class LineBasicNodeMaterial extends NodeMaterial {
|
|
8
|
+
|
|
9
|
+
constructor( parameters ) {
|
|
10
|
+
|
|
11
|
+
super();
|
|
12
|
+
|
|
13
|
+
this.isLineBasicNodeMaterial = true;
|
|
14
|
+
|
|
15
|
+
this.lights = false;
|
|
16
|
+
|
|
17
|
+
this.setDefaultValues( _defaultValues );
|
|
18
|
+
|
|
19
|
+
this.setValues( parameters );
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default LineBasicNodeMaterial;
|
|
26
|
+
|
|
27
|
+
LineBasicNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'LineBasic', LineBasicNodeMaterial );
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import NodeMaterial, {
|
|
2
|
-
import { attribute } from '
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { float } from '../shadernode/ShaderNode.js';
|
|
7
|
-
import { LineDashedMaterial } from 'three';
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
import { attribute } from '../../nodes/core/AttributeNode.js';
|
|
3
|
+
import { materialLineDashSize, materialLineGapSize, materialLineScale } from '../../nodes/accessors/MaterialNode.js';
|
|
4
|
+
import { dashSize, gapSize } from '../../nodes/core/PropertyNode.js';
|
|
5
|
+
import { varying, float } from '../../nodes/tsl/TSLBase.js';
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
8
|
+
|
|
9
|
+
const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
|
|
10
10
|
|
|
11
11
|
class LineDashedNodeMaterial extends NodeMaterial {
|
|
12
12
|
|
|
@@ -17,9 +17,8 @@ class LineDashedNodeMaterial extends NodeMaterial {
|
|
|
17
17
|
this.isLineDashedNodeMaterial = true;
|
|
18
18
|
|
|
19
19
|
this.lights = false;
|
|
20
|
-
this.normals = false;
|
|
21
20
|
|
|
22
|
-
this.setDefaultValues(
|
|
21
|
+
this.setDefaultValues( _defaultValues );
|
|
23
22
|
|
|
24
23
|
this.offsetNode = null;
|
|
25
24
|
this.dashScaleNode = null;
|
|
@@ -51,4 +50,4 @@ class LineDashedNodeMaterial extends NodeMaterial {
|
|
|
51
50
|
|
|
52
51
|
export default LineDashedNodeMaterial;
|
|
53
52
|
|
|
54
|
-
|
|
53
|
+
LineDashedNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'LineDashed', LineDashedNodeMaterial );
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
import { materialLightMap } from '../../nodes/accessors/MaterialNode.js';
|
|
3
|
+
import BasicEnvironmentNode from '../../nodes/lighting/BasicEnvironmentNode.js';
|
|
4
|
+
import BasicLightMapNode from '../../nodes/lighting/BasicLightMapNode.js';
|
|
5
|
+
import BasicLightingModel from '../../nodes/functions/BasicLightingModel.js';
|
|
6
|
+
import { normalView } from '../../nodes/accessors/Normal.js';
|
|
7
|
+
import { diffuseColor } from '../../nodes/core/PropertyNode.js';
|
|
8
|
+
|
|
9
|
+
import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
|
|
10
|
+
|
|
11
|
+
const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
|
|
12
|
+
|
|
13
|
+
class MeshBasicNodeMaterial extends NodeMaterial {
|
|
14
|
+
|
|
15
|
+
constructor( parameters ) {
|
|
16
|
+
|
|
17
|
+
super();
|
|
18
|
+
|
|
19
|
+
this.isMeshBasicNodeMaterial = true;
|
|
20
|
+
|
|
21
|
+
this.lights = true;
|
|
22
|
+
|
|
23
|
+
this.setDefaultValues( _defaultValues );
|
|
24
|
+
|
|
25
|
+
this.setValues( parameters );
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
setupNormal() {
|
|
30
|
+
|
|
31
|
+
return normalView; // see #28839
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
setupEnvironment( builder ) {
|
|
36
|
+
|
|
37
|
+
const envNode = super.setupEnvironment( builder );
|
|
38
|
+
|
|
39
|
+
return envNode ? new BasicEnvironmentNode( envNode ) : null;
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
setupLightMap( builder ) {
|
|
44
|
+
|
|
45
|
+
let node = null;
|
|
46
|
+
|
|
47
|
+
if ( builder.material.lightMap ) {
|
|
48
|
+
|
|
49
|
+
node = new BasicLightMapNode( materialLightMap );
|
|
50
|
+
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return node;
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
setupOutgoingLight() {
|
|
58
|
+
|
|
59
|
+
return diffuseColor.rgb;
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
setupLightingModel() {
|
|
64
|
+
|
|
65
|
+
return new BasicLightingModel();
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export default MeshBasicNodeMaterial;
|
|
72
|
+
|
|
73
|
+
MeshBasicNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'MeshBasic', MeshBasicNodeMaterial );
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import NodeMaterial, { registerNodeMaterial } from './NodeMaterial.js';
|
|
2
|
+
import BasicEnvironmentNode from '../../nodes/lighting/BasicEnvironmentNode.js';
|
|
3
|
+
import PhongLightingModel from '../../nodes/functions/PhongLightingModel.js';
|
|
4
|
+
|
|
5
|
+
import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
|
|
6
|
+
|
|
7
|
+
const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
|
|
8
|
+
|
|
9
|
+
class MeshLambertNodeMaterial extends NodeMaterial {
|
|
10
|
+
|
|
11
|
+
constructor( parameters ) {
|
|
12
|
+
|
|
13
|
+
super();
|
|
14
|
+
|
|
15
|
+
this.isMeshLambertNodeMaterial = true;
|
|
16
|
+
|
|
17
|
+
this.lights = true;
|
|
18
|
+
|
|
19
|
+
this.setDefaultValues( _defaultValues );
|
|
20
|
+
|
|
21
|
+
this.setValues( parameters );
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
setupEnvironment( builder ) {
|
|
26
|
+
|
|
27
|
+
const envNode = super.setupEnvironment( builder );
|
|
28
|
+
|
|
29
|
+
return envNode ? new BasicEnvironmentNode( envNode ) : null;
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
setupLightingModel( /*builder*/ ) {
|
|
34
|
+
|
|
35
|
+
return new PhongLightingModel( false ); // ( specular ) -> force lambert
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export default MeshLambertNodeMaterial;
|
|
42
|
+
|
|
43
|
+
MeshLambertNodeMaterial.type = /*@__PURE__*/ registerNodeMaterial( 'MeshLambert', MeshLambertNodeMaterial );
|