super-three 0.171.0 → 0.173.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -2
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/ImageUtils.js +1 -11
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +113 -3
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/ArrayNode.js +125 -0
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +110 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +54 -0
- package/src/nodes/utils/Timer.js +40 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +243 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +352 -78
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
|
@@ -26,19 +26,20 @@ class EventDispatcher {
|
|
|
26
26
|
|
|
27
27
|
hasEventListener( type, listener ) {
|
|
28
28
|
|
|
29
|
-
if ( this._listeners === undefined ) return false;
|
|
30
|
-
|
|
31
29
|
const listeners = this._listeners;
|
|
32
30
|
|
|
31
|
+
if ( listeners === undefined ) return false;
|
|
32
|
+
|
|
33
33
|
return listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;
|
|
34
34
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
removeEventListener( type, listener ) {
|
|
38
38
|
|
|
39
|
-
if ( this._listeners === undefined ) return;
|
|
40
|
-
|
|
41
39
|
const listeners = this._listeners;
|
|
40
|
+
|
|
41
|
+
if ( listeners === undefined ) return;
|
|
42
|
+
|
|
42
43
|
const listenerArray = listeners[ type ];
|
|
43
44
|
|
|
44
45
|
if ( listenerArray !== undefined ) {
|
|
@@ -57,9 +58,10 @@ class EventDispatcher {
|
|
|
57
58
|
|
|
58
59
|
dispatchEvent( event ) {
|
|
59
60
|
|
|
60
|
-
if ( this._listeners === undefined ) return;
|
|
61
|
-
|
|
62
61
|
const listeners = this._listeners;
|
|
62
|
+
|
|
63
|
+
if ( listeners === undefined ) return;
|
|
64
|
+
|
|
63
65
|
const listenerArray = listeners[ event.type ];
|
|
64
66
|
|
|
65
67
|
if ( listenerArray !== undefined ) {
|
package/src/core/RenderTarget.js
CHANGED
|
@@ -54,6 +54,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
54
54
|
|
|
55
55
|
this.textures[ i ] = texture.clone();
|
|
56
56
|
this.textures[ i ].isRenderTargetTexture = true;
|
|
57
|
+
this.textures[ i ].renderTarget = this;
|
|
57
58
|
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -63,6 +64,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
63
64
|
this.resolveDepthBuffer = options.resolveDepthBuffer;
|
|
64
65
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
65
66
|
|
|
67
|
+
this._depthTexture = null;
|
|
66
68
|
this.depthTexture = options.depthTexture;
|
|
67
69
|
|
|
68
70
|
this.samples = options.samples;
|
|
@@ -81,6 +83,21 @@ class RenderTarget extends EventDispatcher {
|
|
|
81
83
|
|
|
82
84
|
}
|
|
83
85
|
|
|
86
|
+
set depthTexture( current ) {
|
|
87
|
+
|
|
88
|
+
if ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;
|
|
89
|
+
if ( current !== null ) current.renderTarget = this;
|
|
90
|
+
|
|
91
|
+
this._depthTexture = current;
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
get depthTexture() {
|
|
96
|
+
|
|
97
|
+
return this._depthTexture;
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
84
101
|
setSize( width, height, depth = 1 ) {
|
|
85
102
|
|
|
86
103
|
if ( this.width !== width || this.height !== height || this.depth !== depth ) {
|
|
@@ -129,6 +146,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
129
146
|
|
|
130
147
|
this.textures[ i ] = source.textures[ i ].clone();
|
|
131
148
|
this.textures[ i ].isRenderTargetTexture = true;
|
|
149
|
+
this.textures[ i ].renderTarget = this;
|
|
132
150
|
|
|
133
151
|
}
|
|
134
152
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RenderTarget } from './RenderTarget.js';
|
|
2
|
+
import { Data3DTexture } from '../textures/Data3DTexture.js';
|
|
3
|
+
|
|
4
|
+
class RenderTarget3D extends RenderTarget {
|
|
5
|
+
|
|
6
|
+
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
|
+
|
|
8
|
+
super( width, height, options );
|
|
9
|
+
|
|
10
|
+
this.isRenderTarget3D = true;
|
|
11
|
+
|
|
12
|
+
this.depth = depth;
|
|
13
|
+
|
|
14
|
+
this.texture = new Data3DTexture( null, width, height, depth );
|
|
15
|
+
|
|
16
|
+
this.texture.isRenderTargetTexture = true;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { RenderTarget3D };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RenderTarget } from './RenderTarget.js';
|
|
2
|
+
import { DataArrayTexture } from '../textures/DataArrayTexture.js';
|
|
3
|
+
|
|
4
|
+
class RenderTargetArray extends RenderTarget {
|
|
5
|
+
|
|
6
|
+
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
|
+
|
|
8
|
+
super( width, height, options );
|
|
9
|
+
|
|
10
|
+
this.isRenderTargetArray = true;
|
|
11
|
+
|
|
12
|
+
this.depth = depth;
|
|
13
|
+
|
|
14
|
+
this.texture = new DataArrayTexture( null, width, height, depth );
|
|
15
|
+
|
|
16
|
+
this.texture.isRenderTargetTexture = true;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { RenderTargetArray };
|
package/src/extras/Earcut.js
CHANGED
|
@@ -591,7 +591,7 @@ function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {
|
|
|
591
591
|
// check if a diagonal between two polygon nodes is valid (lies in polygon interior)
|
|
592
592
|
function isValidDiagonal( a, b ) {
|
|
593
593
|
|
|
594
|
-
return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && //
|
|
594
|
+
return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges
|
|
595
595
|
( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible
|
|
596
596
|
( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors
|
|
597
597
|
equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case
|
package/src/extras/ImageUtils.js
CHANGED
|
@@ -48,17 +48,7 @@ class ImageUtils {
|
|
|
48
48
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
console.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );
|
|
54
|
-
|
|
55
|
-
return canvas.toDataURL( 'image/jpeg', 0.6 );
|
|
56
|
-
|
|
57
|
-
} else {
|
|
58
|
-
|
|
59
|
-
return canvas.toDataURL( 'image/png' );
|
|
60
|
-
|
|
61
|
-
}
|
|
51
|
+
return canvas.toDataURL( 'image/png' );
|
|
62
52
|
|
|
63
53
|
}
|
|
64
54
|
|
|
@@ -102,6 +102,12 @@ class PMREMGenerator {
|
|
|
102
102
|
* in radians to be applied to the scene before PMREM generation. Optional near
|
|
103
103
|
* and far planes ensure the scene is rendered in its entirety (the cubeCamera
|
|
104
104
|
* is placed at the origin).
|
|
105
|
+
*
|
|
106
|
+
* @param {Scene} scene
|
|
107
|
+
* @param {number} sigma
|
|
108
|
+
* @param {number} near
|
|
109
|
+
* @param {number} far
|
|
110
|
+
* @return {WebGLRenderTarget}
|
|
105
111
|
*/
|
|
106
112
|
fromScene( scene, sigma = 0, near = 0.1, far = 100 ) {
|
|
107
113
|
|
|
@@ -137,6 +143,10 @@ class PMREMGenerator {
|
|
|
137
143
|
* or HDR. The ideal input image size is 1k (1024 x 512),
|
|
138
144
|
* as this matches best with the 256 x 256 cubemap output.
|
|
139
145
|
* The smallest supported equirectangular image size is 64 x 32.
|
|
146
|
+
*
|
|
147
|
+
* @param {Texture} equirectangular
|
|
148
|
+
* @param {WebGLRenderTarget} [renderTarget=null] - Optional render target.
|
|
149
|
+
* @return {WebGLRenderTarget}
|
|
140
150
|
*/
|
|
141
151
|
fromEquirectangular( equirectangular, renderTarget = null ) {
|
|
142
152
|
|
|
@@ -149,6 +159,10 @@ class PMREMGenerator {
|
|
|
149
159
|
* or HDR. The ideal input cube size is 256 x 256,
|
|
150
160
|
* as this matches best with the 256 x 256 cubemap output.
|
|
151
161
|
* The smallest supported cube size is 16 x 16.
|
|
162
|
+
*
|
|
163
|
+
* @param {Texture} cubemap
|
|
164
|
+
* @param {null} [renderTarget=null] - Optional render target.
|
|
165
|
+
* @return {WebGLRenderTarget}
|
|
152
166
|
*/
|
|
153
167
|
fromCubemap( cubemap, renderTarget = null ) {
|
|
154
168
|
|
|
@@ -466,6 +480,12 @@ class PMREMGenerator {
|
|
|
466
480
|
* the blur latitudinally (around the poles), and then longitudinally (towards
|
|
467
481
|
* the poles) to approximate the orthogonally-separable blur. It is least
|
|
468
482
|
* accurate at the poles, but still does a decent job.
|
|
483
|
+
*
|
|
484
|
+
* @param {WebGLRenderTarget} cubeUVRenderTarget
|
|
485
|
+
* @param {number} lodIn
|
|
486
|
+
* @param {number} lodOut
|
|
487
|
+
* @param {number} sigma
|
|
488
|
+
* @param {Vector3} [poleAxis]
|
|
469
489
|
*/
|
|
470
490
|
_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {
|
|
471
491
|
|
|
@@ -69,6 +69,12 @@ function fill( texture ) {
|
|
|
69
69
|
/**
|
|
70
70
|
* Given the width, height, format, and type of a texture. Determines how many
|
|
71
71
|
* bytes must be used to represent the texture.
|
|
72
|
+
*
|
|
73
|
+
* @param {Number} width
|
|
74
|
+
* @param {Number} height
|
|
75
|
+
* @param {Number} format
|
|
76
|
+
* @param {Number} type
|
|
77
|
+
* @return {Number} The number of bytes required to represent the texture.
|
|
72
78
|
*/
|
|
73
79
|
function getByteLength( width, height, format, type ) {
|
|
74
80
|
|
|
@@ -5,6 +5,7 @@ import { Color } from '../math/Color.js';
|
|
|
5
5
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
6
6
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
7
7
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
8
|
+
import { WebGLCoordinateSystem } from '../constants.js';
|
|
8
9
|
|
|
9
10
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
10
11
|
const _camera = /*@__PURE__*/ new Camera();
|
|
@@ -195,17 +196,19 @@ class CameraHelper extends LineSegments {
|
|
|
195
196
|
|
|
196
197
|
_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );
|
|
197
198
|
|
|
198
|
-
//
|
|
199
|
+
// Adjust z values based on coordinate system
|
|
200
|
+
const nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? - 1 : 0;
|
|
199
201
|
|
|
200
|
-
|
|
202
|
+
// center / target
|
|
203
|
+
setPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );
|
|
201
204
|
setPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );
|
|
202
205
|
|
|
203
206
|
// near
|
|
204
207
|
|
|
205
|
-
setPoint( 'n1', pointMap, geometry, _camera, - w, - h,
|
|
206
|
-
setPoint( 'n2', pointMap, geometry, _camera, w, - h,
|
|
207
|
-
setPoint( 'n3', pointMap, geometry, _camera, - w, h,
|
|
208
|
-
setPoint( 'n4', pointMap, geometry, _camera, w, h,
|
|
208
|
+
setPoint( 'n1', pointMap, geometry, _camera, - w, - h, nearZ );
|
|
209
|
+
setPoint( 'n2', pointMap, geometry, _camera, w, - h, nearZ );
|
|
210
|
+
setPoint( 'n3', pointMap, geometry, _camera, - w, h, nearZ );
|
|
211
|
+
setPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );
|
|
209
212
|
|
|
210
213
|
// far
|
|
211
214
|
|
|
@@ -216,9 +219,9 @@ class CameraHelper extends LineSegments {
|
|
|
216
219
|
|
|
217
220
|
// up
|
|
218
221
|
|
|
219
|
-
setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1,
|
|
220
|
-
setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1,
|
|
221
|
-
setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2,
|
|
222
|
+
setPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );
|
|
223
|
+
setPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, nearZ );
|
|
224
|
+
setPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );
|
|
222
225
|
|
|
223
226
|
// cross
|
|
224
227
|
|
|
@@ -227,10 +230,10 @@ class CameraHelper extends LineSegments {
|
|
|
227
230
|
setPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );
|
|
228
231
|
setPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );
|
|
229
232
|
|
|
230
|
-
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0,
|
|
231
|
-
setPoint( 'cn2', pointMap, geometry, _camera, w, 0,
|
|
232
|
-
setPoint( 'cn3', pointMap, geometry, _camera, 0, - h,
|
|
233
|
-
setPoint( 'cn4', pointMap, geometry, _camera, 0, h,
|
|
233
|
+
setPoint( 'cn1', pointMap, geometry, _camera, - w, 0, nearZ );
|
|
234
|
+
setPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );
|
|
235
|
+
setPoint( 'cn3', pointMap, geometry, _camera, 0, - h, nearZ );
|
|
236
|
+
setPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );
|
|
234
237
|
|
|
235
238
|
geometry.getAttribute( 'position' ).needsUpdate = true;
|
|
236
239
|
|
|
@@ -3,17 +3,46 @@ import { nodeObject, float } from '../../nodes/tsl/TSLBase.js';
|
|
|
3
3
|
import { Loader } from '../Loader.js';
|
|
4
4
|
import { FileLoader } from '../../loaders/FileLoader.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A loader for loading node objects in the three.js JSON Object/Scene format.
|
|
8
|
+
*
|
|
9
|
+
* @augments Loader
|
|
10
|
+
*/
|
|
6
11
|
class NodeLoader extends Loader {
|
|
7
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new node loader.
|
|
15
|
+
*
|
|
16
|
+
* @param {LoadingManager?} manager - A reference to a loading manager.
|
|
17
|
+
*/
|
|
8
18
|
constructor( manager ) {
|
|
9
19
|
|
|
10
20
|
super( manager );
|
|
11
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Represents a dictionary of textures.
|
|
24
|
+
*
|
|
25
|
+
* @type {Object<String,Texture>}
|
|
26
|
+
*/
|
|
12
27
|
this.textures = {};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Represents a dictionary of node types.
|
|
31
|
+
*
|
|
32
|
+
* @type {Object<String,Node.constructor>}
|
|
33
|
+
*/
|
|
13
34
|
this.nodes = {};
|
|
14
35
|
|
|
15
36
|
}
|
|
16
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Loads the node definitions from the given URL.
|
|
40
|
+
*
|
|
41
|
+
* @param {String} url - The path/URL of the file to be loaded.
|
|
42
|
+
* @param {Function} onLoad - Will be called when load completes.
|
|
43
|
+
* @param {Function} onProgress - Will be called while load progresses.
|
|
44
|
+
* @param {Function} onError - Will be called when errors are thrown during the loading process.
|
|
45
|
+
*/
|
|
17
46
|
load( url, onLoad, onProgress, onError ) {
|
|
18
47
|
|
|
19
48
|
const loader = new FileLoader( this.manager );
|
|
@@ -46,6 +75,12 @@ class NodeLoader extends Loader {
|
|
|
46
75
|
|
|
47
76
|
}
|
|
48
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Parse the node dependencies for the loaded node.
|
|
80
|
+
*
|
|
81
|
+
* @param {Object} json - The JSON definition
|
|
82
|
+
* @return {Object<String,Node>} A dictionary with node dependencies.
|
|
83
|
+
*/
|
|
49
84
|
parseNodes( json ) {
|
|
50
85
|
|
|
51
86
|
const nodes = {};
|
|
@@ -80,6 +115,12 @@ class NodeLoader extends Loader {
|
|
|
80
115
|
|
|
81
116
|
}
|
|
82
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Parses the node from the given JSON.
|
|
120
|
+
*
|
|
121
|
+
* @param {Object} json - The JSON definition
|
|
122
|
+
* @return {Node} The parsed node.
|
|
123
|
+
*/
|
|
83
124
|
parse( json ) {
|
|
84
125
|
|
|
85
126
|
const node = this.createNodeFromType( json.type );
|
|
@@ -98,6 +139,12 @@ class NodeLoader extends Loader {
|
|
|
98
139
|
|
|
99
140
|
}
|
|
100
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Defines the dictionary of textures.
|
|
144
|
+
*
|
|
145
|
+
* @param {Object<String,Texture>} value - The texture library defines as `<uuid,texture>`.
|
|
146
|
+
* @return {NodeLoader} A reference to this loader.
|
|
147
|
+
*/
|
|
101
148
|
setTextures( value ) {
|
|
102
149
|
|
|
103
150
|
this.textures = value;
|
|
@@ -105,6 +152,12 @@ class NodeLoader extends Loader {
|
|
|
105
152
|
|
|
106
153
|
}
|
|
107
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Defines the dictionary of node types.
|
|
157
|
+
*
|
|
158
|
+
* @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
|
|
159
|
+
* @return {NodeLoader} A reference to this loader.
|
|
160
|
+
*/
|
|
108
161
|
setNodes( value ) {
|
|
109
162
|
|
|
110
163
|
this.nodes = value;
|
|
@@ -112,6 +165,12 @@ class NodeLoader extends Loader {
|
|
|
112
165
|
|
|
113
166
|
}
|
|
114
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Creates a node object from the given type.
|
|
170
|
+
*
|
|
171
|
+
* @param {String} type - The node type.
|
|
172
|
+
* @return {Node} The created node instance.
|
|
173
|
+
*/
|
|
115
174
|
createNodeFromType( type ) {
|
|
116
175
|
|
|
117
176
|
if ( this.nodes[ type ] === undefined ) {
|
|
@@ -1,16 +1,43 @@
|
|
|
1
1
|
import { MaterialLoader } from '../../loaders/MaterialLoader.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A special type of material loader for loading node materials.
|
|
5
|
+
*
|
|
6
|
+
* @augments MaterialLoader
|
|
7
|
+
*/
|
|
3
8
|
class NodeMaterialLoader extends MaterialLoader {
|
|
4
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new node material loader.
|
|
12
|
+
*
|
|
13
|
+
* @param {LoadingManager?} manager - A reference to a loading manager.
|
|
14
|
+
*/
|
|
5
15
|
constructor( manager ) {
|
|
6
16
|
|
|
7
17
|
super( manager );
|
|
8
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Represents a dictionary of node types.
|
|
21
|
+
*
|
|
22
|
+
* @type {Object<String,Node.constructor>}
|
|
23
|
+
*/
|
|
9
24
|
this.nodes = {};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Represents a dictionary of node material types.
|
|
28
|
+
*
|
|
29
|
+
* @type {Object<String,NodeMaterial.constructor>}
|
|
30
|
+
*/
|
|
10
31
|
this.nodeMaterials = {};
|
|
11
32
|
|
|
12
33
|
}
|
|
13
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Parses the node material from the given JSON.
|
|
37
|
+
*
|
|
38
|
+
* @param {Object} json - The JSON definition
|
|
39
|
+
* @return {NodeMaterial}. The parsed material.
|
|
40
|
+
*/
|
|
14
41
|
parse( json ) {
|
|
15
42
|
|
|
16
43
|
const material = super.parse( json );
|
|
@@ -30,6 +57,12 @@ class NodeMaterialLoader extends MaterialLoader {
|
|
|
30
57
|
|
|
31
58
|
}
|
|
32
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Defines the dictionary of node types.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
|
|
64
|
+
* @return {NodeLoader} A reference to this loader.
|
|
65
|
+
*/
|
|
33
66
|
setNodes( value ) {
|
|
34
67
|
|
|
35
68
|
this.nodes = value;
|
|
@@ -37,6 +70,12 @@ class NodeMaterialLoader extends MaterialLoader {
|
|
|
37
70
|
|
|
38
71
|
}
|
|
39
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Defines the dictionary of node material types.
|
|
75
|
+
*
|
|
76
|
+
* @param {Object<String,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
|
|
77
|
+
* @return {NodeLoader} A reference to this loader.
|
|
78
|
+
*/
|
|
40
79
|
setNodeMaterials( value ) {
|
|
41
80
|
|
|
42
81
|
this.nodeMaterials = value;
|
|
@@ -44,6 +83,12 @@ class NodeMaterialLoader extends MaterialLoader {
|
|
|
44
83
|
|
|
45
84
|
}
|
|
46
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Creates a node material from the given type.
|
|
88
|
+
*
|
|
89
|
+
* @param {String} type - The node material type.
|
|
90
|
+
* @return {Node} The created node material instance.
|
|
91
|
+
*/
|
|
47
92
|
createMaterialFromType( type ) {
|
|
48
93
|
|
|
49
94
|
const materialClass = this.nodeMaterials[ type ];
|
|
@@ -3,19 +3,53 @@ import NodeMaterialLoader from './NodeMaterialLoader.js';
|
|
|
3
3
|
|
|
4
4
|
import { ObjectLoader } from '../../loaders/ObjectLoader.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A special type of object loader for loading 3D objects using
|
|
8
|
+
* node materials.
|
|
9
|
+
*
|
|
10
|
+
* @augments ObjectLoader
|
|
11
|
+
*/
|
|
6
12
|
class NodeObjectLoader extends ObjectLoader {
|
|
7
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new node object loader.
|
|
16
|
+
*
|
|
17
|
+
* @param {LoadingManager?} manager - A reference to a loading manager.
|
|
18
|
+
*/
|
|
8
19
|
constructor( manager ) {
|
|
9
20
|
|
|
10
21
|
super( manager );
|
|
11
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Represents a dictionary of node types.
|
|
25
|
+
*
|
|
26
|
+
* @type {Object<String,Node.constructor>}
|
|
27
|
+
*/
|
|
12
28
|
this.nodes = {};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Represents a dictionary of node material types.
|
|
32
|
+
*
|
|
33
|
+
* @type {Object<String,NodeMaterial.constructor>}
|
|
34
|
+
*/
|
|
13
35
|
this.nodeMaterials = {};
|
|
14
36
|
|
|
37
|
+
/**
|
|
38
|
+
* A reference to hold the `nodes` JSON property.
|
|
39
|
+
*
|
|
40
|
+
* @private
|
|
41
|
+
* @type {Object?}
|
|
42
|
+
*/
|
|
15
43
|
this._nodesJSON = null;
|
|
16
44
|
|
|
17
45
|
}
|
|
18
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Defines the dictionary of node types.
|
|
49
|
+
*
|
|
50
|
+
* @param {Object<String,Node.constructor>} value - The node library defined as `<classname,class>`.
|
|
51
|
+
* @return {NodeLoader} A reference to this loader.
|
|
52
|
+
*/
|
|
19
53
|
setNodes( value ) {
|
|
20
54
|
|
|
21
55
|
this.nodes = value;
|
|
@@ -23,6 +57,12 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
23
57
|
|
|
24
58
|
}
|
|
25
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Defines the dictionary of node material types.
|
|
62
|
+
*
|
|
63
|
+
* @param {Object<String,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
|
|
64
|
+
* @return {NodeLoader} A reference to this loader.
|
|
65
|
+
*/
|
|
26
66
|
setNodeMaterials( value ) {
|
|
27
67
|
|
|
28
68
|
this.nodeMaterials = value;
|
|
@@ -30,6 +70,13 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
30
70
|
|
|
31
71
|
}
|
|
32
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Parses the node objects from the given JSON.
|
|
75
|
+
*
|
|
76
|
+
* @param {Object} json - The JSON definition
|
|
77
|
+
* @param {Function} onLoad - The onLoad callback function.
|
|
78
|
+
* @return {Object3D}. The parsed 3D object.
|
|
79
|
+
*/
|
|
33
80
|
parse( json, onLoad ) {
|
|
34
81
|
|
|
35
82
|
this._nodesJSON = json.nodes;
|
|
@@ -42,6 +89,13 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
42
89
|
|
|
43
90
|
}
|
|
44
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Parses the node objects from the given JSON and textures.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} json - The JSON definition
|
|
96
|
+
* @param {Object<String,Texture>} textures - The texture library.
|
|
97
|
+
* @return {Object<String,Node>}. The parsed nodes.
|
|
98
|
+
*/
|
|
45
99
|
parseNodes( json, textures ) {
|
|
46
100
|
|
|
47
101
|
if ( json !== undefined ) {
|
|
@@ -58,6 +112,13 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
58
112
|
|
|
59
113
|
}
|
|
60
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Parses the node objects from the given JSON and textures.
|
|
117
|
+
*
|
|
118
|
+
* @param {Object} json - The JSON definition
|
|
119
|
+
* @param {Object<String,Texture>} textures - The texture library.
|
|
120
|
+
* @return {Object<String,NodeMaterial>}. The parsed materials.
|
|
121
|
+
*/
|
|
61
122
|
parseMaterials( json, textures ) {
|
|
62
123
|
|
|
63
124
|
const materials = {};
|