@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
|
@@ -9,21 +9,62 @@ const _quaternion = /*@__PURE__*/ new Quaternion();
|
|
|
9
9
|
const _scale = /*@__PURE__*/ new Vector3();
|
|
10
10
|
const _orientation = /*@__PURE__*/ new Vector3();
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* The class represents a virtual listener of the all positional and non-positional audio effects
|
|
14
|
+
* in the scene. A three.js application usually creates a single listener. It is a mandatory
|
|
15
|
+
* constructor parameter for audios entities like {@link Audio} and {@link PositionalAudio}.
|
|
16
|
+
*
|
|
17
|
+
* In most cases, the listener object is a child of the camera. So the 3D transformation of the
|
|
18
|
+
* camera represents the 3D transformation of the listener.
|
|
19
|
+
*
|
|
20
|
+
* @augments Object3D
|
|
21
|
+
*/
|
|
12
22
|
class AudioListener extends Object3D {
|
|
13
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new audio listener.
|
|
26
|
+
*/
|
|
14
27
|
constructor() {
|
|
15
28
|
|
|
16
29
|
super();
|
|
17
30
|
|
|
18
31
|
this.type = 'AudioListener';
|
|
19
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The native audio context.
|
|
35
|
+
*
|
|
36
|
+
* @type {AudioContext}
|
|
37
|
+
* @readonly
|
|
38
|
+
*/
|
|
20
39
|
this.context = AudioContext.getContext();
|
|
21
40
|
|
|
41
|
+
/**
|
|
42
|
+
* The gain node used for volume control.
|
|
43
|
+
*
|
|
44
|
+
* @type {GainNode}
|
|
45
|
+
* @readonly
|
|
46
|
+
*/
|
|
22
47
|
this.gain = this.context.createGain();
|
|
23
48
|
this.gain.connect( this.context.destination );
|
|
24
49
|
|
|
50
|
+
/**
|
|
51
|
+
* An optional filter.
|
|
52
|
+
*
|
|
53
|
+
* Defined via {@AudioListener#setFilter}.
|
|
54
|
+
*
|
|
55
|
+
* @type {?AudioNode}
|
|
56
|
+
* @default null
|
|
57
|
+
* @readonly
|
|
58
|
+
*/
|
|
25
59
|
this.filter = null;
|
|
26
60
|
|
|
61
|
+
/**
|
|
62
|
+
* Time delta values required for `linearRampToValueAtTime()` usage.
|
|
63
|
+
*
|
|
64
|
+
* @type {number}
|
|
65
|
+
* @default 0
|
|
66
|
+
* @readonly
|
|
67
|
+
*/
|
|
27
68
|
this.timeDelta = 0;
|
|
28
69
|
|
|
29
70
|
// private
|
|
@@ -32,12 +73,24 @@ class AudioListener extends Object3D {
|
|
|
32
73
|
|
|
33
74
|
}
|
|
34
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Returns the listener's input node.
|
|
78
|
+
*
|
|
79
|
+
* This method is used by other audio nodes to connect to this listener.
|
|
80
|
+
*
|
|
81
|
+
* @return {GainNode} The input node.
|
|
82
|
+
*/
|
|
35
83
|
getInput() {
|
|
36
84
|
|
|
37
85
|
return this.gain;
|
|
38
86
|
|
|
39
87
|
}
|
|
40
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Removes the current filter from this listener.
|
|
91
|
+
*
|
|
92
|
+
* @return {AudioListener} A reference to this listener.
|
|
93
|
+
*/
|
|
41
94
|
removeFilter() {
|
|
42
95
|
|
|
43
96
|
if ( this.filter !== null ) {
|
|
@@ -53,12 +106,23 @@ class AudioListener extends Object3D {
|
|
|
53
106
|
|
|
54
107
|
}
|
|
55
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Returns the current set filter.
|
|
111
|
+
*
|
|
112
|
+
* @return {AudioNode} The filter.
|
|
113
|
+
*/
|
|
56
114
|
getFilter() {
|
|
57
115
|
|
|
58
116
|
return this.filter;
|
|
59
117
|
|
|
60
118
|
}
|
|
61
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Sets the given filter to this listener.
|
|
122
|
+
*
|
|
123
|
+
* @param {AudioNode} value - The filter to set.
|
|
124
|
+
* @return {AudioListener} A reference to this listener.
|
|
125
|
+
*/
|
|
62
126
|
setFilter( value ) {
|
|
63
127
|
|
|
64
128
|
if ( this.filter !== null ) {
|
|
@@ -80,12 +144,24 @@ class AudioListener extends Object3D {
|
|
|
80
144
|
|
|
81
145
|
}
|
|
82
146
|
|
|
147
|
+
/**
|
|
148
|
+
* Returns the applications master volume.
|
|
149
|
+
*
|
|
150
|
+
* @return {number} The master volume.
|
|
151
|
+
*/
|
|
83
152
|
getMasterVolume() {
|
|
84
153
|
|
|
85
154
|
return this.gain.gain.value;
|
|
86
155
|
|
|
87
156
|
}
|
|
88
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Sets the applications master volume. This volume setting affects
|
|
160
|
+
* all audio nodes in the scene.
|
|
161
|
+
*
|
|
162
|
+
* @param {number} value - The master volume to set.
|
|
163
|
+
* @return {AudioListener} A reference to this listener.
|
|
164
|
+
*/
|
|
89
165
|
setMasterVolume( value ) {
|
|
90
166
|
|
|
91
167
|
this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );
|
|
@@ -7,12 +7,54 @@ const _quaternion = /*@__PURE__*/ new Quaternion();
|
|
|
7
7
|
const _scale = /*@__PURE__*/ new Vector3();
|
|
8
8
|
const _orientation = /*@__PURE__*/ new Vector3();
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Represents a positional audio object.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* // create an AudioListener and add it to the camera
|
|
15
|
+
* const listener = new THREE.AudioListener();
|
|
16
|
+
* camera.add( listener );
|
|
17
|
+
*
|
|
18
|
+
* // create the PositionalAudio object (passing in the listener)
|
|
19
|
+
* const sound = new THREE.PositionalAudio( listener );
|
|
20
|
+
*
|
|
21
|
+
* // load a sound and set it as the PositionalAudio object's buffer
|
|
22
|
+
* const audioLoader = new THREE.AudioLoader();
|
|
23
|
+
* audioLoader.load( 'sounds/song.ogg', function( buffer ) {
|
|
24
|
+
* sound.setBuffer( buffer );
|
|
25
|
+
* sound.setRefDistance( 20 );
|
|
26
|
+
* sound.play();
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // create an object for the sound to play from
|
|
30
|
+
* const sphere = new THREE.SphereGeometry( 20, 32, 16 );
|
|
31
|
+
* const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
|
|
32
|
+
* const mesh = new THREE.Mesh( sphere, material );
|
|
33
|
+
* scene.add( mesh );
|
|
34
|
+
*
|
|
35
|
+
* // finally add the sound to the mesh
|
|
36
|
+
* mesh.add( sound );
|
|
37
|
+
*
|
|
38
|
+
* @augments Audio
|
|
39
|
+
*/
|
|
10
40
|
class PositionalAudio extends Audio {
|
|
11
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Constructs a positional audio.
|
|
44
|
+
*
|
|
45
|
+
* @param {AudioListener} listener - The global audio listener.
|
|
46
|
+
*/
|
|
12
47
|
constructor( listener ) {
|
|
13
48
|
|
|
14
49
|
super( listener );
|
|
15
50
|
|
|
51
|
+
/**
|
|
52
|
+
* The panner node represents the location, direction, and behavior of an audio
|
|
53
|
+
* source in 3D space.
|
|
54
|
+
*
|
|
55
|
+
* @type {PannerNode}
|
|
56
|
+
* @readonly
|
|
57
|
+
*/
|
|
16
58
|
this.panner = this.context.createPanner();
|
|
17
59
|
this.panner.panningModel = 'HRTF';
|
|
18
60
|
this.panner.connect( this.gain );
|
|
@@ -25,6 +67,8 @@ class PositionalAudio extends Audio {
|
|
|
25
67
|
|
|
26
68
|
this.panner.connect( this.gain );
|
|
27
69
|
|
|
70
|
+
return this;
|
|
71
|
+
|
|
28
72
|
}
|
|
29
73
|
|
|
30
74
|
disconnect() {
|
|
@@ -33,6 +77,8 @@ class PositionalAudio extends Audio {
|
|
|
33
77
|
|
|
34
78
|
this.panner.disconnect( this.gain );
|
|
35
79
|
|
|
80
|
+
return this;
|
|
81
|
+
|
|
36
82
|
}
|
|
37
83
|
|
|
38
84
|
getOutput() {
|
|
@@ -41,12 +87,25 @@ class PositionalAudio extends Audio {
|
|
|
41
87
|
|
|
42
88
|
}
|
|
43
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Returns the current reference distance.
|
|
92
|
+
*
|
|
93
|
+
* @return {number} The reference distance.
|
|
94
|
+
*/
|
|
44
95
|
getRefDistance() {
|
|
45
96
|
|
|
46
97
|
return this.panner.refDistance;
|
|
47
98
|
|
|
48
99
|
}
|
|
49
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Defines the reference distance for reducing volume as the audio source moves
|
|
103
|
+
* further from the listener – i.e. the distance at which the volume reduction
|
|
104
|
+
* starts taking effect.
|
|
105
|
+
*
|
|
106
|
+
* @param {number} value - The reference distance to set.
|
|
107
|
+
* @return {Audio} A reference to this instance.
|
|
108
|
+
*/
|
|
50
109
|
setRefDistance( value ) {
|
|
51
110
|
|
|
52
111
|
this.panner.refDistance = value;
|
|
@@ -55,12 +114,23 @@ class PositionalAudio extends Audio {
|
|
|
55
114
|
|
|
56
115
|
}
|
|
57
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Returns the current rolloff factor.
|
|
119
|
+
*
|
|
120
|
+
* @return {number} The rolloff factor.
|
|
121
|
+
*/
|
|
58
122
|
getRolloffFactor() {
|
|
59
123
|
|
|
60
124
|
return this.panner.rolloffFactor;
|
|
61
125
|
|
|
62
126
|
}
|
|
63
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Defines how quickly the volume is reduced as the source moves away from the listener.
|
|
130
|
+
*
|
|
131
|
+
* @param {number} value - The rolloff factor.
|
|
132
|
+
* @return {Audio} A reference to this instance.
|
|
133
|
+
*/
|
|
64
134
|
setRolloffFactor( value ) {
|
|
65
135
|
|
|
66
136
|
this.panner.rolloffFactor = value;
|
|
@@ -69,12 +139,27 @@ class PositionalAudio extends Audio {
|
|
|
69
139
|
|
|
70
140
|
}
|
|
71
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Returns the current distance model.
|
|
144
|
+
*
|
|
145
|
+
* @return {('linear'|'inverse'|'exponential')} The distance model.
|
|
146
|
+
*/
|
|
72
147
|
getDistanceModel() {
|
|
73
148
|
|
|
74
149
|
return this.panner.distanceModel;
|
|
75
150
|
|
|
76
151
|
}
|
|
77
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Defines which algorithm to use to reduce the volume of the audio source
|
|
155
|
+
* as it moves away from the listener.
|
|
156
|
+
*
|
|
157
|
+
* Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}
|
|
158
|
+
* for more details.
|
|
159
|
+
*
|
|
160
|
+
* @param {('linear'|'inverse'|'exponential')} value - The distance model to set.
|
|
161
|
+
* @return {Audio} A reference to this instance.
|
|
162
|
+
*/
|
|
78
163
|
setDistanceModel( value ) {
|
|
79
164
|
|
|
80
165
|
this.panner.distanceModel = value;
|
|
@@ -83,12 +168,26 @@ class PositionalAudio extends Audio {
|
|
|
83
168
|
|
|
84
169
|
}
|
|
85
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Returns the current max distance.
|
|
173
|
+
*
|
|
174
|
+
* @return {number} The max distance.
|
|
175
|
+
*/
|
|
86
176
|
getMaxDistance() {
|
|
87
177
|
|
|
88
178
|
return this.panner.maxDistance;
|
|
89
179
|
|
|
90
180
|
}
|
|
91
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Defines the maximum distance between the audio source and the listener,
|
|
184
|
+
* after which the volume is not reduced any further.
|
|
185
|
+
*
|
|
186
|
+
* This value is used only by the `linear` distance model.
|
|
187
|
+
*
|
|
188
|
+
* @param {number} value - The max distance.
|
|
189
|
+
* @return {Audio} A reference to this instance.
|
|
190
|
+
*/
|
|
92
191
|
setMaxDistance( value ) {
|
|
93
192
|
|
|
94
193
|
this.panner.maxDistance = value;
|
|
@@ -97,6 +196,14 @@ class PositionalAudio extends Audio {
|
|
|
97
196
|
|
|
98
197
|
}
|
|
99
198
|
|
|
199
|
+
/**
|
|
200
|
+
* Sets the directional cone in which the audio can be listened.
|
|
201
|
+
*
|
|
202
|
+
* @param {number} coneInnerAngle - An angle, in degrees, of a cone inside of which there will be no volume reduction.
|
|
203
|
+
* @param {number} coneOuterAngle - An angle, in degrees, of a cone outside of which the volume will be reduced by a constant value, defined by the `coneOuterGain` parameter.
|
|
204
|
+
* @param {number} coneOuterGain - The amount of volume reduction outside the cone defined by the `coneOuterAngle`. When set to `0`, no sound can be heard.
|
|
205
|
+
* @return {Audio} A reference to this instance.
|
|
206
|
+
*/
|
|
100
207
|
setDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {
|
|
101
208
|
|
|
102
209
|
this.panner.coneInnerAngle = coneInnerAngle;
|
|
@@ -1,14 +1,43 @@
|
|
|
1
1
|
import { PerspectiveCamera } from './PerspectiveCamera.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This type of camera can be used in order to efficiently render a scene with a
|
|
5
|
+
* predefined set of cameras. This is an important performance aspect for
|
|
6
|
+
* rendering VR scenes.
|
|
7
|
+
*
|
|
8
|
+
* An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory
|
|
9
|
+
* to define for each sub camera the `viewport` property which determines the
|
|
10
|
+
* part of the viewport that is rendered with this camera.
|
|
11
|
+
*
|
|
12
|
+
* @augments PerspectiveCamera
|
|
13
|
+
*/
|
|
3
14
|
class ArrayCamera extends PerspectiveCamera {
|
|
4
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a new array camera.
|
|
18
|
+
*
|
|
19
|
+
* @param {Array<PerspectiveCamera>} [array=[]] - An array of perspective sub cameras.
|
|
20
|
+
*/
|
|
5
21
|
constructor( array = [] ) {
|
|
6
22
|
|
|
7
23
|
super();
|
|
8
24
|
|
|
25
|
+
/**
|
|
26
|
+
* This flag can be used for type testing.
|
|
27
|
+
*
|
|
28
|
+
* @type {boolean}
|
|
29
|
+
* @readonly
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
9
32
|
this.isArrayCamera = true;
|
|
10
33
|
|
|
34
|
+
/**
|
|
35
|
+
* An array of perspective sub cameras.
|
|
36
|
+
*
|
|
37
|
+
* @type {Array<PerspectiveCamera>}
|
|
38
|
+
*/
|
|
11
39
|
this.cameras = array;
|
|
40
|
+
this.index = 0;
|
|
12
41
|
|
|
13
42
|
}
|
|
14
43
|
|
package/src/cameras/Camera.js
CHANGED
|
@@ -2,21 +2,59 @@ import { WebGLCoordinateSystem } from '../constants.js';
|
|
|
2
2
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
3
3
|
import { Object3D } from '../core/Object3D.js';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Abstract base class for cameras. This class should always be inherited
|
|
7
|
+
* when you build a new camera.
|
|
8
|
+
*
|
|
9
|
+
* @abstract
|
|
10
|
+
* @augments Object3D
|
|
11
|
+
*/
|
|
5
12
|
class Camera extends Object3D {
|
|
6
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new camera.
|
|
16
|
+
*/
|
|
7
17
|
constructor() {
|
|
8
18
|
|
|
9
19
|
super();
|
|
10
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
11
28
|
this.isCamera = true;
|
|
12
29
|
|
|
13
30
|
this.type = 'Camera';
|
|
14
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The inverse of the camera's world matrix.
|
|
34
|
+
*
|
|
35
|
+
* @type {Matrix4}
|
|
36
|
+
*/
|
|
15
37
|
this.matrixWorldInverse = new Matrix4();
|
|
16
38
|
|
|
39
|
+
/**
|
|
40
|
+
* The camera's projection matrix.
|
|
41
|
+
*
|
|
42
|
+
* @type {Matrix4}
|
|
43
|
+
*/
|
|
17
44
|
this.projectionMatrix = new Matrix4();
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The inverse of the camera's projection matrix.
|
|
48
|
+
*
|
|
49
|
+
* @type {Matrix4}
|
|
50
|
+
*/
|
|
18
51
|
this.projectionMatrixInverse = new Matrix4();
|
|
19
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The coordinate system in which the camera is used.
|
|
55
|
+
*
|
|
56
|
+
* @type {(WebGLCoordinateSystem|WebGPUCoordinateSystem)}
|
|
57
|
+
*/
|
|
20
58
|
this.coordinateSystem = WebGLCoordinateSystem;
|
|
21
59
|
|
|
22
60
|
}
|
|
@@ -36,6 +74,15 @@ class Camera extends Object3D {
|
|
|
36
74
|
|
|
37
75
|
}
|
|
38
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Returns a vector representing the ("look") direction of the 3D object in world space.
|
|
79
|
+
*
|
|
80
|
+
* This method is overwritten since cameras have a different forward vector compared to other
|
|
81
|
+
* 3D objects. A camera looks down its local, negative z-axis by default.
|
|
82
|
+
*
|
|
83
|
+
* @param {Vector3} target - The target vector the result is stored to.
|
|
84
|
+
* @return {Vector3} The 3D object's direction in world space.
|
|
85
|
+
*/
|
|
39
86
|
getWorldDirection( target ) {
|
|
40
87
|
|
|
41
88
|
return super.getWorldDirection( target ).negate();
|
|
@@ -5,16 +5,72 @@ import { PerspectiveCamera } from './PerspectiveCamera.js';
|
|
|
5
5
|
const fov = - 90; // negative fov is not an error
|
|
6
6
|
const aspect = 1;
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* A special type of camera that is positioned in 3D space to render its surroundings into a
|
|
10
|
+
* cube render target. The render target can then be used as an environment map for rendering
|
|
11
|
+
* realtime reflections in your scene.
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* // Create cube render target
|
|
15
|
+
* const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 256, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
|
|
16
|
+
*
|
|
17
|
+
* // Create cube camera
|
|
18
|
+
* const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
|
|
19
|
+
* scene.add( cubeCamera );
|
|
20
|
+
*
|
|
21
|
+
* // Create car
|
|
22
|
+
* const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
|
|
23
|
+
* const car = new THREE.Mesh( carGeometry, chromeMaterial );
|
|
24
|
+
* scene.add( car );
|
|
25
|
+
*
|
|
26
|
+
* // Update the render target cube
|
|
27
|
+
* car.visible = false;
|
|
28
|
+
* cubeCamera.position.copy( car.position );
|
|
29
|
+
* cubeCamera.update( renderer, scene );
|
|
30
|
+
*
|
|
31
|
+
* // Render the scene
|
|
32
|
+
* car.visible = true;
|
|
33
|
+
* renderer.render( scene, camera );
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @augments Object3D
|
|
37
|
+
*/
|
|
8
38
|
class CubeCamera extends Object3D {
|
|
9
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Constructs a new cube camera.
|
|
42
|
+
*
|
|
43
|
+
* @param {number} near - The camera's near plane.
|
|
44
|
+
* @param {number} far - The camera's far plane.
|
|
45
|
+
* @param {WebGLCubeRenderTarget} renderTarget - The cube render target.
|
|
46
|
+
*/
|
|
10
47
|
constructor( near, far, renderTarget ) {
|
|
11
48
|
|
|
12
49
|
super();
|
|
13
50
|
|
|
14
51
|
this.type = 'CubeCamera';
|
|
15
52
|
|
|
53
|
+
/**
|
|
54
|
+
* A reference to the cube render target.
|
|
55
|
+
*
|
|
56
|
+
* @type {WebGLCubeRenderTarget}
|
|
57
|
+
*/
|
|
16
58
|
this.renderTarget = renderTarget;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The current active coordinate system.
|
|
62
|
+
*
|
|
63
|
+
* @type {?(WebGLCoordinateSystem|WebGPUCoordinateSystem)}
|
|
64
|
+
* @default null
|
|
65
|
+
*/
|
|
17
66
|
this.coordinateSystem = null;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The current active mipmap level
|
|
70
|
+
*
|
|
71
|
+
* @type {number}
|
|
72
|
+
* @default 0
|
|
73
|
+
*/
|
|
18
74
|
this.activeMipmapLevel = 0;
|
|
19
75
|
|
|
20
76
|
const cameraPX = new PerspectiveCamera( fov, aspect, near, far );
|
|
@@ -43,6 +99,9 @@ class CubeCamera extends Object3D {
|
|
|
43
99
|
|
|
44
100
|
}
|
|
45
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Must be called when the coordinate system of the cube camera is changed.
|
|
104
|
+
*/
|
|
46
105
|
updateCoordinateSystem() {
|
|
47
106
|
|
|
48
107
|
const coordinateSystem = this.coordinateSystem;
|
|
@@ -109,6 +168,13 @@ class CubeCamera extends Object3D {
|
|
|
109
168
|
|
|
110
169
|
}
|
|
111
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Calling this method will render the given scene with the given renderer
|
|
173
|
+
* into the cube render target of the camera.
|
|
174
|
+
*
|
|
175
|
+
* @param {(Renderer|WebGLRenderer)} renderer - The renderer.
|
|
176
|
+
* @param {Scene} scene - The scene to render.
|
|
177
|
+
*/
|
|
112
178
|
update( renderer, scene ) {
|
|
113
179
|
|
|
114
180
|
if ( this.parent === null ) this.updateMatrixWorld();
|
|
@@ -1,24 +1,114 @@
|
|
|
1
1
|
import { Camera } from './Camera.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.
|
|
5
|
+
*
|
|
6
|
+
* In this projection mode, an object's size in the rendered image stays
|
|
7
|
+
* constant regardless of its distance from the camera. This can be useful
|
|
8
|
+
* for rendering 2D scenes and UI elements, amongst other things.
|
|
9
|
+
*
|
|
10
|
+
* ```js
|
|
11
|
+
* const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
|
|
12
|
+
* scene.add( camera );
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @augments Camera
|
|
16
|
+
*/
|
|
3
17
|
class OrthographicCamera extends Camera {
|
|
4
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new orthographic camera.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} [left=-1] - The left plane of the camera's frustum.
|
|
23
|
+
* @param {number} [right=1] - The right plane of the camera's frustum.
|
|
24
|
+
* @param {number} [top=1] - The top plane of the camera's frustum.
|
|
25
|
+
* @param {number} [bottom=-1] - The bottom plane of the camera's frustum.
|
|
26
|
+
* @param {number} [near=0.1] - The camera's near plane.
|
|
27
|
+
* @param {number} [far=2000] - The camera's far plane.
|
|
28
|
+
*/
|
|
5
29
|
constructor( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {
|
|
6
30
|
|
|
7
31
|
super();
|
|
8
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
9
40
|
this.isOrthographicCamera = true;
|
|
10
41
|
|
|
11
42
|
this.type = 'OrthographicCamera';
|
|
12
43
|
|
|
44
|
+
/**
|
|
45
|
+
* The zoom factor of the camera.
|
|
46
|
+
*
|
|
47
|
+
* @type {number}
|
|
48
|
+
* @default 1
|
|
49
|
+
*/
|
|
13
50
|
this.zoom = 1;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Represents the frustum window specification. This property should not be edited
|
|
54
|
+
* directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.
|
|
55
|
+
*
|
|
56
|
+
* @type {?Object}
|
|
57
|
+
* @default null
|
|
58
|
+
*/
|
|
14
59
|
this.view = null;
|
|
15
60
|
|
|
61
|
+
/**
|
|
62
|
+
* The left plane of the camera's frustum.
|
|
63
|
+
*
|
|
64
|
+
* @type {number}
|
|
65
|
+
* @default -1
|
|
66
|
+
*/
|
|
16
67
|
this.left = left;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The right plane of the camera's frustum.
|
|
71
|
+
*
|
|
72
|
+
* @type {number}
|
|
73
|
+
* @default 1
|
|
74
|
+
*/
|
|
17
75
|
this.right = right;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The top plane of the camera's frustum.
|
|
79
|
+
*
|
|
80
|
+
* @type {number}
|
|
81
|
+
* @default 1
|
|
82
|
+
*/
|
|
18
83
|
this.top = top;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* The bottom plane of the camera's frustum.
|
|
87
|
+
*
|
|
88
|
+
* @type {number}
|
|
89
|
+
* @default -1
|
|
90
|
+
*/
|
|
19
91
|
this.bottom = bottom;
|
|
20
92
|
|
|
93
|
+
/**
|
|
94
|
+
* The camera's near plane. The valid range is greater than `0`
|
|
95
|
+
* and less than the current value of {@link OrthographicCamera#far}.
|
|
96
|
+
*
|
|
97
|
+
* Note that, unlike for the {@link PerspectiveCamera}, `0` is a
|
|
98
|
+
* valid value for an orthographic camera's near plane.
|
|
99
|
+
*
|
|
100
|
+
* @type {number}
|
|
101
|
+
* @default 0.1
|
|
102
|
+
*/
|
|
21
103
|
this.near = near;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The camera's far plane. Must be greater than the
|
|
107
|
+
* current value of {@link OrthographicCamera#near}.
|
|
108
|
+
*
|
|
109
|
+
* @type {number}
|
|
110
|
+
* @default 2000
|
|
111
|
+
*/
|
|
22
112
|
this.far = far;
|
|
23
113
|
|
|
24
114
|
this.updateProjectionMatrix();
|
|
@@ -43,6 +133,18 @@ class OrthographicCamera extends Camera {
|
|
|
43
133
|
|
|
44
134
|
}
|
|
45
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Sets an offset in a larger frustum. This is useful for multi-window or
|
|
138
|
+
* multi-monitor/multi-machine setups.
|
|
139
|
+
*
|
|
140
|
+
* @param {number} fullWidth - The full width of multiview setup.
|
|
141
|
+
* @param {number} fullHeight - The full height of multiview setup.
|
|
142
|
+
* @param {number} x - The horizontal offset of the subcamera.
|
|
143
|
+
* @param {number} y - The vertical offset of the subcamera.
|
|
144
|
+
* @param {number} width - The width of subcamera.
|
|
145
|
+
* @param {number} height - The height of subcamera.
|
|
146
|
+
* @see {@link PerspectiveCamera#setViewOffset}
|
|
147
|
+
*/
|
|
46
148
|
setViewOffset( fullWidth, fullHeight, x, y, width, height ) {
|
|
47
149
|
|
|
48
150
|
if ( this.view === null ) {
|
|
@@ -71,6 +173,9 @@ class OrthographicCamera extends Camera {
|
|
|
71
173
|
|
|
72
174
|
}
|
|
73
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Removes the view offset from the projection matrix.
|
|
178
|
+
*/
|
|
74
179
|
clearViewOffset() {
|
|
75
180
|
|
|
76
181
|
if ( this.view !== null ) {
|
|
@@ -83,6 +188,10 @@ class OrthographicCamera extends Camera {
|
|
|
83
188
|
|
|
84
189
|
}
|
|
85
190
|
|
|
191
|
+
/**
|
|
192
|
+
* Updates the camera's projection matrix. Must be called after any change of
|
|
193
|
+
* camera properties.
|
|
194
|
+
*/
|
|
86
195
|
updateProjectionMatrix() {
|
|
87
196
|
|
|
88
197
|
const dx = ( this.right - this.left ) / ( 2 * this.zoom );
|