@plastic-software/three 0.167.3 → 0.174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -7,7 +7,8 @@ import {
|
|
|
7
7
|
SRGBColorSpace,
|
|
8
8
|
NoColorSpace,
|
|
9
9
|
HalfFloatType,
|
|
10
|
-
DataUtils
|
|
10
|
+
DataUtils,
|
|
11
|
+
WebGLCoordinateSystem
|
|
11
12
|
} from 'three';
|
|
12
13
|
|
|
13
14
|
class LightProbeGenerator {
|
|
@@ -98,7 +99,7 @@ class LightProbeGenerator {
|
|
|
98
99
|
// evaluate SH basis functions in direction dir
|
|
99
100
|
SphericalHarmonics3.getBasisAt( dir, shBasis );
|
|
100
101
|
|
|
101
|
-
//
|
|
102
|
+
// accumulate
|
|
102
103
|
for ( let j = 0; j < 9; j ++ ) {
|
|
103
104
|
|
|
104
105
|
shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
|
|
@@ -126,7 +127,9 @@ class LightProbeGenerator {
|
|
|
126
127
|
|
|
127
128
|
}
|
|
128
129
|
|
|
129
|
-
static fromCubeRenderTarget( renderer, cubeRenderTarget ) {
|
|
130
|
+
static async fromCubeRenderTarget( renderer, cubeRenderTarget ) {
|
|
131
|
+
|
|
132
|
+
const flip = renderer.coordinateSystem === WebGLCoordinateSystem ? - 1 : 1;
|
|
130
133
|
|
|
131
134
|
// The renderTarget must be set to RGBA in order to make readRenderTargetPixels works
|
|
132
135
|
let totalWeight = 0;
|
|
@@ -143,12 +146,11 @@ class LightProbeGenerator {
|
|
|
143
146
|
const shCoefficients = sh.coefficients;
|
|
144
147
|
|
|
145
148
|
const dataType = cubeRenderTarget.texture.type;
|
|
149
|
+
const imageWidth = cubeRenderTarget.width; // assumed to be square
|
|
146
150
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const imageWidth = cubeRenderTarget.width; // assumed to be square
|
|
151
|
+
let data;
|
|
150
152
|
|
|
151
|
-
|
|
153
|
+
if ( renderer.isWebGLRenderer ) {
|
|
152
154
|
|
|
153
155
|
if ( dataType === HalfFloatType ) {
|
|
154
156
|
|
|
@@ -162,7 +164,19 @@ class LightProbeGenerator {
|
|
|
162
164
|
|
|
163
165
|
}
|
|
164
166
|
|
|
165
|
-
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
for ( let faceIndex = 0; faceIndex < 6; faceIndex ++ ) {
|
|
170
|
+
|
|
171
|
+
if ( renderer.isWebGLRenderer ) {
|
|
172
|
+
|
|
173
|
+
await renderer.readRenderTargetPixelsAsync( cubeRenderTarget, 0, 0, imageWidth, imageWidth, data, faceIndex );
|
|
174
|
+
|
|
175
|
+
} else {
|
|
176
|
+
|
|
177
|
+
data = await renderer.readRenderTargetPixelsAsync( cubeRenderTarget, 0, 0, imageWidth, imageWidth, 0, faceIndex );
|
|
178
|
+
|
|
179
|
+
}
|
|
166
180
|
|
|
167
181
|
const pixelSize = 2 / imageWidth;
|
|
168
182
|
|
|
@@ -194,15 +208,15 @@ class LightProbeGenerator {
|
|
|
194
208
|
|
|
195
209
|
const pixelIndex = i / 4;
|
|
196
210
|
|
|
197
|
-
const col =
|
|
211
|
+
const col = ( 1 - ( pixelIndex % imageWidth + 0.5 ) * pixelSize ) * flip;
|
|
198
212
|
|
|
199
213
|
const row = 1 - ( Math.floor( pixelIndex / imageWidth ) + 0.5 ) * pixelSize;
|
|
200
214
|
|
|
201
215
|
switch ( faceIndex ) {
|
|
202
216
|
|
|
203
|
-
case 0: coord.set( 1, row,
|
|
217
|
+
case 0: coord.set( - 1 * flip, row, col * flip ); break;
|
|
204
218
|
|
|
205
|
-
case 1: coord.set(
|
|
219
|
+
case 1: coord.set( 1 * flip, row, - col * flip ); break;
|
|
206
220
|
|
|
207
221
|
case 2: coord.set( col, 1, - row ); break;
|
|
208
222
|
|
|
@@ -228,7 +242,7 @@ class LightProbeGenerator {
|
|
|
228
242
|
// evaluate SH basis functions in direction dir
|
|
229
243
|
SphericalHarmonics3.getBasisAt( dir, shBasis );
|
|
230
244
|
|
|
231
|
-
//
|
|
245
|
+
// accumulate
|
|
232
246
|
for ( let j = 0; j < 9; j ++ ) {
|
|
233
247
|
|
|
234
248
|
shCoefficients[ j ].x += shBasis[ j ] * color.r * weight;
|
|
@@ -62,6 +62,31 @@ class LineGeometry extends LineSegmentsGeometry {
|
|
|
62
62
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
setFromPoints( points ) {
|
|
66
|
+
|
|
67
|
+
// converts a vector3 or vector2 array to pairs format
|
|
68
|
+
|
|
69
|
+
const length = points.length - 1;
|
|
70
|
+
const positions = new Float32Array( 6 * length );
|
|
71
|
+
|
|
72
|
+
for ( let i = 0; i < length; i ++ ) {
|
|
73
|
+
|
|
74
|
+
positions[ 6 * i ] = points[ i ].x;
|
|
75
|
+
positions[ 6 * i + 1 ] = points[ i ].y;
|
|
76
|
+
positions[ 6 * i + 2 ] = points[ i ].z || 0;
|
|
77
|
+
|
|
78
|
+
positions[ 6 * i + 3 ] = points[ i + 1 ].x;
|
|
79
|
+
positions[ 6 * i + 4 ] = points[ i + 1 ].y;
|
|
80
|
+
positions[ 6 * i + 5 ] = points[ i + 1 ].z || 0;
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
super.setPositions( positions );
|
|
85
|
+
|
|
86
|
+
return this;
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
65
90
|
fromLine( line ) {
|
|
66
91
|
|
|
67
92
|
const geometry = line.geometry;
|
|
@@ -82,6 +82,8 @@ class LineSegmentsGeometry extends InstancedBufferGeometry {
|
|
|
82
82
|
this.setAttribute( 'instanceStart', new InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz
|
|
83
83
|
this.setAttribute( 'instanceEnd', new InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz
|
|
84
84
|
|
|
85
|
+
this.instanceCount = this.attributes.instanceStart.count;
|
|
86
|
+
|
|
85
87
|
//
|
|
86
88
|
|
|
87
89
|
this.computeBoundingBox();
|
|
@@ -9,12 +9,11 @@ import {
|
|
|
9
9
|
Sphere,
|
|
10
10
|
Vector3,
|
|
11
11
|
Vector4,
|
|
12
|
-
Line2NodeMaterial
|
|
13
|
-
|
|
12
|
+
Line2NodeMaterial,
|
|
13
|
+
Vector2
|
|
14
|
+
} from 'three/webgpu';
|
|
14
15
|
import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
|
|
15
16
|
|
|
16
|
-
const _viewport = new Vector4();
|
|
17
|
-
|
|
18
17
|
const _start = new Vector3();
|
|
19
18
|
const _end = new Vector3();
|
|
20
19
|
|
|
@@ -30,6 +29,7 @@ const _closestPoint = new Vector3();
|
|
|
30
29
|
const _box = new Box3();
|
|
31
30
|
const _sphere = new Sphere();
|
|
32
31
|
const _clipToWorldVector = new Vector4();
|
|
32
|
+
const _viewport = new Vector4();
|
|
33
33
|
|
|
34
34
|
let _ray, _lineWidth;
|
|
35
35
|
|
|
@@ -94,8 +94,7 @@ function raycastWorldUnits( lineSegments, intersects ) {
|
|
|
94
94
|
function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
95
95
|
|
|
96
96
|
const projectionMatrix = camera.projectionMatrix;
|
|
97
|
-
const
|
|
98
|
-
const resolution = material.resolution;
|
|
97
|
+
const resolution = lineSegments.resolution;
|
|
99
98
|
const matrixWorld = lineSegments.matrixWorld;
|
|
100
99
|
|
|
101
100
|
const geometry = lineSegments.geometry;
|
|
@@ -234,6 +233,8 @@ class LineSegments2 extends Mesh {
|
|
|
234
233
|
|
|
235
234
|
this.type = 'LineSegments2';
|
|
236
235
|
|
|
236
|
+
this.resolution = new Vector2();
|
|
237
|
+
|
|
237
238
|
}
|
|
238
239
|
|
|
239
240
|
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
@@ -265,6 +266,13 @@ class LineSegments2 extends Mesh {
|
|
|
265
266
|
|
|
266
267
|
}
|
|
267
268
|
|
|
269
|
+
onBeforeRender( renderer ) {
|
|
270
|
+
|
|
271
|
+
renderer.getViewport( _viewport );
|
|
272
|
+
this.resolution.set( _viewport.z, _viewport.w );
|
|
273
|
+
|
|
274
|
+
}
|
|
275
|
+
|
|
268
276
|
raycast( raycaster, intersects ) {
|
|
269
277
|
|
|
270
278
|
const worldUnits = this.material.worldUnits;
|
|
@@ -304,7 +312,7 @@ class LineSegments2 extends Mesh {
|
|
|
304
312
|
} else {
|
|
305
313
|
|
|
306
314
|
const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
|
|
307
|
-
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere,
|
|
315
|
+
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this.resolution );
|
|
308
316
|
|
|
309
317
|
}
|
|
310
318
|
|
|
@@ -334,7 +342,7 @@ class LineSegments2 extends Mesh {
|
|
|
334
342
|
} else {
|
|
335
343
|
|
|
336
344
|
const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
|
|
337
|
-
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox,
|
|
345
|
+
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this.resolution );
|
|
338
346
|
|
|
339
347
|
}
|
|
340
348
|
|
|
@@ -358,19 +366,6 @@ class LineSegments2 extends Mesh {
|
|
|
358
366
|
|
|
359
367
|
}
|
|
360
368
|
|
|
361
|
-
onBeforeRender( renderer ) {
|
|
362
|
-
|
|
363
|
-
const uniforms = this.material.uniforms;
|
|
364
|
-
|
|
365
|
-
if ( uniforms && uniforms.resolution ) {
|
|
366
|
-
|
|
367
|
-
renderer.getViewport( _viewport );
|
|
368
|
-
this.material.uniforms.resolution.value.set( _viewport.z, _viewport.w );
|
|
369
|
-
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
}
|
|
373
|
-
|
|
374
369
|
}
|
|
375
370
|
|
|
376
371
|
export { LineSegments2 };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {
|
|
2
|
+
InstancedInterleavedBuffer,
|
|
3
|
+
InterleavedBufferAttribute,
|
|
4
|
+
Line2NodeMaterial,
|
|
5
|
+
Mesh,
|
|
6
|
+
Vector3
|
|
7
|
+
} from 'three/webgpu';
|
|
8
|
+
|
|
9
|
+
import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
|
|
10
|
+
|
|
11
|
+
const _start = new Vector3();
|
|
12
|
+
const _end = new Vector3();
|
|
13
|
+
|
|
14
|
+
class Wireframe extends Mesh {
|
|
15
|
+
|
|
16
|
+
constructor( geometry = new LineSegmentsGeometry(), material = new Line2NodeMaterial( { color: Math.random() * 0xffffff } ) ) {
|
|
17
|
+
|
|
18
|
+
super( geometry, material );
|
|
19
|
+
|
|
20
|
+
this.isWireframe = true;
|
|
21
|
+
|
|
22
|
+
this.type = 'Wireframe';
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
27
|
+
|
|
28
|
+
computeLineDistances() {
|
|
29
|
+
|
|
30
|
+
const geometry = this.geometry;
|
|
31
|
+
|
|
32
|
+
const instanceStart = geometry.attributes.instanceStart;
|
|
33
|
+
const instanceEnd = geometry.attributes.instanceEnd;
|
|
34
|
+
const lineDistances = new Float32Array( 2 * instanceStart.count );
|
|
35
|
+
|
|
36
|
+
for ( let i = 0, j = 0, l = instanceStart.count; i < l; i ++, j += 2 ) {
|
|
37
|
+
|
|
38
|
+
_start.fromBufferAttribute( instanceStart, i );
|
|
39
|
+
_end.fromBufferAttribute( instanceEnd, i );
|
|
40
|
+
|
|
41
|
+
lineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];
|
|
42
|
+
lineDistances[ j + 1 ] = lineDistances[ j ] + _start.distanceTo( _end );
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1
|
|
47
|
+
|
|
48
|
+
geometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0
|
|
49
|
+
geometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1
|
|
50
|
+
|
|
51
|
+
return this;
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export { Wireframe };
|
|
@@ -745,6 +745,7 @@ class Rhino3dmLoader extends Loader {
|
|
|
745
745
|
|
|
746
746
|
const texture = new CanvasTexture( ctx.canvas );
|
|
747
747
|
texture.minFilter = LinearFilter;
|
|
748
|
+
texture.generateMipmaps = false;
|
|
748
749
|
texture.wrapS = ClampToEdgeWrapping;
|
|
749
750
|
texture.wrapT = ClampToEdgeWrapping;
|
|
750
751
|
|
|
@@ -122,6 +122,8 @@ class ThreeMFLoader extends Loader {
|
|
|
122
122
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
let rootModelFile = null;
|
|
126
|
+
|
|
125
127
|
for ( file in zip ) {
|
|
126
128
|
|
|
127
129
|
if ( file.match( /\_rels\/.rels$/ ) ) {
|
|
@@ -132,9 +134,13 @@ class ThreeMFLoader extends Loader {
|
|
|
132
134
|
|
|
133
135
|
modelRelsName = file;
|
|
134
136
|
|
|
135
|
-
} else if ( file.match( /^3D
|
|
137
|
+
} else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) {
|
|
138
|
+
|
|
139
|
+
rootModelFile = file;
|
|
136
140
|
|
|
137
|
-
|
|
141
|
+
} else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) {
|
|
142
|
+
|
|
143
|
+
modelPartNames.push( file ); // sub models
|
|
138
144
|
|
|
139
145
|
} else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
|
|
140
146
|
|
|
@@ -144,6 +150,8 @@ class ThreeMFLoader extends Loader {
|
|
|
144
150
|
|
|
145
151
|
}
|
|
146
152
|
|
|
153
|
+
modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models
|
|
154
|
+
|
|
147
155
|
if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
|
|
148
156
|
|
|
149
157
|
//
|
|
@@ -375,6 +383,73 @@ class ThreeMFLoader extends Loader {
|
|
|
375
383
|
|
|
376
384
|
}
|
|
377
385
|
|
|
386
|
+
function parseImplicitIONode( implicitIONode ) {
|
|
387
|
+
|
|
388
|
+
const portNodes = implicitIONode.children;
|
|
389
|
+
const portArguments = {};
|
|
390
|
+
for ( let i = 0; i < portNodes.length; i ++ ) {
|
|
391
|
+
|
|
392
|
+
const args = { type: portNodes[ i ].nodeName.substring( 2 ) };
|
|
393
|
+
for ( let j = 0; j < portNodes[ i ].attributes.length; j ++ ) {
|
|
394
|
+
|
|
395
|
+
const attrib = portNodes[ i ].attributes[ j ];
|
|
396
|
+
if ( attrib.specified ) {
|
|
397
|
+
|
|
398
|
+
args[ attrib.name ] = attrib.value;
|
|
399
|
+
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
portArguments[ portNodes[ i ].getAttribute( 'identifier' ) ] = args;
|
|
405
|
+
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
return portArguments;
|
|
409
|
+
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
function parseImplicitFunctionNode( implicitFunctionNode ) {
|
|
413
|
+
|
|
414
|
+
const implicitFunctionData = {
|
|
415
|
+
id: implicitFunctionNode.getAttribute( 'id' ),
|
|
416
|
+
displayname: implicitFunctionNode.getAttribute( 'displayname' )
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
const functionNodes = implicitFunctionNode.children;
|
|
420
|
+
|
|
421
|
+
const operations = {};
|
|
422
|
+
|
|
423
|
+
for ( let i = 0; i < functionNodes.length; i ++ ) {
|
|
424
|
+
|
|
425
|
+
const operatorNode = functionNodes[ i ];
|
|
426
|
+
|
|
427
|
+
if ( operatorNode.nodeName === 'i:in' || operatorNode.nodeName === 'i:out' ) {
|
|
428
|
+
|
|
429
|
+
operations[ operatorNode.nodeName === 'i:in' ? 'inputs' : 'outputs' ] = parseImplicitIONode( operatorNode );
|
|
430
|
+
|
|
431
|
+
} else {
|
|
432
|
+
|
|
433
|
+
const inputNodes = operatorNode.children;
|
|
434
|
+
const portArguments = { 'op': operatorNode.nodeName.substring( 2 ), 'identifier': operatorNode.getAttribute( 'identifier' ) };
|
|
435
|
+
for ( let i = 0; i < inputNodes.length; i ++ ) {
|
|
436
|
+
|
|
437
|
+
portArguments[ inputNodes[ i ].nodeName.substring( 2 ) ] = parseImplicitIONode( inputNodes[ i ] );
|
|
438
|
+
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
operations[ portArguments[ 'identifier' ] ] = portArguments;
|
|
442
|
+
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
implicitFunctionData[ 'operations' ] = operations;
|
|
448
|
+
|
|
449
|
+
return implicitFunctionData;
|
|
450
|
+
|
|
451
|
+
}
|
|
452
|
+
|
|
378
453
|
function parseMetallicDisplaypropertiesNode( metallicDisplaypropetiesNode ) {
|
|
379
454
|
|
|
380
455
|
const metallicDisplaypropertiesData = {
|
|
@@ -673,6 +748,25 @@ class ThreeMFLoader extends Loader {
|
|
|
673
748
|
|
|
674
749
|
//
|
|
675
750
|
|
|
751
|
+
const implicitFunctionNodes = resourcesNode.querySelectorAll( 'implicitfunction' );
|
|
752
|
+
|
|
753
|
+
if ( implicitFunctionNodes.length > 0 ) {
|
|
754
|
+
|
|
755
|
+
resourcesData[ 'implicitfunction' ] = {};
|
|
756
|
+
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
for ( let i = 0; i < implicitFunctionNodes.length; i ++ ) {
|
|
761
|
+
|
|
762
|
+
const implicitFunctionNode = implicitFunctionNodes[ i ];
|
|
763
|
+
const implicitFunctionData = parseImplicitFunctionNode( implicitFunctionNode );
|
|
764
|
+
resourcesData[ 'implicitfunction' ][ implicitFunctionData[ 'id' ] ] = implicitFunctionData;
|
|
765
|
+
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
//
|
|
769
|
+
|
|
676
770
|
resourcesData[ 'pbmetallicdisplayproperties' ] = {};
|
|
677
771
|
const pbmetallicdisplaypropertiesNodes = resourcesNode.querySelectorAll( 'pbmetallicdisplayproperties' );
|
|
678
772
|
|
|
@@ -846,11 +940,13 @@ class ThreeMFLoader extends Loader {
|
|
|
846
940
|
case 'linear':
|
|
847
941
|
texture.magFilter = LinearFilter;
|
|
848
942
|
texture.minFilter = LinearFilter;
|
|
943
|
+
texture.generateMipmaps = false;
|
|
849
944
|
break;
|
|
850
945
|
|
|
851
946
|
case 'nearest':
|
|
852
947
|
texture.magFilter = NearestFilter;
|
|
853
948
|
texture.minFilter = NearestFilter;
|
|
949
|
+
texture.generateMipmaps = false;
|
|
854
950
|
break;
|
|
855
951
|
|
|
856
952
|
default:
|
|
@@ -1367,6 +1463,12 @@ class ThreeMFLoader extends Loader {
|
|
|
1367
1463
|
|
|
1368
1464
|
}
|
|
1369
1465
|
|
|
1466
|
+
if ( modelData.resources.implicitfunction ) {
|
|
1467
|
+
|
|
1468
|
+
console.warn( 'THREE.ThreeMFLoader: Implicit Functions are implemented in data-only.', modelData.resources.implicitfunction );
|
|
1469
|
+
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1370
1472
|
}
|
|
1371
1473
|
|
|
1372
1474
|
function buildObjects( data3mf ) {
|
|
@@ -204,7 +204,7 @@ class BVHLoader extends Loader {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
/*
|
|
207
|
-
Recursively parses the
|
|
207
|
+
Recursively parses the HIERARCHY section of the BVH file
|
|
208
208
|
|
|
209
209
|
- lines: all lines of the file. lines are consumed as we go along.
|
|
210
210
|
- firstline: line containing the node type and name e.g. 'JOINT hip'
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
BufferGeometry,
|
|
6
6
|
ClampToEdgeWrapping,
|
|
7
7
|
Color,
|
|
8
|
+
ColorManagement,
|
|
8
9
|
DirectionalLight,
|
|
9
10
|
DoubleSide,
|
|
10
11
|
FileLoader,
|
|
@@ -298,7 +299,7 @@ class ColladaLoader extends Loader {
|
|
|
298
299
|
|
|
299
300
|
if ( hasChildren === false ) {
|
|
300
301
|
|
|
301
|
-
// since 'id' attributes can be optional, it's necessary to generate a UUID for
|
|
302
|
+
// since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment
|
|
302
303
|
|
|
303
304
|
library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;
|
|
304
305
|
|
|
@@ -976,7 +977,7 @@ class ColladaLoader extends Loader {
|
|
|
976
977
|
}
|
|
977
978
|
|
|
978
979
|
// we sort the joints in descending order based on the weights.
|
|
979
|
-
// this ensures, we only
|
|
980
|
+
// this ensures, we only proceed the most important joints of the vertex
|
|
980
981
|
|
|
981
982
|
vertexSkinData.sort( descending );
|
|
982
983
|
|
|
@@ -1592,7 +1593,7 @@ class ColladaLoader extends Loader {
|
|
|
1592
1593
|
|
|
1593
1594
|
}
|
|
1594
1595
|
|
|
1595
|
-
// create texture if image is
|
|
1596
|
+
// create texture if image is available
|
|
1596
1597
|
|
|
1597
1598
|
if ( image !== null ) {
|
|
1598
1599
|
|
|
@@ -1681,9 +1682,9 @@ class ColladaLoader extends Loader {
|
|
|
1681
1682
|
|
|
1682
1683
|
}
|
|
1683
1684
|
|
|
1684
|
-
material.color
|
|
1685
|
-
if ( material.specular ) material.specular
|
|
1686
|
-
if ( material.emissive ) material.emissive
|
|
1685
|
+
ColorManagement.toWorkingColorSpace( material.color, SRGBColorSpace );
|
|
1686
|
+
if ( material.specular ) ColorManagement.toWorkingColorSpace( material.specular, SRGBColorSpace );
|
|
1687
|
+
if ( material.emissive ) ColorManagement.toWorkingColorSpace( material.emissive, SRGBColorSpace );
|
|
1687
1688
|
|
|
1688
1689
|
//
|
|
1689
1690
|
|
|
@@ -2019,7 +2020,8 @@ class ColladaLoader extends Loader {
|
|
|
2019
2020
|
|
|
2020
2021
|
case 'color':
|
|
2021
2022
|
const array = parseFloats( child.textContent );
|
|
2022
|
-
data.color = new Color().fromArray( array )
|
|
2023
|
+
data.color = new Color().fromArray( array );
|
|
2024
|
+
ColorManagement.toWorkingColorSpace( data.color, SRGBColorSpace );
|
|
2023
2025
|
break;
|
|
2024
2026
|
|
|
2025
2027
|
case 'falloff_angle':
|
|
@@ -2390,7 +2392,7 @@ class ColladaLoader extends Loader {
|
|
|
2390
2392
|
break;
|
|
2391
2393
|
|
|
2392
2394
|
default:
|
|
2393
|
-
console.warn( 'THREE.ColladaLoader:
|
|
2395
|
+
console.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );
|
|
2394
2396
|
|
|
2395
2397
|
}
|
|
2396
2398
|
|
|
@@ -2548,8 +2550,9 @@ class ColladaLoader extends Loader {
|
|
|
2548
2550
|
tempColor.setRGB(
|
|
2549
2551
|
array[ startIndex + 0 ],
|
|
2550
2552
|
array[ startIndex + 1 ],
|
|
2551
|
-
array[ startIndex + 2 ]
|
|
2552
|
-
|
|
2553
|
+
array[ startIndex + 2 ],
|
|
2554
|
+
SRGBColorSpace
|
|
2555
|
+
);
|
|
2553
2556
|
|
|
2554
2557
|
array[ startIndex + 0 ] = tempColor.r;
|
|
2555
2558
|
array[ startIndex + 1 ] = tempColor.g;
|
|
@@ -3431,7 +3434,7 @@ class ColladaLoader extends Loader {
|
|
|
3431
3434
|
let i, j, data;
|
|
3432
3435
|
|
|
3433
3436
|
// a skeleton can have multiple root bones. collada expresses this
|
|
3434
|
-
//
|
|
3437
|
+
// situation with multiple "skeleton" tags per controller instance
|
|
3435
3438
|
|
|
3436
3439
|
for ( i = 0; i < skeletons.length; i ++ ) {
|
|
3437
3440
|
|
|
@@ -3968,7 +3971,7 @@ class ColladaLoader extends Loader {
|
|
|
3968
3971
|
} else {
|
|
3969
3972
|
|
|
3970
3973
|
result += '\n';
|
|
3971
|
-
stack.push
|
|
3974
|
+
stack.push( ...node.childNodes );
|
|
3972
3975
|
|
|
3973
3976
|
}
|
|
3974
3977
|
|
|
@@ -109,6 +109,33 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
109
109
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
function loadRGBMip( buffer, dataOffset, width, height ) {
|
|
113
|
+
|
|
114
|
+
const dataLength = width * height * 3;
|
|
115
|
+
const srcBuffer = new Uint8Array( buffer, dataOffset, dataLength );
|
|
116
|
+
const byteArray = new Uint8Array( width * height * 4 );
|
|
117
|
+
let dst = 0;
|
|
118
|
+
let src = 0;
|
|
119
|
+
for ( let y = 0; y < height; y ++ ) {
|
|
120
|
+
|
|
121
|
+
for ( let x = 0; x < width; x ++ ) {
|
|
122
|
+
|
|
123
|
+
const b = srcBuffer[ src ]; src ++;
|
|
124
|
+
const g = srcBuffer[ src ]; src ++;
|
|
125
|
+
const r = srcBuffer[ src ]; src ++;
|
|
126
|
+
byteArray[ dst ] = r; dst ++; //r
|
|
127
|
+
byteArray[ dst ] = g; dst ++; //g
|
|
128
|
+
byteArray[ dst ] = b; dst ++; //b
|
|
129
|
+
byteArray[ dst ] = 255; dst ++; //a
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return byteArray;
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
112
139
|
const FOURCC_DXT1 = fourCCToInt32( 'DXT1' );
|
|
113
140
|
const FOURCC_DXT3 = fourCCToInt32( 'DXT3' );
|
|
114
141
|
const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
|
|
@@ -161,6 +188,7 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
161
188
|
const fourCC = header[ off_pfFourCC ];
|
|
162
189
|
|
|
163
190
|
let isRGBAUncompressed = false;
|
|
191
|
+
let isRGBUncompressed = false;
|
|
164
192
|
|
|
165
193
|
let dataOffset = header[ off_size ] + 4;
|
|
166
194
|
|
|
@@ -236,6 +264,15 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
236
264
|
blockBytes = 64;
|
|
237
265
|
dds.format = RGBAFormat;
|
|
238
266
|
|
|
267
|
+
} else if ( header[ off_RGBBitCount ] === 24
|
|
268
|
+
&& header[ off_RBitMask ] & 0xff0000
|
|
269
|
+
&& header[ off_GBitMask ] & 0xff00
|
|
270
|
+
&& header[ off_BBitMask ] & 0xff ) {
|
|
271
|
+
|
|
272
|
+
isRGBUncompressed = true;
|
|
273
|
+
blockBytes = 64;
|
|
274
|
+
dds.format = RGBAFormat;
|
|
275
|
+
|
|
239
276
|
} else {
|
|
240
277
|
|
|
241
278
|
console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) );
|
|
@@ -290,6 +327,11 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
290
327
|
byteArray = loadARGBMip( buffer, dataOffset, width, height );
|
|
291
328
|
dataLength = byteArray.length;
|
|
292
329
|
|
|
330
|
+
} else if ( isRGBUncompressed ) {
|
|
331
|
+
|
|
332
|
+
byteArray = loadRGBMip( buffer, dataOffset, width, height );
|
|
333
|
+
dataLength = width * height * 3;
|
|
334
|
+
|
|
293
335
|
} else {
|
|
294
336
|
|
|
295
337
|
dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes;
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
BufferAttribute,
|
|
3
3
|
BufferGeometry,
|
|
4
4
|
Color,
|
|
5
|
+
ColorManagement,
|
|
5
6
|
FileLoader,
|
|
6
7
|
Loader,
|
|
7
8
|
LinearSRGBColorSpace,
|
|
@@ -235,7 +236,8 @@ class DRACOLoader extends Loader {
|
|
|
235
236
|
|
|
236
237
|
for ( let i = 0, il = attribute.count; i < il; i ++ ) {
|
|
237
238
|
|
|
238
|
-
_color.fromBufferAttribute( attribute, i )
|
|
239
|
+
_color.fromBufferAttribute( attribute, i );
|
|
240
|
+
ColorManagement.toWorkingColorSpace( _color, SRGBColorSpace );
|
|
239
241
|
attribute.setXYZ( i, _color.r, _color.g, _color.b );
|
|
240
242
|
|
|
241
243
|
}
|