@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
|
@@ -1,30 +1,84 @@
|
|
|
1
1
|
import { Color } from '../../math/Color.js';
|
|
2
|
+
import { Matrix2 } from '../../math/Matrix2.js';
|
|
2
3
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
3
4
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
4
5
|
import { Vector2 } from '../../math/Vector2.js';
|
|
5
6
|
import { Vector3 } from '../../math/Vector3.js';
|
|
6
7
|
import { Vector4 } from '../../math/Vector4.js';
|
|
7
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base class for uniforms.
|
|
11
|
+
*
|
|
12
|
+
* @abstract
|
|
13
|
+
* @private
|
|
14
|
+
*/
|
|
8
15
|
class Uniform {
|
|
9
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Constructs a new uniform.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} name - The uniform's name.
|
|
21
|
+
* @param {any} value - The uniform's value.
|
|
22
|
+
*/
|
|
10
23
|
constructor( name, value ) {
|
|
11
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The uniform's name.
|
|
27
|
+
*
|
|
28
|
+
* @type {string}
|
|
29
|
+
*/
|
|
12
30
|
this.name = name;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The uniform's value.
|
|
34
|
+
*
|
|
35
|
+
* @type {any}
|
|
36
|
+
*/
|
|
13
37
|
this.value = value;
|
|
14
38
|
|
|
15
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Used to build the uniform buffer according to the STD140 layout.
|
|
41
|
+
* Derived uniforms will set this property to a data type specific
|
|
42
|
+
* value.
|
|
43
|
+
*
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
this.boundary = 0;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The item size. Derived uniforms will set this property to a data
|
|
50
|
+
* type specific value.
|
|
51
|
+
*
|
|
52
|
+
* @type {number}
|
|
53
|
+
*/
|
|
16
54
|
this.itemSize = 0;
|
|
17
55
|
|
|
18
|
-
|
|
56
|
+
/**
|
|
57
|
+
* This property is set by {@link UniformsGroup} and marks
|
|
58
|
+
* the start position in the uniform buffer.
|
|
59
|
+
*
|
|
60
|
+
* @type {number}
|
|
61
|
+
*/
|
|
62
|
+
this.offset = 0;
|
|
19
63
|
|
|
20
64
|
}
|
|
21
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Sets the uniform's value.
|
|
68
|
+
*
|
|
69
|
+
* @param {any} value - The value to set.
|
|
70
|
+
*/
|
|
22
71
|
setValue( value ) {
|
|
23
72
|
|
|
24
73
|
this.value = value;
|
|
25
74
|
|
|
26
75
|
}
|
|
27
76
|
|
|
77
|
+
/**
|
|
78
|
+
* Returns the uniform's value.
|
|
79
|
+
*
|
|
80
|
+
* @return {any} The value.
|
|
81
|
+
*/
|
|
28
82
|
getValue() {
|
|
29
83
|
|
|
30
84
|
return this.value;
|
|
@@ -33,12 +87,31 @@ class Uniform {
|
|
|
33
87
|
|
|
34
88
|
}
|
|
35
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Represents a Number uniform.
|
|
92
|
+
*
|
|
93
|
+
* @private
|
|
94
|
+
* @augments Uniform
|
|
95
|
+
*/
|
|
36
96
|
class NumberUniform extends Uniform {
|
|
37
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Constructs a new Number uniform.
|
|
100
|
+
*
|
|
101
|
+
* @param {string} name - The uniform's name.
|
|
102
|
+
* @param {number} value - The uniform's value.
|
|
103
|
+
*/
|
|
38
104
|
constructor( name, value = 0 ) {
|
|
39
105
|
|
|
40
106
|
super( name, value );
|
|
41
107
|
|
|
108
|
+
/**
|
|
109
|
+
* This flag can be used for type testing.
|
|
110
|
+
*
|
|
111
|
+
* @type {boolean}
|
|
112
|
+
* @readonly
|
|
113
|
+
* @default true
|
|
114
|
+
*/
|
|
42
115
|
this.isNumberUniform = true;
|
|
43
116
|
|
|
44
117
|
this.boundary = 4;
|
|
@@ -48,12 +121,31 @@ class NumberUniform extends Uniform {
|
|
|
48
121
|
|
|
49
122
|
}
|
|
50
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Represents a Vector2 uniform.
|
|
126
|
+
*
|
|
127
|
+
* @private
|
|
128
|
+
* @augments Uniform
|
|
129
|
+
*/
|
|
51
130
|
class Vector2Uniform extends Uniform {
|
|
52
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Constructs a new Number uniform.
|
|
134
|
+
*
|
|
135
|
+
* @param {string} name - The uniform's name.
|
|
136
|
+
* @param {Vector2} value - The uniform's value.
|
|
137
|
+
*/
|
|
53
138
|
constructor( name, value = new Vector2() ) {
|
|
54
139
|
|
|
55
140
|
super( name, value );
|
|
56
141
|
|
|
142
|
+
/**
|
|
143
|
+
* This flag can be used for type testing.
|
|
144
|
+
*
|
|
145
|
+
* @type {boolean}
|
|
146
|
+
* @readonly
|
|
147
|
+
* @default true
|
|
148
|
+
*/
|
|
57
149
|
this.isVector2Uniform = true;
|
|
58
150
|
|
|
59
151
|
this.boundary = 8;
|
|
@@ -63,12 +155,31 @@ class Vector2Uniform extends Uniform {
|
|
|
63
155
|
|
|
64
156
|
}
|
|
65
157
|
|
|
158
|
+
/**
|
|
159
|
+
* Represents a Vector3 uniform.
|
|
160
|
+
*
|
|
161
|
+
* @private
|
|
162
|
+
* @augments Uniform
|
|
163
|
+
*/
|
|
66
164
|
class Vector3Uniform extends Uniform {
|
|
67
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Constructs a new Number uniform.
|
|
168
|
+
*
|
|
169
|
+
* @param {string} name - The uniform's name.
|
|
170
|
+
* @param {Vector3} value - The uniform's value.
|
|
171
|
+
*/
|
|
68
172
|
constructor( name, value = new Vector3() ) {
|
|
69
173
|
|
|
70
174
|
super( name, value );
|
|
71
175
|
|
|
176
|
+
/**
|
|
177
|
+
* This flag can be used for type testing.
|
|
178
|
+
*
|
|
179
|
+
* @type {boolean}
|
|
180
|
+
* @readonly
|
|
181
|
+
* @default true
|
|
182
|
+
*/
|
|
72
183
|
this.isVector3Uniform = true;
|
|
73
184
|
|
|
74
185
|
this.boundary = 16;
|
|
@@ -78,12 +189,31 @@ class Vector3Uniform extends Uniform {
|
|
|
78
189
|
|
|
79
190
|
}
|
|
80
191
|
|
|
192
|
+
/**
|
|
193
|
+
* Represents a Vector4 uniform.
|
|
194
|
+
*
|
|
195
|
+
* @private
|
|
196
|
+
* @augments Uniform
|
|
197
|
+
*/
|
|
81
198
|
class Vector4Uniform extends Uniform {
|
|
82
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Constructs a new Number uniform.
|
|
202
|
+
*
|
|
203
|
+
* @param {string} name - The uniform's name.
|
|
204
|
+
* @param {Vector4} value - The uniform's value.
|
|
205
|
+
*/
|
|
83
206
|
constructor( name, value = new Vector4() ) {
|
|
84
207
|
|
|
85
208
|
super( name, value );
|
|
86
209
|
|
|
210
|
+
/**
|
|
211
|
+
* This flag can be used for type testing.
|
|
212
|
+
*
|
|
213
|
+
* @type {boolean}
|
|
214
|
+
* @readonly
|
|
215
|
+
* @default true
|
|
216
|
+
*/
|
|
87
217
|
this.isVector4Uniform = true;
|
|
88
218
|
|
|
89
219
|
this.boundary = 16;
|
|
@@ -93,12 +223,31 @@ class Vector4Uniform extends Uniform {
|
|
|
93
223
|
|
|
94
224
|
}
|
|
95
225
|
|
|
226
|
+
/**
|
|
227
|
+
* Represents a Color uniform.
|
|
228
|
+
*
|
|
229
|
+
* @private
|
|
230
|
+
* @augments Uniform
|
|
231
|
+
*/
|
|
96
232
|
class ColorUniform extends Uniform {
|
|
97
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Constructs a new Number uniform.
|
|
236
|
+
*
|
|
237
|
+
* @param {string} name - The uniform's name.
|
|
238
|
+
* @param {Color} value - The uniform's value.
|
|
239
|
+
*/
|
|
98
240
|
constructor( name, value = new Color() ) {
|
|
99
241
|
|
|
100
242
|
super( name, value );
|
|
101
243
|
|
|
244
|
+
/**
|
|
245
|
+
* This flag can be used for type testing.
|
|
246
|
+
*
|
|
247
|
+
* @type {boolean}
|
|
248
|
+
* @readonly
|
|
249
|
+
* @default true
|
|
250
|
+
*/
|
|
102
251
|
this.isColorUniform = true;
|
|
103
252
|
|
|
104
253
|
this.boundary = 16;
|
|
@@ -108,12 +257,66 @@ class ColorUniform extends Uniform {
|
|
|
108
257
|
|
|
109
258
|
}
|
|
110
259
|
|
|
260
|
+
/**
|
|
261
|
+
* Represents a Matrix2 uniform.
|
|
262
|
+
*
|
|
263
|
+
* @private
|
|
264
|
+
* @augments Uniform
|
|
265
|
+
*/
|
|
266
|
+
class Matrix2Uniform extends Uniform {
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Constructs a new Number uniform.
|
|
270
|
+
*
|
|
271
|
+
* @param {string} name - The uniform's name.
|
|
272
|
+
* @param {Matrix2} value - The uniform's value.
|
|
273
|
+
*/
|
|
274
|
+
constructor( name, value = new Matrix2() ) {
|
|
275
|
+
|
|
276
|
+
super( name, value );
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* This flag can be used for type testing.
|
|
280
|
+
*
|
|
281
|
+
* @type {boolean}
|
|
282
|
+
* @readonly
|
|
283
|
+
* @default true
|
|
284
|
+
*/
|
|
285
|
+
this.isMatrix2Uniform = true;
|
|
286
|
+
|
|
287
|
+
this.boundary = 16;
|
|
288
|
+
this.itemSize = 4;
|
|
289
|
+
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Represents a Matrix3 uniform.
|
|
297
|
+
*
|
|
298
|
+
* @private
|
|
299
|
+
* @augments Uniform
|
|
300
|
+
*/
|
|
111
301
|
class Matrix3Uniform extends Uniform {
|
|
112
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Constructs a new Number uniform.
|
|
305
|
+
*
|
|
306
|
+
* @param {string} name - The uniform's name.
|
|
307
|
+
* @param {Matrix3} value - The uniform's value.
|
|
308
|
+
*/
|
|
113
309
|
constructor( name, value = new Matrix3() ) {
|
|
114
310
|
|
|
115
311
|
super( name, value );
|
|
116
312
|
|
|
313
|
+
/**
|
|
314
|
+
* This flag can be used for type testing.
|
|
315
|
+
*
|
|
316
|
+
* @type {boolean}
|
|
317
|
+
* @readonly
|
|
318
|
+
* @default true
|
|
319
|
+
*/
|
|
117
320
|
this.isMatrix3Uniform = true;
|
|
118
321
|
|
|
119
322
|
this.boundary = 48;
|
|
@@ -123,12 +326,31 @@ class Matrix3Uniform extends Uniform {
|
|
|
123
326
|
|
|
124
327
|
}
|
|
125
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Represents a Matrix4 uniform.
|
|
331
|
+
*
|
|
332
|
+
* @private
|
|
333
|
+
* @augments Uniform
|
|
334
|
+
*/
|
|
126
335
|
class Matrix4Uniform extends Uniform {
|
|
127
336
|
|
|
337
|
+
/**
|
|
338
|
+
* Constructs a new Number uniform.
|
|
339
|
+
*
|
|
340
|
+
* @param {string} name - The uniform's name.
|
|
341
|
+
* @param {Matrix4} value - The uniform's value.
|
|
342
|
+
*/
|
|
128
343
|
constructor( name, value = new Matrix4() ) {
|
|
129
344
|
|
|
130
345
|
super( name, value );
|
|
131
346
|
|
|
347
|
+
/**
|
|
348
|
+
* This flag can be used for type testing.
|
|
349
|
+
*
|
|
350
|
+
* @type {boolean}
|
|
351
|
+
* @readonly
|
|
352
|
+
* @default true
|
|
353
|
+
*/
|
|
132
354
|
this.isMatrix4Uniform = true;
|
|
133
355
|
|
|
134
356
|
this.boundary = 64;
|
|
@@ -141,5 +363,5 @@ class Matrix4Uniform extends Uniform {
|
|
|
141
363
|
export {
|
|
142
364
|
NumberUniform,
|
|
143
365
|
Vector2Uniform, Vector3Uniform, Vector4Uniform, ColorUniform,
|
|
144
|
-
Matrix3Uniform, Matrix4Uniform
|
|
366
|
+
Matrix2Uniform, Matrix3Uniform, Matrix4Uniform
|
|
145
367
|
};
|
|
@@ -1,11 +1,30 @@
|
|
|
1
1
|
import Buffer from './Buffer.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a uniform buffer binding type.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
* @augments Buffer
|
|
8
|
+
*/
|
|
3
9
|
class UniformBuffer extends Buffer {
|
|
4
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new uniform buffer.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} name - The buffer's name.
|
|
15
|
+
* @param {TypedArray} [buffer=null] - The buffer.
|
|
16
|
+
*/
|
|
5
17
|
constructor( name, buffer = null ) {
|
|
6
18
|
|
|
7
19
|
super( name, buffer );
|
|
8
20
|
|
|
21
|
+
/**
|
|
22
|
+
* This flag can be used for type testing.
|
|
23
|
+
*
|
|
24
|
+
* @type {boolean}
|
|
25
|
+
* @readonly
|
|
26
|
+
* @default true
|
|
27
|
+
*/
|
|
9
28
|
this.isUniformBuffer = true;
|
|
10
29
|
|
|
11
30
|
}
|
|
@@ -1,22 +1,59 @@
|
|
|
1
1
|
import UniformBuffer from './UniformBuffer.js';
|
|
2
2
|
import { GPU_CHUNK_BYTES } from './Constants.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This class represents a uniform buffer binding but with
|
|
6
|
+
* an API that allows to maintain individual uniform objects.
|
|
7
|
+
*
|
|
8
|
+
* @private
|
|
9
|
+
* @augments UniformBuffer
|
|
10
|
+
*/
|
|
4
11
|
class UniformsGroup extends UniformBuffer {
|
|
5
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new uniforms group.
|
|
15
|
+
*
|
|
16
|
+
* @param {string} name - The group's name.
|
|
17
|
+
*/
|
|
6
18
|
constructor( name ) {
|
|
7
19
|
|
|
8
20
|
super( name );
|
|
9
21
|
|
|
22
|
+
/**
|
|
23
|
+
* This flag can be used for type testing.
|
|
24
|
+
*
|
|
25
|
+
* @type {boolean}
|
|
26
|
+
* @readonly
|
|
27
|
+
* @default true
|
|
28
|
+
*/
|
|
10
29
|
this.isUniformsGroup = true;
|
|
11
30
|
|
|
31
|
+
/**
|
|
32
|
+
* An array with the raw uniform values.
|
|
33
|
+
*
|
|
34
|
+
* @private
|
|
35
|
+
* @type {?Array<number>}
|
|
36
|
+
* @default null
|
|
37
|
+
*/
|
|
12
38
|
this._values = null;
|
|
13
39
|
|
|
14
|
-
|
|
15
|
-
|
|
40
|
+
/**
|
|
41
|
+
* An array of uniform objects.
|
|
42
|
+
*
|
|
43
|
+
* The order of uniforms in this array must match the order of uniforms in the shader.
|
|
44
|
+
*
|
|
45
|
+
* @type {Array<Uniform>}
|
|
46
|
+
*/
|
|
16
47
|
this.uniforms = [];
|
|
17
48
|
|
|
18
49
|
}
|
|
19
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Adds a uniform to this group.
|
|
53
|
+
*
|
|
54
|
+
* @param {Uniform} uniform - The uniform to add.
|
|
55
|
+
* @return {UniformsGroup} A reference to this group.
|
|
56
|
+
*/
|
|
20
57
|
addUniform( uniform ) {
|
|
21
58
|
|
|
22
59
|
this.uniforms.push( uniform );
|
|
@@ -25,6 +62,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
25
62
|
|
|
26
63
|
}
|
|
27
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Removes a uniform from this group.
|
|
67
|
+
*
|
|
68
|
+
* @param {Uniform} uniform - The uniform to remove.
|
|
69
|
+
* @return {UniformsGroup} A reference to this group.
|
|
70
|
+
*/
|
|
28
71
|
removeUniform( uniform ) {
|
|
29
72
|
|
|
30
73
|
const index = this.uniforms.indexOf( uniform );
|
|
@@ -39,6 +82,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
39
82
|
|
|
40
83
|
}
|
|
41
84
|
|
|
85
|
+
/**
|
|
86
|
+
* An array with the raw uniform values.
|
|
87
|
+
*
|
|
88
|
+
* @type {Array<number>}
|
|
89
|
+
*/
|
|
42
90
|
get values() {
|
|
43
91
|
|
|
44
92
|
if ( this._values === null ) {
|
|
@@ -51,6 +99,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
51
99
|
|
|
52
100
|
}
|
|
53
101
|
|
|
102
|
+
/**
|
|
103
|
+
* A Float32 array buffer with the uniform values.
|
|
104
|
+
*
|
|
105
|
+
* @type {Float32Array}
|
|
106
|
+
*/
|
|
54
107
|
get buffer() {
|
|
55
108
|
|
|
56
109
|
let buffer = this._buffer;
|
|
@@ -69,6 +122,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
69
122
|
|
|
70
123
|
}
|
|
71
124
|
|
|
125
|
+
/**
|
|
126
|
+
* The byte length of the buffer with correct buffer alignment.
|
|
127
|
+
*
|
|
128
|
+
* @type {number}
|
|
129
|
+
*/
|
|
72
130
|
get byteLength() {
|
|
73
131
|
|
|
74
132
|
let offset = 0; // global buffer offset in bytes
|
|
@@ -110,6 +168,15 @@ class UniformsGroup extends UniformBuffer {
|
|
|
110
168
|
|
|
111
169
|
}
|
|
112
170
|
|
|
171
|
+
/**
|
|
172
|
+
* Updates this group by updating each uniform object of
|
|
173
|
+
* the internal uniform list. The uniform objects check if their
|
|
174
|
+
* values has actually changed so this method only returns
|
|
175
|
+
* `true` if there is a real value change.
|
|
176
|
+
*
|
|
177
|
+
* @return {boolean} Whether the uniforms have been updated and
|
|
178
|
+
* must be uploaded to the GPU.
|
|
179
|
+
*/
|
|
113
180
|
update() {
|
|
114
181
|
|
|
115
182
|
let updated = false;
|
|
@@ -128,6 +195,13 @@ class UniformsGroup extends UniformBuffer {
|
|
|
128
195
|
|
|
129
196
|
}
|
|
130
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Updates a given uniform by calling an update method matching
|
|
200
|
+
* the uniforms type.
|
|
201
|
+
*
|
|
202
|
+
* @param {Uniform} uniform - The uniform to update.
|
|
203
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
204
|
+
*/
|
|
131
205
|
updateByType( uniform ) {
|
|
132
206
|
|
|
133
207
|
if ( uniform.isNumberUniform ) return this.updateNumber( uniform );
|
|
@@ -142,6 +216,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
142
216
|
|
|
143
217
|
}
|
|
144
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Updates a given Number uniform.
|
|
221
|
+
*
|
|
222
|
+
* @param {NumberUniform} uniform - The Number uniform.
|
|
223
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
224
|
+
*/
|
|
145
225
|
updateNumber( uniform ) {
|
|
146
226
|
|
|
147
227
|
let updated = false;
|
|
@@ -149,10 +229,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
149
229
|
const a = this.values;
|
|
150
230
|
const v = uniform.getValue();
|
|
151
231
|
const offset = uniform.offset;
|
|
232
|
+
const type = uniform.getType();
|
|
152
233
|
|
|
153
234
|
if ( a[ offset ] !== v ) {
|
|
154
235
|
|
|
155
|
-
const b = this.
|
|
236
|
+
const b = this._getBufferForType( type );
|
|
156
237
|
|
|
157
238
|
b[ offset ] = a[ offset ] = v;
|
|
158
239
|
updated = true;
|
|
@@ -163,6 +244,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
163
244
|
|
|
164
245
|
}
|
|
165
246
|
|
|
247
|
+
/**
|
|
248
|
+
* Updates a given Vector2 uniform.
|
|
249
|
+
*
|
|
250
|
+
* @param {Vector2Uniform} uniform - The Vector2 uniform.
|
|
251
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
252
|
+
*/
|
|
166
253
|
updateVector2( uniform ) {
|
|
167
254
|
|
|
168
255
|
let updated = false;
|
|
@@ -170,10 +257,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
170
257
|
const a = this.values;
|
|
171
258
|
const v = uniform.getValue();
|
|
172
259
|
const offset = uniform.offset;
|
|
260
|
+
const type = uniform.getType();
|
|
173
261
|
|
|
174
262
|
if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y ) {
|
|
175
263
|
|
|
176
|
-
const b = this.
|
|
264
|
+
const b = this._getBufferForType( type );
|
|
177
265
|
|
|
178
266
|
b[ offset + 0 ] = a[ offset + 0 ] = v.x;
|
|
179
267
|
b[ offset + 1 ] = a[ offset + 1 ] = v.y;
|
|
@@ -186,6 +274,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
186
274
|
|
|
187
275
|
}
|
|
188
276
|
|
|
277
|
+
/**
|
|
278
|
+
* Updates a given Vector3 uniform.
|
|
279
|
+
*
|
|
280
|
+
* @param {Vector3Uniform} uniform - The Vector3 uniform.
|
|
281
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
282
|
+
*/
|
|
189
283
|
updateVector3( uniform ) {
|
|
190
284
|
|
|
191
285
|
let updated = false;
|
|
@@ -193,10 +287,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
193
287
|
const a = this.values;
|
|
194
288
|
const v = uniform.getValue();
|
|
195
289
|
const offset = uniform.offset;
|
|
290
|
+
const type = uniform.getType();
|
|
196
291
|
|
|
197
292
|
if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z ) {
|
|
198
293
|
|
|
199
|
-
const b = this.
|
|
294
|
+
const b = this._getBufferForType( type );
|
|
200
295
|
|
|
201
296
|
b[ offset + 0 ] = a[ offset + 0 ] = v.x;
|
|
202
297
|
b[ offset + 1 ] = a[ offset + 1 ] = v.y;
|
|
@@ -210,6 +305,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
210
305
|
|
|
211
306
|
}
|
|
212
307
|
|
|
308
|
+
/**
|
|
309
|
+
* Updates a given Vector4 uniform.
|
|
310
|
+
*
|
|
311
|
+
* @param {Vector4Uniform} uniform - The Vector4 uniform.
|
|
312
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
313
|
+
*/
|
|
213
314
|
updateVector4( uniform ) {
|
|
214
315
|
|
|
215
316
|
let updated = false;
|
|
@@ -217,10 +318,11 @@ class UniformsGroup extends UniformBuffer {
|
|
|
217
318
|
const a = this.values;
|
|
218
319
|
const v = uniform.getValue();
|
|
219
320
|
const offset = uniform.offset;
|
|
321
|
+
const type = uniform.getType();
|
|
220
322
|
|
|
221
323
|
if ( a[ offset + 0 ] !== v.x || a[ offset + 1 ] !== v.y || a[ offset + 2 ] !== v.z || a[ offset + 4 ] !== v.w ) {
|
|
222
324
|
|
|
223
|
-
const b = this.
|
|
325
|
+
const b = this._getBufferForType( type );
|
|
224
326
|
|
|
225
327
|
b[ offset + 0 ] = a[ offset + 0 ] = v.x;
|
|
226
328
|
b[ offset + 1 ] = a[ offset + 1 ] = v.y;
|
|
@@ -235,6 +337,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
235
337
|
|
|
236
338
|
}
|
|
237
339
|
|
|
340
|
+
/**
|
|
341
|
+
* Updates a given Color uniform.
|
|
342
|
+
*
|
|
343
|
+
* @param {ColorUniform} uniform - The Color uniform.
|
|
344
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
345
|
+
*/
|
|
238
346
|
updateColor( uniform ) {
|
|
239
347
|
|
|
240
348
|
let updated = false;
|
|
@@ -259,6 +367,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
259
367
|
|
|
260
368
|
}
|
|
261
369
|
|
|
370
|
+
/**
|
|
371
|
+
* Updates a given Matrix3 uniform.
|
|
372
|
+
*
|
|
373
|
+
* @param {Matrix3Uniform} uniform - The Matrix3 uniform.
|
|
374
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
375
|
+
*/
|
|
262
376
|
updateMatrix3( uniform ) {
|
|
263
377
|
|
|
264
378
|
let updated = false;
|
|
@@ -291,6 +405,12 @@ class UniformsGroup extends UniformBuffer {
|
|
|
291
405
|
|
|
292
406
|
}
|
|
293
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Updates a given Matrix4 uniform.
|
|
410
|
+
*
|
|
411
|
+
* @param {Matrix4Uniform} uniform - The Matrix4 uniform.
|
|
412
|
+
* @return {boolean} Whether the uniform has been updated or not.
|
|
413
|
+
*/
|
|
294
414
|
updateMatrix4( uniform ) {
|
|
295
415
|
|
|
296
416
|
let updated = false;
|
|
@@ -312,8 +432,30 @@ class UniformsGroup extends UniformBuffer {
|
|
|
312
432
|
|
|
313
433
|
}
|
|
314
434
|
|
|
435
|
+
/**
|
|
436
|
+
* Returns a typed array that matches the given data type.
|
|
437
|
+
*
|
|
438
|
+
* @param {string} type - The data type.
|
|
439
|
+
* @return {TypedArray} The typed array.
|
|
440
|
+
*/
|
|
441
|
+
_getBufferForType( type ) {
|
|
442
|
+
|
|
443
|
+
if ( type === 'int' || type === 'ivec2' || type === 'ivec3' || type === 'ivec4' ) return new Int32Array( this.buffer.buffer );
|
|
444
|
+
if ( type === 'uint' || type === 'uvec2' || type === 'uvec3' || type === 'uvec4' ) return new Uint32Array( this.buffer.buffer );
|
|
445
|
+
return this.buffer;
|
|
446
|
+
|
|
447
|
+
}
|
|
448
|
+
|
|
315
449
|
}
|
|
316
450
|
|
|
451
|
+
/**
|
|
452
|
+
* Sets the values of the second array to the first array.
|
|
453
|
+
*
|
|
454
|
+
* @private
|
|
455
|
+
* @param {TypedArray} a - The first array.
|
|
456
|
+
* @param {TypedArray} b - The second array.
|
|
457
|
+
* @param {number} offset - An index offset for the first array.
|
|
458
|
+
*/
|
|
317
459
|
function setArray( a, b, offset ) {
|
|
318
460
|
|
|
319
461
|
for ( let i = 0, l = b.length; i < l; i ++ ) {
|
|
@@ -324,6 +466,15 @@ function setArray( a, b, offset ) {
|
|
|
324
466
|
|
|
325
467
|
}
|
|
326
468
|
|
|
469
|
+
/**
|
|
470
|
+
* Returns `true` if the given arrays are equal.
|
|
471
|
+
*
|
|
472
|
+
* @private
|
|
473
|
+
* @param {TypedArray} a - The first array.
|
|
474
|
+
* @param {TypedArray} b - The second array.
|
|
475
|
+
* @param {number} offset - An index offset for the first array.
|
|
476
|
+
* @return {boolean} Whether the given arrays are equal or not.
|
|
477
|
+
*/
|
|
327
478
|
function arraysEqual( a, b, offset ) {
|
|
328
479
|
|
|
329
480
|
for ( let i = 0, l = b.length; i < l; i ++ ) {
|