@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
package/src/core/RenderTarget.js
CHANGED
|
@@ -54,6 +54,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
54
54
|
|
|
55
55
|
this.textures[ i ] = texture.clone();
|
|
56
56
|
this.textures[ i ].isRenderTargetTexture = true;
|
|
57
|
+
this.textures[ i ].renderTarget = this;
|
|
57
58
|
|
|
58
59
|
}
|
|
59
60
|
|
|
@@ -63,6 +64,7 @@ class RenderTarget extends EventDispatcher {
|
|
|
63
64
|
this.resolveDepthBuffer = options.resolveDepthBuffer;
|
|
64
65
|
this.resolveStencilBuffer = options.resolveStencilBuffer;
|
|
65
66
|
|
|
67
|
+
this._depthTexture = null;
|
|
66
68
|
this.depthTexture = options.depthTexture;
|
|
67
69
|
|
|
68
70
|
this.samples = options.samples;
|
|
@@ -81,6 +83,21 @@ class RenderTarget extends EventDispatcher {
|
|
|
81
83
|
|
|
82
84
|
}
|
|
83
85
|
|
|
86
|
+
set depthTexture( current ) {
|
|
87
|
+
|
|
88
|
+
if ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;
|
|
89
|
+
if ( current !== null ) current.renderTarget = this;
|
|
90
|
+
|
|
91
|
+
this._depthTexture = current;
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
get depthTexture() {
|
|
96
|
+
|
|
97
|
+
return this._depthTexture;
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
84
101
|
setSize( width, height, depth = 1 ) {
|
|
85
102
|
|
|
86
103
|
if ( this.width !== width || this.height !== height || this.depth !== depth ) {
|
|
@@ -129,13 +146,14 @@ class RenderTarget extends EventDispatcher {
|
|
|
129
146
|
|
|
130
147
|
this.textures[ i ] = source.textures[ i ].clone();
|
|
131
148
|
this.textures[ i ].isRenderTargetTexture = true;
|
|
149
|
+
this.textures[ i ].renderTarget = this;
|
|
132
150
|
|
|
133
|
-
|
|
151
|
+
// ensure image object is not shared, see #20328
|
|
134
152
|
|
|
135
|
-
|
|
153
|
+
const image = Object.assign( {}, source.textures[ i ].image );
|
|
154
|
+
this.textures[ i ].source = new Source( image );
|
|
136
155
|
|
|
137
|
-
|
|
138
|
-
this.texture.source = new Source( image );
|
|
156
|
+
}
|
|
139
157
|
|
|
140
158
|
this.depthBuffer = source.depthBuffer;
|
|
141
159
|
this.stencilBuffer = source.stencilBuffer;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RenderTarget } from './RenderTarget.js';
|
|
2
|
+
import { Data3DTexture } from '../textures/Data3DTexture.js';
|
|
3
|
+
|
|
4
|
+
class RenderTarget3D extends RenderTarget {
|
|
5
|
+
|
|
6
|
+
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
|
+
|
|
8
|
+
super( width, height, options );
|
|
9
|
+
|
|
10
|
+
this.isRenderTarget3D = true;
|
|
11
|
+
|
|
12
|
+
this.depth = depth;
|
|
13
|
+
|
|
14
|
+
this.texture = new Data3DTexture( null, width, height, depth );
|
|
15
|
+
|
|
16
|
+
this.texture.isRenderTargetTexture = true;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { RenderTarget3D };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RenderTarget } from './RenderTarget.js';
|
|
2
|
+
import { DataArrayTexture } from '../textures/DataArrayTexture.js';
|
|
3
|
+
|
|
4
|
+
class RenderTargetArray extends RenderTarget {
|
|
5
|
+
|
|
6
|
+
constructor( width = 1, height = 1, depth = 1, options = {} ) {
|
|
7
|
+
|
|
8
|
+
super( width, height, options );
|
|
9
|
+
|
|
10
|
+
this.isRenderTargetArray = true;
|
|
11
|
+
|
|
12
|
+
this.depth = depth;
|
|
13
|
+
|
|
14
|
+
this.texture = new DataArrayTexture( null, width, height, depth );
|
|
15
|
+
|
|
16
|
+
this.texture.isRenderTargetTexture = true;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { RenderTargetArray };
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { EventDispatcher } from '../core/EventDispatcher.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for controls.
|
|
5
|
+
*
|
|
6
|
+
* @abstract
|
|
7
|
+
* @augments EventDispatcher
|
|
8
|
+
*/
|
|
9
|
+
class Controls extends EventDispatcher {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new controls instance.
|
|
13
|
+
*
|
|
14
|
+
* @param {Object3D} object - The object that is managed by the controls.
|
|
15
|
+
* @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
|
|
16
|
+
*/
|
|
17
|
+
constructor( object, domElement = null ) {
|
|
18
|
+
|
|
19
|
+
super();
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The object that is managed by the controls.
|
|
23
|
+
*
|
|
24
|
+
* @type {Object3D}
|
|
25
|
+
*/
|
|
26
|
+
this.object = object;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The HTML element used for event listeners.
|
|
30
|
+
*
|
|
31
|
+
* @type {?HTMLDOMElement}
|
|
32
|
+
* @default null
|
|
33
|
+
*/
|
|
34
|
+
this.domElement = domElement;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Whether the controls responds to user input or not.
|
|
38
|
+
*
|
|
39
|
+
* @type {boolean}
|
|
40
|
+
* @default true
|
|
41
|
+
*/
|
|
42
|
+
this.enabled = true;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The internal state of the controls.
|
|
46
|
+
*
|
|
47
|
+
* @type {number}
|
|
48
|
+
* @default -1
|
|
49
|
+
*/
|
|
50
|
+
this.state = - 1;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* This object defines the keyboard input of the controls.
|
|
54
|
+
*
|
|
55
|
+
* @type {Object}
|
|
56
|
+
*/
|
|
57
|
+
this.keys = {};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* This object defines what type of actions are assigned to the available mouse buttons.
|
|
61
|
+
* It depends on the control implementation what kind of mouse buttons and actions are supported.
|
|
62
|
+
*
|
|
63
|
+
* @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}}
|
|
64
|
+
*/
|
|
65
|
+
this.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* This object defines what type of actions are assigned to what kind of touch interaction.
|
|
69
|
+
* It depends on the control implementation what kind of touch interaction and actions are supported.
|
|
70
|
+
*
|
|
71
|
+
* @type {{ONE: ?number, TWO: ?number}}
|
|
72
|
+
*/
|
|
73
|
+
this.touches = { ONE: null, TWO: null };
|
|
74
|
+
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Connects the controls to the DOM. This method has so called "side effects" since
|
|
79
|
+
* it adds the module's event listeners to the DOM.
|
|
80
|
+
*/
|
|
81
|
+
connect() {}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Disconnects the controls from the DOM.
|
|
85
|
+
*/
|
|
86
|
+
disconnect() {}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Call this method if you no longer want use to the controls. It frees all internal
|
|
90
|
+
* resources and removes all event listeners.
|
|
91
|
+
*/
|
|
92
|
+
dispose() {}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Controls should implement this method if they have to update their internal state
|
|
96
|
+
* per simulation step.
|
|
97
|
+
*
|
|
98
|
+
* @param {number} [delta] - The time delta in seconds.
|
|
99
|
+
*/
|
|
100
|
+
update( /* delta */ ) {}
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export { Controls };
|
package/src/extras/DataUtils.js
CHANGED
|
@@ -139,8 +139,13 @@ function _generateTables() {
|
|
|
139
139
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
/**
|
|
143
|
+
* Returns a half precision floating point value (FP16) from the given single
|
|
144
|
+
* precision floating point value (FP32).
|
|
145
|
+
*
|
|
146
|
+
* @param {number} val - A single precision floating point value.
|
|
147
|
+
* @return {number} The FP16 value.
|
|
148
|
+
*/
|
|
144
149
|
function toHalfFloat( val ) {
|
|
145
150
|
|
|
146
151
|
if ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );
|
|
@@ -154,8 +159,13 @@ function toHalfFloat( val ) {
|
|
|
154
159
|
|
|
155
160
|
}
|
|
156
161
|
|
|
157
|
-
|
|
158
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Returns a single precision floating point value (FP32) from the given half
|
|
164
|
+
* precision floating point value (FP16).
|
|
165
|
+
*
|
|
166
|
+
* @param {number} val - A half precision floating point value.
|
|
167
|
+
* @return {number} The FP32 value.
|
|
168
|
+
*/
|
|
159
169
|
function fromHalfFloat( val ) {
|
|
160
170
|
|
|
161
171
|
const m = val >> 10;
|
|
@@ -164,10 +174,40 @@ function fromHalfFloat( val ) {
|
|
|
164
174
|
|
|
165
175
|
}
|
|
166
176
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
177
|
+
/**
|
|
178
|
+
* A class containing utility functions for data.
|
|
179
|
+
*
|
|
180
|
+
* @hideconstructor
|
|
181
|
+
*/
|
|
182
|
+
class DataUtils {
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Returns a half precision floating point value (FP16) from the given single
|
|
186
|
+
* precision floating point value (FP32).
|
|
187
|
+
*
|
|
188
|
+
* @param {number} val - A single precision floating point value.
|
|
189
|
+
* @return {number} The FP16 value.
|
|
190
|
+
*/
|
|
191
|
+
static toHalfFloat( val ) {
|
|
192
|
+
|
|
193
|
+
return toHalfFloat( val );
|
|
194
|
+
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Returns a single precision floating point value (FP32) from the given half
|
|
199
|
+
* precision floating point value (FP16).
|
|
200
|
+
*
|
|
201
|
+
* @param {number} val - A half precision floating point value.
|
|
202
|
+
* @return {number} The FP32 value.
|
|
203
|
+
*/
|
|
204
|
+
static fromHalfFloat( val ) {
|
|
205
|
+
|
|
206
|
+
return fromHalfFloat( val );
|
|
207
|
+
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}
|
|
171
211
|
|
|
172
212
|
export {
|
|
173
213
|
toHalfFloat,
|
package/src/extras/Earcut.js
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* An implementation of the earcut polygon triangulation algorithm. The code
|
|
3
|
+
* is a port of [mapbox/earcut]{@link https://github.com/mapbox/earcut mapbox/earcut} (v2.2.4).
|
|
4
|
+
*
|
|
5
|
+
* @hideconstructor
|
|
3
6
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
class Earcut {
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Triangulates the given shape definition by returning an array of triangles.
|
|
11
|
+
*
|
|
12
|
+
* @param {Array<number>} data - An array with 2D points.
|
|
13
|
+
* @param {Array<number>} holeIndices - An array with indices defining holes.
|
|
14
|
+
* @param {number} [dim=2] - The number of coordinates per vertex in the input array.
|
|
15
|
+
* @return {Array<number>} An array representing the triangulated faces. Each face is defined by three consecutive numbers
|
|
16
|
+
* representing vertex indices.
|
|
17
|
+
*/
|
|
18
|
+
static triangulate( data, holeIndices, dim = 2 ) {
|
|
8
19
|
|
|
9
20
|
const hasHoles = holeIndices && holeIndices.length;
|
|
10
21
|
const outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;
|
|
@@ -46,7 +57,7 @@ const Earcut = {
|
|
|
46
57
|
|
|
47
58
|
}
|
|
48
59
|
|
|
49
|
-
}
|
|
60
|
+
}
|
|
50
61
|
|
|
51
62
|
// create a circular doubly linked list from polygon points in the specified winding order
|
|
52
63
|
function linkedList( data, start, end, dim, clockwise ) {
|
|
@@ -591,7 +602,7 @@ function pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {
|
|
|
591
602
|
// check if a diagonal between two polygon nodes is valid (lies in polygon interior)
|
|
592
603
|
function isValidDiagonal( a, b ) {
|
|
593
604
|
|
|
594
|
-
return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && //
|
|
605
|
+
return a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges
|
|
595
606
|
( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible
|
|
596
607
|
( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors
|
|
597
608
|
equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case
|
package/src/extras/ImageUtils.js
CHANGED
|
@@ -3,8 +3,19 @@ import { SRGBToLinear } from '../math/ColorManagement.js';
|
|
|
3
3
|
|
|
4
4
|
let _canvas;
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A class containing utility functions for images.
|
|
8
|
+
*
|
|
9
|
+
* @hideconstructor
|
|
10
|
+
*/
|
|
6
11
|
class ImageUtils {
|
|
7
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Returns a data URI containing a representation of the given image.
|
|
15
|
+
*
|
|
16
|
+
* @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object.
|
|
17
|
+
* @return {string} The data URI.
|
|
18
|
+
*/
|
|
8
19
|
static getDataURL( image ) {
|
|
9
20
|
|
|
10
21
|
if ( /^data:/i.test( image.src ) ) {
|
|
@@ -48,20 +59,16 @@ class ImageUtils {
|
|
|
48
59
|
|
|
49
60
|
}
|
|
50
61
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
console.warn( 'THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons', image );
|
|
54
|
-
|
|
55
|
-
return canvas.toDataURL( 'image/jpeg', 0.6 );
|
|
56
|
-
|
|
57
|
-
} else {
|
|
58
|
-
|
|
59
|
-
return canvas.toDataURL( 'image/png' );
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
+
return canvas.toDataURL( 'image/png' );
|
|
62
63
|
|
|
63
64
|
}
|
|
64
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Converts the given sRGB image data to linear color space.
|
|
68
|
+
*
|
|
69
|
+
* @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object.
|
|
70
|
+
* @return {HTMLCanvasElement|Object} The converted image.
|
|
71
|
+
*/
|
|
65
72
|
static sRGBToLinear( image ) {
|
|
66
73
|
|
|
67
74
|
if ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||
|
|
@@ -60,6 +60,8 @@ const _axisDirections = [
|
|
|
60
60
|
/*@__PURE__*/ new Vector3( - 1, 1, 1 ),
|
|
61
61
|
/*@__PURE__*/ new Vector3( 1, 1, 1 ) ];
|
|
62
62
|
|
|
63
|
+
const _origin = /*@__PURE__*/ new Vector3();
|
|
64
|
+
|
|
63
65
|
/**
|
|
64
66
|
* This class generates a Prefiltered, Mipmapped Radiance Environment Map
|
|
65
67
|
* (PMREM) from a cubeMap environment texture. This allows different levels of
|
|
@@ -100,10 +102,21 @@ class PMREMGenerator {
|
|
|
100
102
|
* Generates a PMREM from a supplied Scene, which can be faster than using an
|
|
101
103
|
* image if networking bandwidth is low. Optional sigma specifies a blur radius
|
|
102
104
|
* in radians to be applied to the scene before PMREM generation. Optional near
|
|
103
|
-
* and far planes ensure the scene is rendered in its entirety
|
|
104
|
-
*
|
|
105
|
+
* and far planes ensure the scene is rendered in its entirety.
|
|
106
|
+
*
|
|
107
|
+
* @param {Scene} scene
|
|
108
|
+
* @param {number} sigma
|
|
109
|
+
* @param {number} near
|
|
110
|
+
* @param {number} far
|
|
111
|
+
* @param {Object} [options={}]
|
|
112
|
+
* @return {WebGLRenderTarget}
|
|
105
113
|
*/
|
|
106
|
-
fromScene( scene, sigma = 0, near = 0.1, far = 100 ) {
|
|
114
|
+
fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {
|
|
115
|
+
|
|
116
|
+
const {
|
|
117
|
+
size = 256,
|
|
118
|
+
position = _origin,
|
|
119
|
+
} = options;
|
|
107
120
|
|
|
108
121
|
_oldTarget = this._renderer.getRenderTarget();
|
|
109
122
|
_oldActiveCubeFace = this._renderer.getActiveCubeFace();
|
|
@@ -112,12 +125,12 @@ class PMREMGenerator {
|
|
|
112
125
|
|
|
113
126
|
this._renderer.xr.enabled = false;
|
|
114
127
|
|
|
115
|
-
this._setSize(
|
|
128
|
+
this._setSize( size );
|
|
116
129
|
|
|
117
130
|
const cubeUVRenderTarget = this._allocateTargets();
|
|
118
131
|
cubeUVRenderTarget.depthBuffer = true;
|
|
119
132
|
|
|
120
|
-
this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );
|
|
133
|
+
this._sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position );
|
|
121
134
|
|
|
122
135
|
if ( sigma > 0 ) {
|
|
123
136
|
|
|
@@ -137,6 +150,10 @@ class PMREMGenerator {
|
|
|
137
150
|
* or HDR. The ideal input image size is 1k (1024 x 512),
|
|
138
151
|
* as this matches best with the 256 x 256 cubemap output.
|
|
139
152
|
* The smallest supported equirectangular image size is 64 x 32.
|
|
153
|
+
*
|
|
154
|
+
* @param {Texture} equirectangular
|
|
155
|
+
* @param {?WebGLRenderTarget} [renderTarget=null] - Optional render target.
|
|
156
|
+
* @return {WebGLRenderTarget}
|
|
140
157
|
*/
|
|
141
158
|
fromEquirectangular( equirectangular, renderTarget = null ) {
|
|
142
159
|
|
|
@@ -149,6 +166,10 @@ class PMREMGenerator {
|
|
|
149
166
|
* or HDR. The ideal input cube size is 256 x 256,
|
|
150
167
|
* as this matches best with the 256 x 256 cubemap output.
|
|
151
168
|
* The smallest supported cube size is 16 x 16.
|
|
169
|
+
*
|
|
170
|
+
* @param {Texture} cubemap
|
|
171
|
+
* @param {null} [renderTarget=null] - Optional render target.
|
|
172
|
+
* @return {WebGLRenderTarget}
|
|
152
173
|
*/
|
|
153
174
|
fromCubemap( cubemap, renderTarget = null ) {
|
|
154
175
|
|
|
@@ -306,7 +327,7 @@ class PMREMGenerator {
|
|
|
306
327
|
|
|
307
328
|
}
|
|
308
329
|
|
|
309
|
-
_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {
|
|
330
|
+
_sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position ) {
|
|
310
331
|
|
|
311
332
|
const fov = 90;
|
|
312
333
|
const aspect = 1;
|
|
@@ -358,17 +379,21 @@ class PMREMGenerator {
|
|
|
358
379
|
if ( col === 0 ) {
|
|
359
380
|
|
|
360
381
|
cubeCamera.up.set( 0, upSign[ i ], 0 );
|
|
361
|
-
cubeCamera.
|
|
382
|
+
cubeCamera.position.set( position.x, position.y, position.z );
|
|
383
|
+
cubeCamera.lookAt( position.x + forwardSign[ i ], position.y, position.z );
|
|
362
384
|
|
|
363
385
|
} else if ( col === 1 ) {
|
|
364
386
|
|
|
365
387
|
cubeCamera.up.set( 0, 0, upSign[ i ] );
|
|
366
|
-
cubeCamera.
|
|
388
|
+
cubeCamera.position.set( position.x, position.y, position.z );
|
|
389
|
+
cubeCamera.lookAt( position.x, position.y + forwardSign[ i ], position.z );
|
|
390
|
+
|
|
367
391
|
|
|
368
392
|
} else {
|
|
369
393
|
|
|
370
394
|
cubeCamera.up.set( 0, upSign[ i ], 0 );
|
|
371
|
-
cubeCamera.
|
|
395
|
+
cubeCamera.position.set( position.x, position.y, position.z );
|
|
396
|
+
cubeCamera.lookAt( position.x, position.y, position.z + forwardSign[ i ] );
|
|
372
397
|
|
|
373
398
|
}
|
|
374
399
|
|
|
@@ -466,6 +491,12 @@ class PMREMGenerator {
|
|
|
466
491
|
* the blur latitudinally (around the poles), and then longitudinally (towards
|
|
467
492
|
* the poles) to approximate the orthogonally-separable blur. It is least
|
|
468
493
|
* accurate at the poles, but still does a decent job.
|
|
494
|
+
*
|
|
495
|
+
* @param {WebGLRenderTarget} cubeUVRenderTarget
|
|
496
|
+
* @param {number} lodIn
|
|
497
|
+
* @param {number} lodOut
|
|
498
|
+
* @param {number} sigma
|
|
499
|
+
* @param {Vector3} [poleAxis]
|
|
469
500
|
*/
|
|
470
501
|
_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {
|
|
471
502
|
|
package/src/extras/ShapeUtils.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { Earcut } from './Earcut.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* A class containing utility functions for shapes.
|
|
5
|
+
*
|
|
6
|
+
* @hideconstructor
|
|
7
|
+
*/
|
|
3
8
|
class ShapeUtils {
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Calculate area of a ( 2D ) contour polygon.
|
|
12
|
+
*
|
|
13
|
+
* @param {Array<Vector2>} contour - An array of 2D points.
|
|
14
|
+
* @return {number} The area.
|
|
15
|
+
*/
|
|
7
16
|
static area( contour ) {
|
|
8
17
|
|
|
9
18
|
const n = contour.length;
|
|
@@ -19,12 +28,25 @@ class ShapeUtils {
|
|
|
19
28
|
|
|
20
29
|
}
|
|
21
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Returns `true` if the given contour uses a clockwise winding order.
|
|
33
|
+
*
|
|
34
|
+
* @param {Array<Vector2>} pts - An array of 2D points defining a polygon.
|
|
35
|
+
* @return {boolean} Whether the given contour uses a clockwise winding order or not.
|
|
36
|
+
*/
|
|
22
37
|
static isClockWise( pts ) {
|
|
23
38
|
|
|
24
39
|
return ShapeUtils.area( pts ) < 0;
|
|
25
40
|
|
|
26
41
|
}
|
|
27
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Triangulates the given shape definition.
|
|
45
|
+
*
|
|
46
|
+
* @param {Array<Vector2>} contour - An array of 2D points defining the contour.
|
|
47
|
+
* @param {Array<Array<Vector2>>} holes - An array that holds arrays of 2D points defining the holes.
|
|
48
|
+
* @return {Array<Array<number>>} An array that holds for each face definition an array with three indices.
|
|
49
|
+
*/
|
|
28
50
|
static triangulateShape( contour, holes ) {
|
|
29
51
|
|
|
30
52
|
const vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { AlphaFormat, LuminanceFormat, LuminanceAlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBFormat, RGBAFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, UnsignedByteType, ByteType, UnsignedShortType, ShortType, HalfFloatType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedIntType, IntType, FloatType, UnsignedInt5999Type } from '../constants.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Scales the texture as large as possible within its surface without cropping
|
|
5
|
+
* or stretching the texture. The method preserves the original aspect ratio of
|
|
6
|
+
* the texture. Akin to CSS `object-fit: contain`
|
|
7
|
+
*
|
|
8
|
+
* @param {Texture} texture - The texture.
|
|
9
|
+
* @param {number} aspect - The texture's aspect ratio.
|
|
10
|
+
* @return {Texture} The updated texture.
|
|
11
|
+
*/
|
|
3
12
|
function contain( texture, aspect ) {
|
|
4
13
|
|
|
5
14
|
const imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;
|
|
@@ -26,6 +35,15 @@ function contain( texture, aspect ) {
|
|
|
26
35
|
|
|
27
36
|
}
|
|
28
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Scales the texture to the smallest possible size to fill the surface, leaving
|
|
40
|
+
* no empty space. The method preserves the original aspect ratio of the texture.
|
|
41
|
+
* Akin to CSS `object-fit: cover`.
|
|
42
|
+
*
|
|
43
|
+
* @param {Texture} texture - The texture.
|
|
44
|
+
* @param {number} aspect - The texture's aspect ratio.
|
|
45
|
+
* @return {Texture} The updated texture.
|
|
46
|
+
*/
|
|
29
47
|
function cover( texture, aspect ) {
|
|
30
48
|
|
|
31
49
|
const imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;
|
|
@@ -52,6 +70,12 @@ function cover( texture, aspect ) {
|
|
|
52
70
|
|
|
53
71
|
}
|
|
54
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.
|
|
75
|
+
*
|
|
76
|
+
* @param {Texture} texture - The texture.
|
|
77
|
+
* @return {Texture} The updated texture.
|
|
78
|
+
*/
|
|
55
79
|
function fill( texture ) {
|
|
56
80
|
|
|
57
81
|
texture.repeat.x = 1;
|
|
@@ -64,11 +88,14 @@ function fill( texture ) {
|
|
|
64
88
|
|
|
65
89
|
}
|
|
66
90
|
|
|
67
|
-
|
|
68
|
-
|
|
69
91
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
92
|
+
* Determines how many bytes must be used to represent the texture.
|
|
93
|
+
*
|
|
94
|
+
* @param {number} width - The width of the texture.
|
|
95
|
+
* @param {number} height - The height of the texture.
|
|
96
|
+
* @param {number} format - The texture's format.
|
|
97
|
+
* @param {number} type - The texture's type.
|
|
98
|
+
* @return {number} The byte length.
|
|
72
99
|
*/
|
|
73
100
|
function getByteLength( width, height, format, type ) {
|
|
74
101
|
|
|
@@ -200,11 +227,70 @@ function getTextureTypeByteLength( type ) {
|
|
|
200
227
|
|
|
201
228
|
}
|
|
202
229
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
230
|
+
/**
|
|
231
|
+
* A class containing utility functions for textures.
|
|
232
|
+
*
|
|
233
|
+
* @hideconstructor
|
|
234
|
+
*/
|
|
235
|
+
class TextureUtils {
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Scales the texture as large as possible within its surface without cropping
|
|
239
|
+
* or stretching the texture. The method preserves the original aspect ratio of
|
|
240
|
+
* the texture. Akin to CSS `object-fit: contain`
|
|
241
|
+
*
|
|
242
|
+
* @param {Texture} texture - The texture.
|
|
243
|
+
* @param {number} aspect - The texture's aspect ratio.
|
|
244
|
+
* @return {Texture} The updated texture.
|
|
245
|
+
*/
|
|
246
|
+
static contain( texture, aspect ) {
|
|
247
|
+
|
|
248
|
+
return contain( texture, aspect );
|
|
249
|
+
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Scales the texture to the smallest possible size to fill the surface, leaving
|
|
254
|
+
* no empty space. The method preserves the original aspect ratio of the texture.
|
|
255
|
+
* Akin to CSS `object-fit: cover`.
|
|
256
|
+
*
|
|
257
|
+
* @param {Texture} texture - The texture.
|
|
258
|
+
* @param {number} aspect - The texture's aspect ratio.
|
|
259
|
+
* @return {Texture} The updated texture.
|
|
260
|
+
*/
|
|
261
|
+
static cover( texture, aspect ) {
|
|
262
|
+
|
|
263
|
+
return cover( texture, aspect );
|
|
264
|
+
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.
|
|
269
|
+
*
|
|
270
|
+
* @param {Texture} texture - The texture.
|
|
271
|
+
* @return {Texture} The updated texture.
|
|
272
|
+
*/
|
|
273
|
+
static fill( texture ) {
|
|
274
|
+
|
|
275
|
+
return fill( texture );
|
|
276
|
+
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Determines how many bytes must be used to represent the texture.
|
|
281
|
+
*
|
|
282
|
+
* @param {number} width - The width of the texture.
|
|
283
|
+
* @param {number} height - The height of the texture.
|
|
284
|
+
* @param {number} format - The texture's format.
|
|
285
|
+
* @param {number} type - The texture's type.
|
|
286
|
+
* @return {number} The byte length.
|
|
287
|
+
*/
|
|
288
|
+
static getByteLength( width, height, format, type ) {
|
|
289
|
+
|
|
290
|
+
return getByteLength( width, height, format, type );
|
|
291
|
+
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
}
|
|
209
295
|
|
|
210
296
|
export { contain, cover, fill, getByteLength, TextureUtils };
|