@plastic-software/three 0.167.3 → 0.174.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 +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -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 +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- 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/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- 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 +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- 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 +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -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 +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -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 +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -7,16 +7,48 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
7
7
|
|
|
8
8
|
const _vector = /*@__PURE__*/ new Vector3();
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* This displays a cone shaped helper object for a {@link SpotLight}.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* const spotLight = new THREE.SpotLight( 0xffffff );
|
|
15
|
+
* spotLight.position.set( 10, 10, 10 );
|
|
16
|
+
* scene.add( spotLight );
|
|
17
|
+
*
|
|
18
|
+
* const spotLightHelper = new THREE.SpotLightHelper( spotLight );
|
|
19
|
+
* scene.add( spotLightHelper );
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @augments Object3D
|
|
23
|
+
*/
|
|
10
24
|
class SpotLightHelper extends Object3D {
|
|
11
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new spot light helper.
|
|
28
|
+
*
|
|
29
|
+
* @param {HemisphereLight} light - The light to be visualized.
|
|
30
|
+
* @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
|
|
31
|
+
* the color of the light.
|
|
32
|
+
*/
|
|
12
33
|
constructor( light, color ) {
|
|
13
34
|
|
|
14
35
|
super();
|
|
15
36
|
|
|
37
|
+
/**
|
|
38
|
+
* The light being visualized.
|
|
39
|
+
*
|
|
40
|
+
* @type {SpotLight}
|
|
41
|
+
*/
|
|
16
42
|
this.light = light;
|
|
17
43
|
|
|
18
44
|
this.matrixAutoUpdate = false;
|
|
19
45
|
|
|
46
|
+
/**
|
|
47
|
+
* The color parameter passed in the constructor.
|
|
48
|
+
* If not set, the helper will take the color of the light.
|
|
49
|
+
*
|
|
50
|
+
* @type {number|Color|string}
|
|
51
|
+
*/
|
|
20
52
|
this.color = color;
|
|
21
53
|
|
|
22
54
|
this.type = 'SpotLightHelper';
|
|
@@ -54,6 +86,10 @@ class SpotLightHelper extends Object3D {
|
|
|
54
86
|
|
|
55
87
|
}
|
|
56
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
91
|
+
* method whenever this instance is no longer used in your app.
|
|
92
|
+
*/
|
|
57
93
|
dispose() {
|
|
58
94
|
|
|
59
95
|
this.cone.geometry.dispose();
|
|
@@ -61,6 +97,10 @@ class SpotLightHelper extends Object3D {
|
|
|
61
97
|
|
|
62
98
|
}
|
|
63
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Updates the helper to match the position and direction of the
|
|
102
|
+
* light being visualized.
|
|
103
|
+
*/
|
|
64
104
|
update() {
|
|
65
105
|
|
|
66
106
|
this.light.updateWorldMatrix( true, false );
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { Light } from './Light.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This light globally illuminates all objects in the scene equally.
|
|
5
|
+
*
|
|
6
|
+
* It cannot be used to cast shadows as it does not have a direction.
|
|
7
|
+
*
|
|
8
|
+
* ```js
|
|
9
|
+
* const light = new THREE.AmbientLight( 0x404040 ); // soft white light
|
|
10
|
+
* scene.add( light );
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @augments Light
|
|
14
|
+
*/
|
|
3
15
|
class AmbientLight extends Light {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new ambient light.
|
|
19
|
+
*
|
|
20
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
21
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
22
|
+
*/
|
|
5
23
|
constructor( color, intensity ) {
|
|
6
24
|
|
|
7
25
|
super( color, intensity );
|
|
8
26
|
|
|
27
|
+
/**
|
|
28
|
+
* This flag can be used for type testing.
|
|
29
|
+
*
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
* @readonly
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
9
34
|
this.isAmbientLight = true;
|
|
10
35
|
|
|
11
36
|
this.type = 'AmbientLight';
|
|
@@ -2,12 +2,52 @@ import { Light } from './Light.js';
|
|
|
2
2
|
import { DirectionalLightShadow } from './DirectionalLightShadow.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A light that gets emitted in a specific direction. This light will behave
|
|
7
|
+
* as though it is infinitely far away and the rays produced from it are all
|
|
8
|
+
* parallel. The common use case for this is to simulate daylight; the sun is
|
|
9
|
+
* far enough away that its position can be considered to be infinite, and
|
|
10
|
+
* all light rays coming from it are parallel.
|
|
11
|
+
*
|
|
12
|
+
* A common point of confusion for directional lights is that setting the
|
|
13
|
+
* rotation has no effect. This is because three.js's DirectionalLight is the
|
|
14
|
+
* equivalent to what is often called a 'Target Direct Light' in other
|
|
15
|
+
* applications.
|
|
16
|
+
*
|
|
17
|
+
* This means that its direction is calculated as pointing from the light's
|
|
18
|
+
* {@link Object3D#position} to the {@link DirectionalLight#target} position
|
|
19
|
+
* (as opposed to a 'Free Direct Light' that just has a rotation
|
|
20
|
+
* component).
|
|
21
|
+
*
|
|
22
|
+
* This light can cast shadows - see the {@link DirectionalLightShadow} for details.
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* // White directional light at half intensity shining from the top.
|
|
26
|
+
* const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
|
|
27
|
+
* scene.add( directionalLight );
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @augments Light
|
|
31
|
+
*/
|
|
5
32
|
class DirectionalLight extends Light {
|
|
6
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Constructs a new directional light.
|
|
36
|
+
*
|
|
37
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
38
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
39
|
+
*/
|
|
7
40
|
constructor( color, intensity ) {
|
|
8
41
|
|
|
9
42
|
super( color, intensity );
|
|
10
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This flag can be used for type testing.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @readonly
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
11
51
|
this.isDirectionalLight = true;
|
|
12
52
|
|
|
13
53
|
this.type = 'DirectionalLight';
|
|
@@ -15,8 +55,25 @@ class DirectionalLight extends Light {
|
|
|
15
55
|
this.position.copy( Object3D.DEFAULT_UP );
|
|
16
56
|
this.updateMatrix();
|
|
17
57
|
|
|
58
|
+
/**
|
|
59
|
+
* The directional light points from its position to the
|
|
60
|
+
* target's position.
|
|
61
|
+
*
|
|
62
|
+
* For the target's position to be changed to anything other
|
|
63
|
+
* than the default, it must be added to the scene.
|
|
64
|
+
*
|
|
65
|
+
* It is also possible to set the target to be another 3D object
|
|
66
|
+
* in the scene. The light will now track the target object.
|
|
67
|
+
*
|
|
68
|
+
* @type {Object3D}
|
|
69
|
+
*/
|
|
18
70
|
this.target = new Object3D();
|
|
19
71
|
|
|
72
|
+
/**
|
|
73
|
+
* This property holds the light's shadow configuration.
|
|
74
|
+
*
|
|
75
|
+
* @type {DirectionalLightShadow}
|
|
76
|
+
*/
|
|
20
77
|
this.shadow = new DirectionalLightShadow();
|
|
21
78
|
|
|
22
79
|
}
|
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
import { LightShadow } from './LightShadow.js';
|
|
2
2
|
import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Represents the shadow configuration of directional lights.
|
|
6
|
+
*
|
|
7
|
+
* @augments LightShadow
|
|
8
|
+
*/
|
|
4
9
|
class DirectionalLightShadow extends LightShadow {
|
|
5
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new directional light shadow.
|
|
13
|
+
*/
|
|
6
14
|
constructor() {
|
|
7
15
|
|
|
8
16
|
super( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );
|
|
9
17
|
|
|
18
|
+
/**
|
|
19
|
+
* This flag can be used for type testing.
|
|
20
|
+
*
|
|
21
|
+
* @type {boolean}
|
|
22
|
+
* @readonly
|
|
23
|
+
* @default true
|
|
24
|
+
*/
|
|
10
25
|
this.isDirectionalLightShadow = true;
|
|
11
26
|
|
|
12
27
|
}
|
|
@@ -2,12 +2,39 @@ import { Light } from './Light.js';
|
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* A light source positioned directly above the scene, with color fading from
|
|
7
|
+
* the sky color to the ground color.
|
|
8
|
+
*
|
|
9
|
+
* This light cannot be used to cast shadows.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
|
|
13
|
+
* scene.add( light );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments Light
|
|
17
|
+
*/
|
|
5
18
|
class HemisphereLight extends Light {
|
|
6
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new hemisphere light.
|
|
22
|
+
*
|
|
23
|
+
* @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.
|
|
24
|
+
* @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.
|
|
25
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
26
|
+
*/
|
|
7
27
|
constructor( skyColor, groundColor, intensity ) {
|
|
8
28
|
|
|
9
29
|
super( skyColor, intensity );
|
|
10
30
|
|
|
31
|
+
/**
|
|
32
|
+
* This flag can be used for type testing.
|
|
33
|
+
*
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
* @readonly
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
11
38
|
this.isHemisphereLight = true;
|
|
12
39
|
|
|
13
40
|
this.type = 'HemisphereLight';
|
|
@@ -15,6 +42,11 @@ class HemisphereLight extends Light {
|
|
|
15
42
|
this.position.copy( Object3D.DEFAULT_UP );
|
|
16
43
|
this.updateMatrix();
|
|
17
44
|
|
|
45
|
+
/**
|
|
46
|
+
* The light's ground color.
|
|
47
|
+
*
|
|
48
|
+
* @type {Color}
|
|
49
|
+
*/
|
|
18
50
|
this.groundColor = new Color( groundColor );
|
|
19
51
|
|
|
20
52
|
}
|
package/src/lights/Light.js
CHANGED
|
@@ -1,21 +1,57 @@
|
|
|
1
1
|
import { Object3D } from '../core/Object3D.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for lights - all other light types inherit the
|
|
6
|
+
* properties and methods described here.
|
|
7
|
+
*
|
|
8
|
+
* @abstract
|
|
9
|
+
* @augments Object3D
|
|
10
|
+
*/
|
|
4
11
|
class Light extends Object3D {
|
|
5
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new light.
|
|
15
|
+
*
|
|
16
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
17
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
18
|
+
*/
|
|
6
19
|
constructor( color, intensity = 1 ) {
|
|
7
20
|
|
|
8
21
|
super();
|
|
9
22
|
|
|
23
|
+
/**
|
|
24
|
+
* This flag can be used for type testing.
|
|
25
|
+
*
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @readonly
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
10
30
|
this.isLight = true;
|
|
11
31
|
|
|
12
32
|
this.type = 'Light';
|
|
13
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The light's color.
|
|
36
|
+
*
|
|
37
|
+
* @type {Color}
|
|
38
|
+
*/
|
|
14
39
|
this.color = new Color( color );
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The light's intensity.
|
|
43
|
+
*
|
|
44
|
+
* @type {number}
|
|
45
|
+
* @default 1
|
|
46
|
+
*/
|
|
15
47
|
this.intensity = intensity;
|
|
16
48
|
|
|
17
49
|
}
|
|
18
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
53
|
+
* method whenever this instance is no longer used in your app.
|
|
54
|
+
*/
|
|
19
55
|
dispose() {
|
|
20
56
|
|
|
21
57
|
// Empty here in base class; some subclasses override.
|
package/src/lights/LightProbe.js
CHANGED
|
@@ -1,14 +1,51 @@
|
|
|
1
1
|
import { SphericalHarmonics3 } from '../math/SphericalHarmonics3.js';
|
|
2
2
|
import { Light } from './Light.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Light probes are an alternative way of adding light to a 3D scene. Unlike
|
|
6
|
+
* classical light sources (e.g. directional, point or spot lights), light
|
|
7
|
+
* probes do not emit light. Instead they store information about light
|
|
8
|
+
* passing through 3D space. During rendering, the light that hits a 3D
|
|
9
|
+
* object is approximated by using the data from the light probe.
|
|
10
|
+
*
|
|
11
|
+
* Light probes are usually created from (radiance) environment maps. The
|
|
12
|
+
* class {@link LightProbeGenerator} can be used to create light probes from
|
|
13
|
+
* cube textures or render targets. However, light estimation data could also
|
|
14
|
+
* be provided in other forms e.g. by WebXR. This enables the rendering of
|
|
15
|
+
* augmented reality content that reacts to real world lighting.
|
|
16
|
+
*
|
|
17
|
+
* The current probe implementation in three.js supports so-called diffuse
|
|
18
|
+
* light probes. This type of light probe is functionally equivalent to an
|
|
19
|
+
* irradiance environment map.
|
|
20
|
+
*
|
|
21
|
+
* @augments Light
|
|
22
|
+
*/
|
|
4
23
|
class LightProbe extends Light {
|
|
5
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new light probe.
|
|
27
|
+
*
|
|
28
|
+
* @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.
|
|
29
|
+
* @param {number} [intensity=1] - The light's strength/intensity.
|
|
30
|
+
*/
|
|
6
31
|
constructor( sh = new SphericalHarmonics3(), intensity = 1 ) {
|
|
7
32
|
|
|
8
33
|
super( undefined, intensity );
|
|
9
34
|
|
|
35
|
+
/**
|
|
36
|
+
* This flag can be used for type testing.
|
|
37
|
+
*
|
|
38
|
+
* @type {boolean}
|
|
39
|
+
* @readonly
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
10
42
|
this.isLightProbe = true;
|
|
11
43
|
|
|
44
|
+
/**
|
|
45
|
+
* A light probe uses spherical harmonics to encode lighting information.
|
|
46
|
+
*
|
|
47
|
+
* @type {SphericalHarmonics3}
|
|
48
|
+
*/
|
|
12
49
|
this.sh = sh;
|
|
13
50
|
|
|
14
51
|
}
|
|
@@ -23,6 +60,12 @@ class LightProbe extends Light {
|
|
|
23
60
|
|
|
24
61
|
}
|
|
25
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Deserializes the light prove from the given JSON.
|
|
65
|
+
*
|
|
66
|
+
* @param {Object} json - The JSON holding the serialized light probe.
|
|
67
|
+
* @return {LightProbe} A reference to this light probe.
|
|
68
|
+
*/
|
|
26
69
|
fromJSON( json ) {
|
|
27
70
|
|
|
28
71
|
this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
|
|
@@ -8,26 +8,137 @@ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
|
|
|
8
8
|
const _lightPositionWorld = /*@__PURE__*/ new Vector3();
|
|
9
9
|
const _lookTarget = /*@__PURE__*/ new Vector3();
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Abstract base class for light shadow classes. These classes
|
|
13
|
+
* represent the shadow configuration for different ligth types.
|
|
14
|
+
*
|
|
15
|
+
* @abstract
|
|
16
|
+
*/
|
|
11
17
|
class LightShadow {
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new light shadow.
|
|
21
|
+
*
|
|
22
|
+
* @param {Camera} camera - The light's view of the world.
|
|
23
|
+
*/
|
|
13
24
|
constructor( camera ) {
|
|
14
25
|
|
|
26
|
+
/**
|
|
27
|
+
* The light's view of the world.
|
|
28
|
+
*
|
|
29
|
+
* @type {Camera}
|
|
30
|
+
*/
|
|
15
31
|
this.camera = camera;
|
|
16
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The intensity of the shadow. The default is `1`.
|
|
35
|
+
* Valid values are in the range `[0, 1]`.
|
|
36
|
+
*
|
|
37
|
+
* @type {number}
|
|
38
|
+
* @default 1
|
|
39
|
+
*/
|
|
17
40
|
this.intensity = 1;
|
|
18
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Shadow map bias, how much to add or subtract from the normalized depth
|
|
44
|
+
* when deciding whether a surface is in shadow.
|
|
45
|
+
*
|
|
46
|
+
* The default is `0`. Very tiny adjustments here (in the order of `0.0001`)
|
|
47
|
+
* may help reduce artifacts in shadows.
|
|
48
|
+
*
|
|
49
|
+
* @type {number}
|
|
50
|
+
* @default 0
|
|
51
|
+
*/
|
|
19
52
|
this.bias = 0;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Defines how much the position used to query the shadow map is offset along
|
|
56
|
+
* the object normal. The default is `0`. Increasing this value can be used to
|
|
57
|
+
* reduce shadow acne especially in large scenes where light shines onto
|
|
58
|
+
* geometry at a shallow angle. The cost is that shadows may appear distorted.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 0
|
|
62
|
+
*/
|
|
20
63
|
this.normalBias = 0;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Setting this to values greater than 1 will blur the edges of the shadow.
|
|
67
|
+
* High values will cause unwanted banding effects in the shadows - a greater
|
|
68
|
+
* map size will allow for a higher value to be used here before these effects
|
|
69
|
+
* become visible.
|
|
70
|
+
*
|
|
71
|
+
* The property has no effect when the shadow map type is `PCFSoftShadowMap` and
|
|
72
|
+
* and it is recommended to increase softness by decreasing the shadow map size instead.
|
|
73
|
+
*
|
|
74
|
+
* The property has no effect when the shadow map type is `BasicShadowMap`.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 1
|
|
78
|
+
*/
|
|
21
79
|
this.radius = 1;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The amount of samples to use when blurring a VSM shadow map.
|
|
83
|
+
*
|
|
84
|
+
* @type {number}
|
|
85
|
+
* @default 8
|
|
86
|
+
*/
|
|
22
87
|
this.blurSamples = 8;
|
|
23
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Defines the width and height of the shadow map. Higher values give better quality
|
|
91
|
+
* shadows at the cost of computation time. Values must be powers of two.
|
|
92
|
+
*
|
|
93
|
+
* @type {Vector2}
|
|
94
|
+
* @default (512,512)
|
|
95
|
+
*/
|
|
24
96
|
this.mapSize = new Vector2( 512, 512 );
|
|
25
97
|
|
|
98
|
+
/**
|
|
99
|
+
* The depth map generated using the internal camera; a location beyond a
|
|
100
|
+
* pixel's depth is in shadow. Computed internally during rendering.
|
|
101
|
+
*
|
|
102
|
+
* @type {?RenderTarget}
|
|
103
|
+
* @default null
|
|
104
|
+
*/
|
|
26
105
|
this.map = null;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* The distribution map generated using the internal camera; an occlusion is
|
|
109
|
+
* calculated based on the distribution of depths. Computed internally during
|
|
110
|
+
* rendering.
|
|
111
|
+
*
|
|
112
|
+
* @type {?RenderTarget}
|
|
113
|
+
* @default null
|
|
114
|
+
*/
|
|
27
115
|
this.mapPass = null;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Model to shadow camera space, to compute location and depth in shadow map.
|
|
119
|
+
* This is computed internally during rendering.
|
|
120
|
+
*
|
|
121
|
+
* @type {Matrix4}
|
|
122
|
+
*/
|
|
28
123
|
this.matrix = new Matrix4();
|
|
29
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Enables automatic updates of the light's shadow. If you do not require dynamic
|
|
127
|
+
* lighting / shadows, you may set this to `false`.
|
|
128
|
+
*
|
|
129
|
+
* @type {boolean}
|
|
130
|
+
* @default true
|
|
131
|
+
*/
|
|
30
132
|
this.autoUpdate = true;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* When set to `true`, shadow maps will be updated in the next `render` call.
|
|
136
|
+
* If you have set {@link LightShadow#autoUpdate} to `false`, you will need to
|
|
137
|
+
* set this property to `true` and then make a render call to update the light's shadow.
|
|
138
|
+
*
|
|
139
|
+
* @type {boolean}
|
|
140
|
+
* @default false
|
|
141
|
+
*/
|
|
31
142
|
this.needsUpdate = false;
|
|
32
143
|
|
|
33
144
|
this._frustum = new Frustum();
|
|
@@ -43,18 +154,34 @@ class LightShadow {
|
|
|
43
154
|
|
|
44
155
|
}
|
|
45
156
|
|
|
157
|
+
/**
|
|
158
|
+
* Used internally by the renderer to get the number of viewports that need
|
|
159
|
+
* to be rendered for this shadow.
|
|
160
|
+
*
|
|
161
|
+
* @return {number} The viewport count.
|
|
162
|
+
*/
|
|
46
163
|
getViewportCount() {
|
|
47
164
|
|
|
48
165
|
return this._viewportCount;
|
|
49
166
|
|
|
50
167
|
}
|
|
51
168
|
|
|
169
|
+
/**
|
|
170
|
+
* Gets the shadow cameras frustum. Used internally by the renderer to cull objects.
|
|
171
|
+
*
|
|
172
|
+
* @return {Frustum} The shadow camera frustum.
|
|
173
|
+
*/
|
|
52
174
|
getFrustum() {
|
|
53
175
|
|
|
54
176
|
return this._frustum;
|
|
55
177
|
|
|
56
178
|
}
|
|
57
179
|
|
|
180
|
+
/**
|
|
181
|
+
* Update the matrices for the camera and shadow, used internally by the renderer.
|
|
182
|
+
*
|
|
183
|
+
* @param {Light} light - The light for which the shadow is being rendered.
|
|
184
|
+
*/
|
|
58
185
|
updateMatrices( light ) {
|
|
59
186
|
|
|
60
187
|
const shadowCamera = this.camera;
|
|
@@ -81,18 +208,33 @@ class LightShadow {
|
|
|
81
208
|
|
|
82
209
|
}
|
|
83
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Returns a viewport definition for the given viewport index.
|
|
213
|
+
*
|
|
214
|
+
* @param {number} viewportIndex - The viewport index.
|
|
215
|
+
* @return {Vector4} The viewport.
|
|
216
|
+
*/
|
|
84
217
|
getViewport( viewportIndex ) {
|
|
85
218
|
|
|
86
219
|
return this._viewports[ viewportIndex ];
|
|
87
220
|
|
|
88
221
|
}
|
|
89
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Returns the frame extends.
|
|
225
|
+
*
|
|
226
|
+
* @return {Vector2} The frame extends.
|
|
227
|
+
*/
|
|
90
228
|
getFrameExtents() {
|
|
91
229
|
|
|
92
230
|
return this._frameExtents;
|
|
93
231
|
|
|
94
232
|
}
|
|
95
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
236
|
+
* method whenever this instance is no longer used in your app.
|
|
237
|
+
*/
|
|
96
238
|
dispose() {
|
|
97
239
|
|
|
98
240
|
if ( this.map ) {
|
|
@@ -109,6 +251,12 @@ class LightShadow {
|
|
|
109
251
|
|
|
110
252
|
}
|
|
111
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Copies the values of the given light shadow instance to this instance.
|
|
256
|
+
*
|
|
257
|
+
* @param {LightShadow} source - The light shadow to copy.
|
|
258
|
+
* @return {LightShadow} A reference to this light shadow instance.
|
|
259
|
+
*/
|
|
112
260
|
copy( source ) {
|
|
113
261
|
|
|
114
262
|
this.camera = source.camera.clone();
|
|
@@ -124,12 +272,23 @@ class LightShadow {
|
|
|
124
272
|
|
|
125
273
|
}
|
|
126
274
|
|
|
275
|
+
/**
|
|
276
|
+
* Returns a new light shadow instance with copied values from this instance.
|
|
277
|
+
*
|
|
278
|
+
* @return {LightShadow} A clone of this instance.
|
|
279
|
+
*/
|
|
127
280
|
clone() {
|
|
128
281
|
|
|
129
282
|
return new this.constructor().copy( this );
|
|
130
283
|
|
|
131
284
|
}
|
|
132
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Serializes the light shadow into JSON.
|
|
288
|
+
*
|
|
289
|
+
* @return {Object} A JSON object representing the serialized light shadow.
|
|
290
|
+
* @see {@link ObjectLoader#parse}
|
|
291
|
+
*/
|
|
133
292
|
toJSON() {
|
|
134
293
|
|
|
135
294
|
const object = {};
|
package/src/lights/PointLight.js
CHANGED
|
@@ -1,23 +1,82 @@
|
|
|
1
1
|
import { Light } from './Light.js';
|
|
2
2
|
import { PointLightShadow } from './PointLightShadow.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A light that gets emitted from a single point in all directions. A common
|
|
6
|
+
* use case for this is to replicate the light emitted from a bare
|
|
7
|
+
* lightbulb.
|
|
8
|
+
*
|
|
9
|
+
* This light can cast shadows - see the {@link PointLightShadow} for details.
|
|
10
|
+
*
|
|
11
|
+
* ```js
|
|
12
|
+
* const light = new THREE.PointLight( 0xff0000, 1, 100 );
|
|
13
|
+
* light.position.set( 50, 50, 50 );
|
|
14
|
+
* scene.add( light );
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @augments Light
|
|
18
|
+
*/
|
|
4
19
|
class PointLight extends Light {
|
|
5
20
|
|
|
21
|
+
/**
|
|
22
|
+
* Constructs a new point light.
|
|
23
|
+
*
|
|
24
|
+
* @param {(number|Color|string)} [color=0xffffff] - The light's color.
|
|
25
|
+
* @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
|
|
26
|
+
* @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
|
|
27
|
+
* @param {number} [decay=2] - The amount the light dims along the distance of the light.
|
|
28
|
+
*/
|
|
6
29
|
constructor( color, intensity, distance = 0, decay = 2 ) {
|
|
7
30
|
|
|
8
31
|
super( color, intensity );
|
|
9
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
10
40
|
this.isPointLight = true;
|
|
11
41
|
|
|
12
42
|
this.type = 'PointLight';
|
|
13
43
|
|
|
44
|
+
/**
|
|
45
|
+
* When distance is zero, light will attenuate according to inverse-square
|
|
46
|
+
* law to infinite distance. When distance is non-zero, light will attenuate
|
|
47
|
+
* according to inverse-square law until near the distance cutoff, where it
|
|
48
|
+
* will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not
|
|
49
|
+
* physically correct.
|
|
50
|
+
*
|
|
51
|
+
* @type {number}
|
|
52
|
+
* @default 0
|
|
53
|
+
*/
|
|
14
54
|
this.distance = distance;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The amount the light dims along the distance of the light. In context of
|
|
58
|
+
* physically-correct rendering the default value should not be changed.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
* @default 2
|
|
62
|
+
*/
|
|
15
63
|
this.decay = decay;
|
|
16
64
|
|
|
65
|
+
/**
|
|
66
|
+
* This property holds the light's shadow configuration.
|
|
67
|
+
*
|
|
68
|
+
* @type {PointLightShadow}
|
|
69
|
+
*/
|
|
17
70
|
this.shadow = new PointLightShadow();
|
|
18
71
|
|
|
19
72
|
}
|
|
20
73
|
|
|
74
|
+
/**
|
|
75
|
+
* The light's power. Power is the luminous power of the light measured in lumens (lm).
|
|
76
|
+
* Changing the power will also change the light's intensity.
|
|
77
|
+
*
|
|
78
|
+
* @type {number}
|
|
79
|
+
*/
|
|
21
80
|
get power() {
|
|
22
81
|
|
|
23
82
|
// compute the light's luminous power (in lumens) from its intensity (in candela)
|