@plastic-software/three 0.167.4 → 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 +36217 -23964
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46744
- package/build/three.module.min.js +2 -3
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50671
- package/build/three.webgpu.min.js +2 -3
- 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/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/textures/Texture.js
CHANGED
|
@@ -10,70 +10,350 @@ import {
|
|
|
10
10
|
UVMapping,
|
|
11
11
|
NoColorSpace,
|
|
12
12
|
} from '../constants.js';
|
|
13
|
-
import
|
|
13
|
+
import { generateUUID } from '../math/MathUtils.js';
|
|
14
14
|
import { Vector2 } from '../math/Vector2.js';
|
|
15
15
|
import { Matrix3 } from '../math/Matrix3.js';
|
|
16
16
|
import { Source } from './Source.js';
|
|
17
17
|
|
|
18
18
|
let _textureId = 0;
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Base class for all textures.
|
|
22
|
+
*
|
|
23
|
+
* Note: After the initial use of a texture, its dimensions, format, and type
|
|
24
|
+
* cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.
|
|
25
|
+
*
|
|
26
|
+
* @augments EventDispatcher
|
|
27
|
+
*/
|
|
20
28
|
class Texture extends EventDispatcher {
|
|
21
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new texture.
|
|
32
|
+
*
|
|
33
|
+
* @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data.
|
|
34
|
+
* @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
|
|
35
|
+
* @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
|
|
36
|
+
* @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
|
|
37
|
+
* @param {number} [magFilter=LinearFilter] - The mag filter value.
|
|
38
|
+
* @param {number} [minFilter=LinearFilter] - The min filter value.
|
|
39
|
+
* @param {number} [format=RGBAFormat] - The min filter value.
|
|
40
|
+
* @param {number} [type=UnsignedByteType] - The min filter value.
|
|
41
|
+
* @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The min filter value.
|
|
42
|
+
* @param {string} [colorSpace=NoColorSpace] - The min filter value.
|
|
43
|
+
*/
|
|
22
44
|
constructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {
|
|
23
45
|
|
|
24
46
|
super();
|
|
25
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This flag can be used for type testing.
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
* @readonly
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
26
55
|
this.isTexture = true;
|
|
27
56
|
|
|
57
|
+
/**
|
|
58
|
+
* The ID of the texture.
|
|
59
|
+
*
|
|
60
|
+
* @name Texture#id
|
|
61
|
+
* @type {number}
|
|
62
|
+
* @readonly
|
|
63
|
+
*/
|
|
28
64
|
Object.defineProperty( this, 'id', { value: _textureId ++ } );
|
|
29
65
|
|
|
30
|
-
|
|
31
|
-
|
|
66
|
+
/**
|
|
67
|
+
* The UUID of the material.
|
|
68
|
+
*
|
|
69
|
+
* @type {string}
|
|
70
|
+
* @readonly
|
|
71
|
+
*/
|
|
72
|
+
this.uuid = generateUUID();
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The name of the material.
|
|
76
|
+
*
|
|
77
|
+
* @type {string}
|
|
78
|
+
*/
|
|
32
79
|
this.name = '';
|
|
33
80
|
|
|
81
|
+
/**
|
|
82
|
+
* The data definition of a texture. A reference to the data source can be
|
|
83
|
+
* shared across textures. This is often useful in context of spritesheets
|
|
84
|
+
* where multiple textures render the same data but with different texture
|
|
85
|
+
* transformations.
|
|
86
|
+
*
|
|
87
|
+
* @type {Source}
|
|
88
|
+
*/
|
|
34
89
|
this.source = new Source( image );
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* An array holding user-defined mipmaps.
|
|
93
|
+
*
|
|
94
|
+
* @type {Array<Object>}
|
|
95
|
+
*/
|
|
35
96
|
this.mipmaps = [];
|
|
36
97
|
|
|
98
|
+
/**
|
|
99
|
+
* How the texture is applied to the object. The value `UVMapping`
|
|
100
|
+
* is the default, where texture or uv coordinates are used to apply the map.
|
|
101
|
+
*
|
|
102
|
+
* @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)}
|
|
103
|
+
* @default UVMapping
|
|
104
|
+
*/
|
|
37
105
|
this.mapping = mapping;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Lets you select the uv attribute to map the texture to. `0` for `uv`,
|
|
109
|
+
* `1` for `uv1`, `2` for `uv2` and `3` for `uv3`.
|
|
110
|
+
*
|
|
111
|
+
* @type {number}
|
|
112
|
+
* @default 0
|
|
113
|
+
*/
|
|
38
114
|
this.channel = 0;
|
|
39
115
|
|
|
116
|
+
/**
|
|
117
|
+
* This defines how the texture is wrapped horizontally and corresponds to
|
|
118
|
+
* *U* in UV mapping.
|
|
119
|
+
*
|
|
120
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
121
|
+
* @default ClampToEdgeWrapping
|
|
122
|
+
*/
|
|
40
123
|
this.wrapS = wrapS;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* This defines how the texture is wrapped horizontally and corresponds to
|
|
127
|
+
* *V* in UV mapping.
|
|
128
|
+
*
|
|
129
|
+
* @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}
|
|
130
|
+
* @default ClampToEdgeWrapping
|
|
131
|
+
*/
|
|
41
132
|
this.wrapT = wrapT;
|
|
42
133
|
|
|
134
|
+
/**
|
|
135
|
+
* How the texture is sampled when a texel covers more than one pixel.
|
|
136
|
+
*
|
|
137
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
138
|
+
* @default LinearFilter
|
|
139
|
+
*/
|
|
43
140
|
this.magFilter = magFilter;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* How the texture is sampled when a texel covers less than one pixel.
|
|
144
|
+
*
|
|
145
|
+
* @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}
|
|
146
|
+
* @default LinearMipmapLinearFilter
|
|
147
|
+
*/
|
|
44
148
|
this.minFilter = minFilter;
|
|
45
149
|
|
|
150
|
+
/**
|
|
151
|
+
* The number of samples taken along the axis through the pixel that has the
|
|
152
|
+
* highest density of texels. By default, this value is `1`. A higher value
|
|
153
|
+
* gives a less blurry result than a basic mipmap, at the cost of more
|
|
154
|
+
* texture samples being used.
|
|
155
|
+
*
|
|
156
|
+
* @type {number}
|
|
157
|
+
* @default 0
|
|
158
|
+
*/
|
|
46
159
|
this.anisotropy = anisotropy;
|
|
47
160
|
|
|
161
|
+
/**
|
|
162
|
+
* The format of the texture.
|
|
163
|
+
*
|
|
164
|
+
* @type {number}
|
|
165
|
+
* @default RGBAFormat
|
|
166
|
+
*/
|
|
48
167
|
this.format = format;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The default internal format is derived from {@link Texture#format} and {@link Texture#type} and
|
|
171
|
+
* defines how the texture data is going to be stored on the GPU.
|
|
172
|
+
*
|
|
173
|
+
* This property allows to overwrite the default format.
|
|
174
|
+
*
|
|
175
|
+
* @type {?string}
|
|
176
|
+
* @default null
|
|
177
|
+
*/
|
|
49
178
|
this.internalFormat = null;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* The data type of the texture.
|
|
182
|
+
*
|
|
183
|
+
* @type {number}
|
|
184
|
+
* @default UnsignedByteType
|
|
185
|
+
*/
|
|
50
186
|
this.type = type;
|
|
51
187
|
|
|
188
|
+
/**
|
|
189
|
+
* How much a single repetition of the texture is offset from the beginning,
|
|
190
|
+
* in each direction U and V. Typical range is `0.0` to `1.0`.
|
|
191
|
+
*
|
|
192
|
+
* @type {Vector2}
|
|
193
|
+
* @default (0,0)
|
|
194
|
+
*/
|
|
52
195
|
this.offset = new Vector2( 0, 0 );
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* How many times the texture is repeated across the surface, in each
|
|
199
|
+
* direction U and V. If repeat is set greater than `1` in either direction,
|
|
200
|
+
* the corresponding wrap parameter should also be set to `RepeatWrapping`
|
|
201
|
+
* or `MirroredRepeatWrapping` to achieve the desired tiling effect.
|
|
202
|
+
*
|
|
203
|
+
* @type {Vector2}
|
|
204
|
+
* @default (1,1)
|
|
205
|
+
*/
|
|
53
206
|
this.repeat = new Vector2( 1, 1 );
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds
|
|
210
|
+
* to the center of the texture. Default is `(0, 0)`, the lower left.
|
|
211
|
+
*
|
|
212
|
+
* @type {Vector2}
|
|
213
|
+
* @default (0,0)
|
|
214
|
+
*/
|
|
54
215
|
this.center = new Vector2( 0, 0 );
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* How much the texture is rotated around the center point, in radians.
|
|
219
|
+
* Positive values are counter-clockwise.
|
|
220
|
+
*
|
|
221
|
+
* @type {number}
|
|
222
|
+
* @default 0
|
|
223
|
+
*/
|
|
55
224
|
this.rotation = 0;
|
|
56
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Whether to update the texture's uv-transformation {@link Texture#matrix}
|
|
228
|
+
* from the properties {@link Texture#offset}, {@link Texture#repeat},
|
|
229
|
+
* {@link Texture#rotation}, and {@link Texture#center}.
|
|
230
|
+
*
|
|
231
|
+
* Set this to `false` if you are specifying the uv-transform matrix directly.
|
|
232
|
+
*
|
|
233
|
+
* @type {boolean}
|
|
234
|
+
* @default true
|
|
235
|
+
*/
|
|
57
236
|
this.matrixAutoUpdate = true;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The uv-transformation matrix of the texture.
|
|
240
|
+
*
|
|
241
|
+
* @type {Matrix3}
|
|
242
|
+
*/
|
|
58
243
|
this.matrix = new Matrix3();
|
|
59
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Whether to generate mipmaps (if possible) for a texture.
|
|
247
|
+
*
|
|
248
|
+
* Set this to `false` if you are creating mipmaps manually.
|
|
249
|
+
*
|
|
250
|
+
* @type {boolean}
|
|
251
|
+
* @default true
|
|
252
|
+
*/
|
|
60
253
|
this.generateMipmaps = true;
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* If set to `true`, the alpha channel, if present, is multiplied into the
|
|
257
|
+
* color channels when the texture is uploaded to the GPU.
|
|
258
|
+
*
|
|
259
|
+
* Note that this property has no effect when using `ImageBitmap`. You need to
|
|
260
|
+
* configure premultiply alpha on bitmap creation instead.
|
|
261
|
+
*
|
|
262
|
+
* @type {boolean}
|
|
263
|
+
* @default false
|
|
264
|
+
*/
|
|
61
265
|
this.premultiplyAlpha = false;
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* If set to `true`, the texture is flipped along the vertical axis when
|
|
269
|
+
* uploaded to the GPU.
|
|
270
|
+
*
|
|
271
|
+
* Note that this property has no effect when using `ImageBitmap`. You need to
|
|
272
|
+
* configure the flip on bitmap creation instead.
|
|
273
|
+
*
|
|
274
|
+
* @type {boolean}
|
|
275
|
+
* @default true
|
|
276
|
+
*/
|
|
62
277
|
this.flipY = true;
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Specifies the alignment requirements for the start of each pixel row in memory.
|
|
281
|
+
* The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes),
|
|
282
|
+
* `4` (word-alignment), and `8` (rows start on double-word boundaries).
|
|
283
|
+
*
|
|
284
|
+
* @type {number}
|
|
285
|
+
* @default 4
|
|
286
|
+
*/
|
|
63
287
|
this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)
|
|
64
288
|
|
|
289
|
+
/**
|
|
290
|
+
* Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`.
|
|
291
|
+
*
|
|
292
|
+
* @type {string}
|
|
293
|
+
* @default NoColorSpace
|
|
294
|
+
*/
|
|
65
295
|
this.colorSpace = colorSpace;
|
|
66
296
|
|
|
297
|
+
/**
|
|
298
|
+
* An object that can be used to store custom data about the texture. It
|
|
299
|
+
* should not hold references to functions as these will not be cloned.
|
|
300
|
+
*
|
|
301
|
+
* @type {Object}
|
|
302
|
+
*/
|
|
67
303
|
this.userData = {};
|
|
68
304
|
|
|
305
|
+
/**
|
|
306
|
+
* This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.
|
|
307
|
+
*
|
|
308
|
+
* @type {number}
|
|
309
|
+
* @readonly
|
|
310
|
+
* @default 0
|
|
311
|
+
*/
|
|
69
312
|
this.version = 0;
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* A callback function, called when the texture is updated (e.g., when
|
|
316
|
+
* {@link Texture#needsUpdate} has been set to true and then the texture is used).
|
|
317
|
+
*
|
|
318
|
+
* @type {?Function}
|
|
319
|
+
* @default null
|
|
320
|
+
*/
|
|
70
321
|
this.onUpdate = null;
|
|
71
322
|
|
|
72
|
-
|
|
73
|
-
|
|
323
|
+
/**
|
|
324
|
+
* An optional back reference to the textures render target.
|
|
325
|
+
*
|
|
326
|
+
* @type {?(RenderTarget|WebGLRenderTarget)}
|
|
327
|
+
* @default null
|
|
328
|
+
*/
|
|
329
|
+
this.renderTarget = null;
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Indicates whether a texture belongs to a render target or not.
|
|
333
|
+
*
|
|
334
|
+
* @type {boolean}
|
|
335
|
+
* @readonly
|
|
336
|
+
* @default false
|
|
337
|
+
*/
|
|
338
|
+
this.isRenderTargetTexture = false;
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Indicates whether this texture should be processed by `PMREMGenerator` or not
|
|
342
|
+
* (only relevant for render target textures).
|
|
343
|
+
*
|
|
344
|
+
* @type {number}
|
|
345
|
+
* @readonly
|
|
346
|
+
* @default 0
|
|
347
|
+
*/
|
|
348
|
+
this.pmremVersion = 0;
|
|
74
349
|
|
|
75
350
|
}
|
|
76
351
|
|
|
352
|
+
/**
|
|
353
|
+
* The image object holding the texture data.
|
|
354
|
+
*
|
|
355
|
+
* @type {?Object}
|
|
356
|
+
*/
|
|
77
357
|
get image() {
|
|
78
358
|
|
|
79
359
|
return this.source.data;
|
|
@@ -86,18 +366,33 @@ class Texture extends EventDispatcher {
|
|
|
86
366
|
|
|
87
367
|
}
|
|
88
368
|
|
|
369
|
+
/**
|
|
370
|
+
* Updates the texture transformation matrix from the from the properties {@link Texture#offset},
|
|
371
|
+
* {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.
|
|
372
|
+
*/
|
|
89
373
|
updateMatrix() {
|
|
90
374
|
|
|
91
375
|
this.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );
|
|
92
376
|
|
|
93
377
|
}
|
|
94
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Returns a new texture with copied values from this instance.
|
|
381
|
+
*
|
|
382
|
+
* @return {Texture} A clone of this instance.
|
|
383
|
+
*/
|
|
95
384
|
clone() {
|
|
96
385
|
|
|
97
386
|
return new this.constructor().copy( this );
|
|
98
387
|
|
|
99
388
|
}
|
|
100
389
|
|
|
390
|
+
/**
|
|
391
|
+
* Copies the values of the given texture to this instance.
|
|
392
|
+
*
|
|
393
|
+
* @param {Texture} source - The texture to copy.
|
|
394
|
+
* @return {Texture} A reference to this instance.
|
|
395
|
+
*/
|
|
101
396
|
copy( source ) {
|
|
102
397
|
|
|
103
398
|
this.name = source.name;
|
|
@@ -134,6 +429,9 @@ class Texture extends EventDispatcher {
|
|
|
134
429
|
this.unpackAlignment = source.unpackAlignment;
|
|
135
430
|
this.colorSpace = source.colorSpace;
|
|
136
431
|
|
|
432
|
+
this.renderTarget = source.renderTarget;
|
|
433
|
+
this.isRenderTargetTexture = source.isRenderTargetTexture;
|
|
434
|
+
|
|
137
435
|
this.userData = JSON.parse( JSON.stringify( source.userData ) );
|
|
138
436
|
|
|
139
437
|
this.needsUpdate = true;
|
|
@@ -142,6 +440,13 @@ class Texture extends EventDispatcher {
|
|
|
142
440
|
|
|
143
441
|
}
|
|
144
442
|
|
|
443
|
+
/**
|
|
444
|
+
* Serializes the texture into JSON.
|
|
445
|
+
*
|
|
446
|
+
* @param {?(Object|string)} meta - An optional value holding meta information about the serialization.
|
|
447
|
+
* @return {Object} A JSON object representing the serialized texture.
|
|
448
|
+
* @see {@link ObjectLoader#parse}
|
|
449
|
+
*/
|
|
145
450
|
toJSON( meta ) {
|
|
146
451
|
|
|
147
452
|
const isRootObject = ( meta === undefined || typeof meta === 'string' );
|
|
@@ -204,12 +509,30 @@ class Texture extends EventDispatcher {
|
|
|
204
509
|
|
|
205
510
|
}
|
|
206
511
|
|
|
512
|
+
/**
|
|
513
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
514
|
+
* method whenever this instance is no longer used in your app.
|
|
515
|
+
*
|
|
516
|
+
* @fires Texture#dispose
|
|
517
|
+
*/
|
|
207
518
|
dispose() {
|
|
208
519
|
|
|
520
|
+
/**
|
|
521
|
+
* Fires when the texture has been disposed of.
|
|
522
|
+
*
|
|
523
|
+
* @event Texture#dispose
|
|
524
|
+
* @type {Object}
|
|
525
|
+
*/
|
|
209
526
|
this.dispatchEvent( { type: 'dispose' } );
|
|
210
527
|
|
|
211
528
|
}
|
|
212
529
|
|
|
530
|
+
/**
|
|
531
|
+
* Transforms the given uv vector with the textures uv transformation matrix.
|
|
532
|
+
*
|
|
533
|
+
* @param {Vector2} uv - The uv vector.
|
|
534
|
+
* @return {Vector2} The transformed uv vector.
|
|
535
|
+
*/
|
|
213
536
|
transformUv( uv ) {
|
|
214
537
|
|
|
215
538
|
if ( this.mapping !== UVMapping ) return uv;
|
|
@@ -290,6 +613,15 @@ class Texture extends EventDispatcher {
|
|
|
290
613
|
|
|
291
614
|
}
|
|
292
615
|
|
|
616
|
+
/**
|
|
617
|
+
* Setting this property to `true` indicates the engine the texture
|
|
618
|
+
* must be updated in the next render. This triggers a texture upload
|
|
619
|
+
* to the GPU and ensures correct texture parameter configuration.
|
|
620
|
+
*
|
|
621
|
+
* @type {boolean}
|
|
622
|
+
* @default false
|
|
623
|
+
* @param {boolean} value
|
|
624
|
+
*/
|
|
293
625
|
set needsUpdate( value ) {
|
|
294
626
|
|
|
295
627
|
if ( value === true ) {
|
|
@@ -301,6 +633,14 @@ class Texture extends EventDispatcher {
|
|
|
301
633
|
|
|
302
634
|
}
|
|
303
635
|
|
|
636
|
+
/**
|
|
637
|
+
* Setting this property to `true` indicates the engine the PMREM
|
|
638
|
+
* must be regenerated.
|
|
639
|
+
*
|
|
640
|
+
* @type {boolean}
|
|
641
|
+
* @default false
|
|
642
|
+
* @param {boolean} value
|
|
643
|
+
*/
|
|
304
644
|
set needsPMREMUpdate( value ) {
|
|
305
645
|
|
|
306
646
|
if ( value === true ) {
|
|
@@ -313,8 +653,31 @@ class Texture extends EventDispatcher {
|
|
|
313
653
|
|
|
314
654
|
}
|
|
315
655
|
|
|
656
|
+
/**
|
|
657
|
+
* The default image for all textures.
|
|
658
|
+
*
|
|
659
|
+
* @static
|
|
660
|
+
* @type {?Image}
|
|
661
|
+
* @default null
|
|
662
|
+
*/
|
|
316
663
|
Texture.DEFAULT_IMAGE = null;
|
|
664
|
+
|
|
665
|
+
/**
|
|
666
|
+
* The default mapping for all textures.
|
|
667
|
+
*
|
|
668
|
+
* @static
|
|
669
|
+
* @type {number}
|
|
670
|
+
* @default UVMapping
|
|
671
|
+
*/
|
|
317
672
|
Texture.DEFAULT_MAPPING = UVMapping;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* The default anisotropy value for all textures.
|
|
676
|
+
*
|
|
677
|
+
* @static
|
|
678
|
+
* @type {number}
|
|
679
|
+
* @default 1
|
|
680
|
+
*/
|
|
318
681
|
Texture.DEFAULT_ANISOTROPY = 1;
|
|
319
682
|
|
|
320
683
|
export { Texture };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { VideoTexture } from './VideoTexture.js';
|
|
2
|
+
|
|
3
|
+
class VideoFrameTexture extends VideoTexture {
|
|
4
|
+
|
|
5
|
+
constructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
|
|
6
|
+
|
|
7
|
+
super( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
|
|
8
|
+
|
|
9
|
+
this.isVideoFrameTexture = true;
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
update() {
|
|
14
|
+
|
|
15
|
+
// overwrites `VideoTexture.update()` with an empty method since
|
|
16
|
+
// this type of texture is updated via `setFrame()`.
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
clone() {
|
|
21
|
+
|
|
22
|
+
return new this.constructor().copy( this ); // restoring Texture.clone()
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
setFrame( frame ) {
|
|
27
|
+
|
|
28
|
+
this.image = frame;
|
|
29
|
+
this.needsUpdate = true;
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { VideoFrameTexture };
|
package/src/utils.js
CHANGED
|
@@ -117,4 +117,36 @@ function probeAsync( gl, sync, interval ) {
|
|
|
117
117
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
function toNormalizedProjectionMatrix( projectionMatrix ) {
|
|
121
|
+
|
|
122
|
+
const m = projectionMatrix.elements;
|
|
123
|
+
|
|
124
|
+
// Convert [-1, 1] to [0, 1] projection matrix
|
|
125
|
+
m[ 2 ] = 0.5 * m[ 2 ] + 0.5 * m[ 3 ];
|
|
126
|
+
m[ 6 ] = 0.5 * m[ 6 ] + 0.5 * m[ 7 ];
|
|
127
|
+
m[ 10 ] = 0.5 * m[ 10 ] + 0.5 * m[ 11 ];
|
|
128
|
+
m[ 14 ] = 0.5 * m[ 14 ] + 0.5 * m[ 15 ];
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function toReversedProjectionMatrix( projectionMatrix ) {
|
|
133
|
+
|
|
134
|
+
const m = projectionMatrix.elements;
|
|
135
|
+
const isPerspectiveMatrix = m[ 11 ] === - 1;
|
|
136
|
+
|
|
137
|
+
// Reverse [0, 1] projection matrix
|
|
138
|
+
if ( isPerspectiveMatrix ) {
|
|
139
|
+
|
|
140
|
+
m[ 10 ] = - m[ 10 ] - 1;
|
|
141
|
+
m[ 14 ] = - m[ 14 ];
|
|
142
|
+
|
|
143
|
+
} else {
|
|
144
|
+
|
|
145
|
+
m[ 10 ] = - m[ 10 ];
|
|
146
|
+
m[ 14 ] = - m[ 14 ] + 1;
|
|
147
|
+
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export { arrayMin, arrayMax, arrayNeedsUint32, getTypedArray, createElementNS, createCanvasElement, warnOnce, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix };
|