@plastic-software/three 0.167.4 → 0.174.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +36217 -23964
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46744
- package/build/three.module.min.js +2 -3
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50671
- package/build/three.webgpu.min.js +2 -3
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +29 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +61 -18
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +96 -2
- package/src/math/MathUtils.js +182 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -10,10 +10,7 @@ import {
|
|
|
10
10
|
Matrix4,
|
|
11
11
|
Mesh,
|
|
12
12
|
MeshStandardMaterial,
|
|
13
|
-
ShaderMaterial,
|
|
14
13
|
SRGBColorSpace,
|
|
15
|
-
UniformsLib,
|
|
16
|
-
UniformsUtils,
|
|
17
14
|
Vector3,
|
|
18
15
|
Ray
|
|
19
16
|
} from 'three';
|
|
@@ -45,134 +42,6 @@ const COLOR_SPACE_LDRAW = SRGBColorSpace;
|
|
|
45
42
|
const _tempVec0 = new Vector3();
|
|
46
43
|
const _tempVec1 = new Vector3();
|
|
47
44
|
|
|
48
|
-
class LDrawConditionalLineMaterial extends ShaderMaterial {
|
|
49
|
-
|
|
50
|
-
constructor( parameters ) {
|
|
51
|
-
|
|
52
|
-
super( {
|
|
53
|
-
|
|
54
|
-
uniforms: UniformsUtils.merge( [
|
|
55
|
-
UniformsLib.fog,
|
|
56
|
-
{
|
|
57
|
-
diffuse: {
|
|
58
|
-
value: new Color()
|
|
59
|
-
},
|
|
60
|
-
opacity: {
|
|
61
|
-
value: 1.0
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
] ),
|
|
65
|
-
|
|
66
|
-
vertexShader: /* glsl */`
|
|
67
|
-
attribute vec3 control0;
|
|
68
|
-
attribute vec3 control1;
|
|
69
|
-
attribute vec3 direction;
|
|
70
|
-
varying float discardFlag;
|
|
71
|
-
|
|
72
|
-
#include <common>
|
|
73
|
-
#include <color_pars_vertex>
|
|
74
|
-
#include <fog_pars_vertex>
|
|
75
|
-
#include <logdepthbuf_pars_vertex>
|
|
76
|
-
#include <clipping_planes_pars_vertex>
|
|
77
|
-
void main() {
|
|
78
|
-
#include <color_vertex>
|
|
79
|
-
|
|
80
|
-
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
|
|
81
|
-
gl_Position = projectionMatrix * mvPosition;
|
|
82
|
-
|
|
83
|
-
// Transform the line segment ends and control points into camera clip space
|
|
84
|
-
vec4 c0 = projectionMatrix * modelViewMatrix * vec4( control0, 1.0 );
|
|
85
|
-
vec4 c1 = projectionMatrix * modelViewMatrix * vec4( control1, 1.0 );
|
|
86
|
-
vec4 p0 = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
87
|
-
vec4 p1 = projectionMatrix * modelViewMatrix * vec4( position + direction, 1.0 );
|
|
88
|
-
|
|
89
|
-
c0.xy /= c0.w;
|
|
90
|
-
c1.xy /= c1.w;
|
|
91
|
-
p0.xy /= p0.w;
|
|
92
|
-
p1.xy /= p1.w;
|
|
93
|
-
|
|
94
|
-
// Get the direction of the segment and an orthogonal vector
|
|
95
|
-
vec2 dir = p1.xy - p0.xy;
|
|
96
|
-
vec2 norm = vec2( -dir.y, dir.x );
|
|
97
|
-
|
|
98
|
-
// Get control point directions from the line
|
|
99
|
-
vec2 c0dir = c0.xy - p1.xy;
|
|
100
|
-
vec2 c1dir = c1.xy - p1.xy;
|
|
101
|
-
|
|
102
|
-
// If the vectors to the controls points are pointed in different directions away
|
|
103
|
-
// from the line segment then the line should not be drawn.
|
|
104
|
-
float d0 = dot( normalize( norm ), normalize( c0dir ) );
|
|
105
|
-
float d1 = dot( normalize( norm ), normalize( c1dir ) );
|
|
106
|
-
discardFlag = float( sign( d0 ) != sign( d1 ) );
|
|
107
|
-
|
|
108
|
-
#include <logdepthbuf_vertex>
|
|
109
|
-
#include <clipping_planes_vertex>
|
|
110
|
-
#include <fog_vertex>
|
|
111
|
-
}
|
|
112
|
-
`,
|
|
113
|
-
|
|
114
|
-
fragmentShader: /* glsl */`
|
|
115
|
-
uniform vec3 diffuse;
|
|
116
|
-
uniform float opacity;
|
|
117
|
-
varying float discardFlag;
|
|
118
|
-
|
|
119
|
-
#include <common>
|
|
120
|
-
#include <color_pars_fragment>
|
|
121
|
-
#include <fog_pars_fragment>
|
|
122
|
-
#include <logdepthbuf_pars_fragment>
|
|
123
|
-
#include <clipping_planes_pars_fragment>
|
|
124
|
-
void main() {
|
|
125
|
-
|
|
126
|
-
if ( discardFlag > 0.5 ) discard;
|
|
127
|
-
|
|
128
|
-
#include <clipping_planes_fragment>
|
|
129
|
-
vec3 outgoingLight = vec3( 0.0 );
|
|
130
|
-
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
131
|
-
#include <logdepthbuf_fragment>
|
|
132
|
-
#include <color_fragment>
|
|
133
|
-
outgoingLight = diffuseColor.rgb; // simple shader
|
|
134
|
-
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
|
|
135
|
-
#include <tonemapping_fragment>
|
|
136
|
-
#include <colorspace_fragment>
|
|
137
|
-
#include <fog_fragment>
|
|
138
|
-
#include <premultiplied_alpha_fragment>
|
|
139
|
-
}
|
|
140
|
-
`,
|
|
141
|
-
|
|
142
|
-
} );
|
|
143
|
-
|
|
144
|
-
Object.defineProperties( this, {
|
|
145
|
-
|
|
146
|
-
opacity: {
|
|
147
|
-
get: function () {
|
|
148
|
-
|
|
149
|
-
return this.uniforms.opacity.value;
|
|
150
|
-
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
set: function ( value ) {
|
|
154
|
-
|
|
155
|
-
this.uniforms.opacity.value = value;
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
color: {
|
|
161
|
-
get: function () {
|
|
162
|
-
|
|
163
|
-
return this.uniforms.diffuse.value;
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
} );
|
|
169
|
-
|
|
170
|
-
this.setValues( parameters );
|
|
171
|
-
this.isLDrawConditionalLineMaterial = true;
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
}
|
|
176
45
|
|
|
177
46
|
class ConditionalLineSegments extends LineSegments {
|
|
178
47
|
|
|
@@ -1897,19 +1766,19 @@ class LDrawLoader extends Loader {
|
|
|
1897
1766
|
// This object is a map from file names to paths. It agilizes the paths search. If it is not set then files will be searched by trial and error.
|
|
1898
1767
|
this.fileMap = {};
|
|
1899
1768
|
|
|
1900
|
-
// Initializes the materials library with default materials
|
|
1901
|
-
this.setMaterials( [] );
|
|
1902
|
-
|
|
1903
1769
|
// If this flag is set to true the vertex normals will be smoothed.
|
|
1904
1770
|
this.smoothNormals = true;
|
|
1905
1771
|
|
|
1906
1772
|
// The path to load parts from the LDraw parts library from.
|
|
1907
1773
|
this.partsLibraryPath = '';
|
|
1908
1774
|
|
|
1775
|
+
// this material type must be injected via setConditionalLineMaterial()
|
|
1776
|
+
this.ConditionalLineMaterial = null;
|
|
1777
|
+
|
|
1909
1778
|
// Material assigned to not available colors for meshes and edges
|
|
1910
1779
|
this.missingColorMaterial = new MeshStandardMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF, roughness: 0.3, metalness: 0 } );
|
|
1911
1780
|
this.missingEdgeColorMaterial = new LineBasicMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF } );
|
|
1912
|
-
this.missingConditionalEdgeColorMaterial =
|
|
1781
|
+
this.missingConditionalEdgeColorMaterial = null;
|
|
1913
1782
|
this.edgeMaterialCache.set( this.missingColorMaterial, this.missingEdgeColorMaterial );
|
|
1914
1783
|
this.conditionalEdgeMaterialCache.set( this.missingEdgeColorMaterial, this.missingConditionalEdgeColorMaterial );
|
|
1915
1784
|
|
|
@@ -1922,6 +1791,14 @@ class LDrawLoader extends Loader {
|
|
|
1922
1791
|
|
|
1923
1792
|
}
|
|
1924
1793
|
|
|
1794
|
+
setConditionalLineMaterial( type ) {
|
|
1795
|
+
|
|
1796
|
+
this.ConditionalLineMaterial = type;
|
|
1797
|
+
this.missingConditionalEdgeColorMaterial = new this.ConditionalLineMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, fog: true, color: 0xFF00FF } );
|
|
1798
|
+
return this;
|
|
1799
|
+
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1925
1802
|
async preloadMaterials( url ) {
|
|
1926
1803
|
|
|
1927
1804
|
const fileLoader = new FileLoader( this.manager );
|
|
@@ -1958,6 +1835,9 @@ class LDrawLoader extends Loader {
|
|
|
1958
1835
|
fileLoader.setWithCredentials( this.withCredentials );
|
|
1959
1836
|
fileLoader.load( url, text => {
|
|
1960
1837
|
|
|
1838
|
+
// Initializes the materials library with default materials
|
|
1839
|
+
this.setMaterials( [] );
|
|
1840
|
+
|
|
1961
1841
|
this.partsCache
|
|
1962
1842
|
.parseModel( text, this.materialLibrary )
|
|
1963
1843
|
.then( group => {
|
|
@@ -2384,8 +2264,14 @@ class LDrawLoader extends Loader {
|
|
|
2384
2264
|
edgeMaterial.userData.code = code;
|
|
2385
2265
|
edgeMaterial.name = name + ' - Edge';
|
|
2386
2266
|
|
|
2267
|
+
if ( this.ConditionalLineMaterial === null ) {
|
|
2268
|
+
|
|
2269
|
+
throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specified via .setConditionalLineMaterial().' );
|
|
2270
|
+
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2387
2273
|
// This is the material used for conditional edges
|
|
2388
|
-
const conditionalEdgeMaterial = new
|
|
2274
|
+
const conditionalEdgeMaterial = new this.ConditionalLineMaterial( {
|
|
2389
2275
|
|
|
2390
2276
|
fog: true,
|
|
2391
2277
|
transparent: isTransparent,
|
|
@@ -22,6 +22,7 @@ class LottieLoader extends Loader {
|
|
|
22
22
|
|
|
23
23
|
const texture = new CanvasTexture();
|
|
24
24
|
texture.minFilter = NearestFilter;
|
|
25
|
+
texture.generateMipmaps = false;
|
|
25
26
|
texture.colorSpace = SRGBColorSpace;
|
|
26
27
|
|
|
27
28
|
const loader = new FileLoader( this.manager );
|
|
@@ -32,7 +33,7 @@ class LottieLoader extends Loader {
|
|
|
32
33
|
|
|
33
34
|
const data = JSON.parse( text );
|
|
34
35
|
|
|
35
|
-
// lottie uses container.
|
|
36
|
+
// lottie uses container.offsetWidth and offsetHeight
|
|
36
37
|
// to define width/height
|
|
37
38
|
|
|
38
39
|
const container = document.createElement( 'div' );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Color,
|
|
3
|
+
ColorManagement,
|
|
3
4
|
DefaultLoadingManager,
|
|
4
5
|
FileLoader,
|
|
5
6
|
FrontSide,
|
|
@@ -27,12 +28,12 @@ class MTLLoader extends Loader {
|
|
|
27
28
|
/**
|
|
28
29
|
* Loads and parses a MTL asset from a URL.
|
|
29
30
|
*
|
|
30
|
-
* @param {
|
|
31
|
+
* @param {string} url - URL to the MTL file.
|
|
31
32
|
* @param {Function} [onLoad] - Callback invoked with the loaded object.
|
|
32
33
|
* @param {Function} [onProgress] - Callback for download progress.
|
|
33
34
|
* @param {Function} [onError] - Callback for download errors.
|
|
34
35
|
*
|
|
35
|
-
* @see setPath setResourcePath
|
|
36
|
+
* @see {@link FileLoader#setPath} {@link FileLoader#setResourcePath}
|
|
36
37
|
*
|
|
37
38
|
* @note In order for relative texture references to resolve correctly
|
|
38
39
|
* you must call setResourcePath() explicitly prior to load.
|
|
@@ -83,10 +84,11 @@ class MTLLoader extends Loader {
|
|
|
83
84
|
/**
|
|
84
85
|
* Parses a MTL file.
|
|
85
86
|
*
|
|
86
|
-
* @param {
|
|
87
|
+
* @param {string} text - Content of MTL file
|
|
88
|
+
* @param {string} path
|
|
87
89
|
* @return {MaterialCreator}
|
|
88
90
|
*
|
|
89
|
-
* @see setPath setResourcePath
|
|
91
|
+
* @see {@link FileLoader#setPath} {@link FileLoader#setResourcePath}
|
|
90
92
|
*
|
|
91
93
|
* @note In order for relative texture references to resolve correctly
|
|
92
94
|
* you must call setResourcePath() explicitly prior to parse.
|
|
@@ -384,21 +386,21 @@ class MaterialCreator {
|
|
|
384
386
|
|
|
385
387
|
// Diffuse color (color under white light) using RGB values
|
|
386
388
|
|
|
387
|
-
params.color = new Color().fromArray( value )
|
|
389
|
+
params.color = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
|
|
388
390
|
|
|
389
391
|
break;
|
|
390
392
|
|
|
391
393
|
case 'ks':
|
|
392
394
|
|
|
393
395
|
// Specular color (color when light is reflected from shiny surface) using RGB values
|
|
394
|
-
params.specular = new Color().fromArray( value )
|
|
396
|
+
params.specular = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
|
|
395
397
|
|
|
396
398
|
break;
|
|
397
399
|
|
|
398
400
|
case 'ke':
|
|
399
401
|
|
|
400
402
|
// Emissive using RGB values
|
|
401
|
-
params.emissive = new Color().fromArray( value )
|
|
403
|
+
params.emissive = ColorManagement.toWorkingColorSpace( new Color().fromArray( value ), SRGBColorSpace );
|
|
402
404
|
|
|
403
405
|
break;
|
|
404
406
|
|
|
@@ -441,6 +443,14 @@ class MaterialCreator {
|
|
|
441
443
|
|
|
442
444
|
break;
|
|
443
445
|
|
|
446
|
+
case 'disp':
|
|
447
|
+
|
|
448
|
+
// Displacement texture map
|
|
449
|
+
|
|
450
|
+
setMapForType( 'displacementMap', value );
|
|
451
|
+
|
|
452
|
+
break;
|
|
453
|
+
|
|
444
454
|
case 'map_d':
|
|
445
455
|
|
|
446
456
|
// Alpha map
|
|
@@ -518,6 +528,16 @@ class MaterialCreator {
|
|
|
518
528
|
|
|
519
529
|
}
|
|
520
530
|
|
|
531
|
+
pos = items.indexOf( '-mm' );
|
|
532
|
+
|
|
533
|
+
if ( pos >= 0 ) {
|
|
534
|
+
|
|
535
|
+
matParams.displacementBias = parseFloat( items[ pos + 1 ] );
|
|
536
|
+
matParams.displacementScale = parseFloat( items[ pos + 2 ] );
|
|
537
|
+
items.splice( pos, 3 );
|
|
538
|
+
|
|
539
|
+
}
|
|
540
|
+
|
|
521
541
|
pos = items.indexOf( '-s' );
|
|
522
542
|
|
|
523
543
|
if ( pos >= 0 ) {
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
import { FileLoader, Loader, TextureLoader, RepeatWrapping, MeshBasicNodeMaterial, MeshPhysicalNodeMaterial } from 'three/webgpu';
|
|
2
|
+
|
|
1
3
|
import {
|
|
2
|
-
FileLoader, Loader, TextureLoader, MeshBasicNodeMaterial, MeshPhysicalNodeMaterial, RepeatWrapping,
|
|
3
4
|
float, bool, int, vec2, vec3, vec4, color, texture,
|
|
4
5
|
positionLocal, positionWorld, uv, vertexColor,
|
|
5
6
|
normalLocal, normalWorld, tangentLocal, tangentWorld,
|
|
6
7
|
add, sub, mul, div, mod, abs, sign, floor, ceil, round, pow, sin, cos, tan,
|
|
7
8
|
asin, acos, atan2, sqrt, exp, clamp, min, max, normalize, length, dot, cross, normalMap,
|
|
8
9
|
remap, smoothstep, luminance, mx_rgbtohsv, mx_hsvtorgb,
|
|
9
|
-
mix,
|
|
10
|
+
mix, split,
|
|
10
11
|
mx_ramplr, mx_ramptb, mx_splitlr, mx_splittb,
|
|
11
12
|
mx_fractal_noise_float, mx_noise_float, mx_cell_noise_float, mx_worley_noise_float,
|
|
12
13
|
mx_transform_uv,
|
|
13
14
|
mx_safepower, mx_contrast,
|
|
14
15
|
mx_srgb_texture_to_lin_rec709,
|
|
15
|
-
saturation
|
|
16
|
-
|
|
16
|
+
saturation,
|
|
17
|
+
timerLocal, frameId
|
|
18
|
+
} from 'three/tsl';
|
|
17
19
|
|
|
18
20
|
const colorSpaceLib = {
|
|
19
21
|
mx_srgb_texture_to_lin_rec709
|
|
@@ -21,7 +23,7 @@ const colorSpaceLib = {
|
|
|
21
23
|
|
|
22
24
|
class MXElement {
|
|
23
25
|
|
|
24
|
-
constructor( name, nodeFunc, params =
|
|
26
|
+
constructor( name, nodeFunc, params = [] ) {
|
|
25
27
|
|
|
26
28
|
this.name = name;
|
|
27
29
|
this.nodeFunc = nodeFunc;
|
|
@@ -40,6 +42,12 @@ const mx_divide = ( in1, in2 = float( 1 ) ) => div( in1, in2 );
|
|
|
40
42
|
const mx_modulo = ( in1, in2 = float( 1 ) ) => mod( in1, in2 );
|
|
41
43
|
const mx_power = ( in1, in2 = float( 1 ) ) => pow( in1, in2 );
|
|
42
44
|
const mx_atan2 = ( in1 = float( 0 ), in2 = float( 1 ) ) => atan2( in1, in2 );
|
|
45
|
+
const mx_timer = () => timerLocal();
|
|
46
|
+
const mx_frame = () => frameId;
|
|
47
|
+
const mx_invert = ( in1, amount = float( 1 ) ) => sub( amount, in1 );
|
|
48
|
+
|
|
49
|
+
const separate = ( in1, channel ) => split( in1, channel.at( - 1 ) );
|
|
50
|
+
const extract = ( in1, index ) => in1.element( index );
|
|
43
51
|
|
|
44
52
|
const MXElements = [
|
|
45
53
|
|
|
@@ -71,6 +79,7 @@ const MXElements = [
|
|
|
71
79
|
new MXElement( 'magnitude', length, [ 'in1', 'in2' ] ),
|
|
72
80
|
new MXElement( 'dotproduct', dot, [ 'in1', 'in2' ] ),
|
|
73
81
|
new MXElement( 'crossproduct', cross, [ 'in' ] ),
|
|
82
|
+
new MXElement( 'invert', mx_invert, [ 'in', 'amount' ] ),
|
|
74
83
|
//new MtlXElement( 'transformpoint', ... ),
|
|
75
84
|
//new MtlXElement( 'transformvector', ... ),
|
|
76
85
|
//new MtlXElement( 'transformnormal', ... ),
|
|
@@ -123,10 +132,13 @@ const MXElements = [
|
|
|
123
132
|
new MXElement( 'contrast', mx_contrast, [ 'in', 'amount', 'pivot' ] ),
|
|
124
133
|
//new MtlXElement( 'hsvadjust', ... ),
|
|
125
134
|
new MXElement( 'saturate', saturation, [ 'in', 'amount' ] ),
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
new MXElement( 'extract', extract, [ 'in', 'index' ] ),
|
|
136
|
+
new MXElement( 'separate2', separate, [ 'in' ] ),
|
|
137
|
+
new MXElement( 'separate3', separate, [ 'in' ] ),
|
|
138
|
+
new MXElement( 'separate4', separate, [ 'in' ] ),
|
|
139
|
+
|
|
140
|
+
new MXElement( 'time', mx_timer ),
|
|
141
|
+
new MXElement( 'frame', mx_frame )
|
|
130
142
|
|
|
131
143
|
];
|
|
132
144
|
|
|
@@ -362,11 +374,11 @@ class MaterialXNode {
|
|
|
362
374
|
|
|
363
375
|
}
|
|
364
376
|
|
|
365
|
-
getNode() {
|
|
377
|
+
getNode( out = null ) {
|
|
366
378
|
|
|
367
379
|
let node = this.node;
|
|
368
380
|
|
|
369
|
-
if ( node !== null ) {
|
|
381
|
+
if ( node !== null && out === null ) {
|
|
370
382
|
|
|
371
383
|
return node;
|
|
372
384
|
|
|
@@ -384,7 +396,13 @@ class MaterialXNode {
|
|
|
384
396
|
|
|
385
397
|
} else if ( this.hasReference ) {
|
|
386
398
|
|
|
387
|
-
|
|
399
|
+
if ( this.element === 'output' && this.output && out === null ) {
|
|
400
|
+
|
|
401
|
+
out = this.output;
|
|
402
|
+
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
node = this.materialX.getMaterialXNode( this.referencePath ).getNode( out );
|
|
388
406
|
|
|
389
407
|
} else {
|
|
390
408
|
|
|
@@ -467,7 +485,15 @@ class MaterialXNode {
|
|
|
467
485
|
|
|
468
486
|
const nodeElement = MtlXLibrary[ element ];
|
|
469
487
|
|
|
470
|
-
|
|
488
|
+
if ( out !== null ) {
|
|
489
|
+
|
|
490
|
+
node = nodeElement.nodeFunc( ...this.getNodesByNames( ...nodeElement.params ), out );
|
|
491
|
+
|
|
492
|
+
} else {
|
|
493
|
+
|
|
494
|
+
node = nodeElement.nodeFunc( ...this.getNodesByNames( ...nodeElement.params ) );
|
|
495
|
+
|
|
496
|
+
}
|
|
471
497
|
|
|
472
498
|
}
|
|
473
499
|
|
|
@@ -535,7 +561,7 @@ class MaterialXNode {
|
|
|
535
561
|
|
|
536
562
|
const child = this.getChildByName( name );
|
|
537
563
|
|
|
538
|
-
return child ? child.getNode() : undefined;
|
|
564
|
+
return child ? child.getNode( child.output ) : undefined;
|
|
539
565
|
|
|
540
566
|
}
|
|
541
567
|
|
|
@@ -232,7 +232,7 @@ class NRRDLoader extends Loader {
|
|
|
232
232
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
//parse the data when
|
|
235
|
+
//parse the data when registered as one of this type : 'text', 'ascii', 'txt'
|
|
236
236
|
function parseDataAsText( data, start, end ) {
|
|
237
237
|
|
|
238
238
|
let number = '';
|
|
@@ -12,7 +12,8 @@ import {
|
|
|
12
12
|
Points,
|
|
13
13
|
PointsMaterial,
|
|
14
14
|
Vector3,
|
|
15
|
-
Color
|
|
15
|
+
Color,
|
|
16
|
+
SRGBColorSpace
|
|
16
17
|
} from 'three';
|
|
17
18
|
|
|
18
19
|
// o object_name | g group_name
|
|
@@ -534,8 +535,9 @@ class OBJLoader extends Loader {
|
|
|
534
535
|
_color.setRGB(
|
|
535
536
|
parseFloat( data[ 4 ] ),
|
|
536
537
|
parseFloat( data[ 5 ] ),
|
|
537
|
-
parseFloat( data[ 6 ] )
|
|
538
|
-
|
|
538
|
+
parseFloat( data[ 6 ] ),
|
|
539
|
+
SRGBColorSpace
|
|
540
|
+
);
|
|
539
541
|
|
|
540
542
|
state.colors.push( _color.r, _color.g, _color.b );
|
|
541
543
|
|
|
@@ -6,7 +6,8 @@ import {
|
|
|
6
6
|
Int32BufferAttribute,
|
|
7
7
|
Loader,
|
|
8
8
|
Points,
|
|
9
|
-
PointsMaterial
|
|
9
|
+
PointsMaterial,
|
|
10
|
+
SRGBColorSpace
|
|
10
11
|
} from 'three';
|
|
11
12
|
|
|
12
13
|
class PCDLoader extends Loader {
|
|
@@ -127,15 +128,15 @@ class PCDLoader extends Loader {
|
|
|
127
128
|
|
|
128
129
|
// parse
|
|
129
130
|
|
|
130
|
-
PCDheader.version =
|
|
131
|
-
PCDheader.fields =
|
|
132
|
-
PCDheader.size =
|
|
133
|
-
PCDheader.type =
|
|
134
|
-
PCDheader.count =
|
|
135
|
-
PCDheader.width =
|
|
136
|
-
PCDheader.height =
|
|
137
|
-
PCDheader.viewpoint =
|
|
138
|
-
PCDheader.points =
|
|
131
|
+
PCDheader.version = /^VERSION (.*)/im.exec( PCDheader.str );
|
|
132
|
+
PCDheader.fields = /^FIELDS (.*)/im.exec( PCDheader.str );
|
|
133
|
+
PCDheader.size = /^SIZE (.*)/im.exec( PCDheader.str );
|
|
134
|
+
PCDheader.type = /^TYPE (.*)/im.exec( PCDheader.str );
|
|
135
|
+
PCDheader.count = /^COUNT (.*)/im.exec( PCDheader.str );
|
|
136
|
+
PCDheader.width = /^WIDTH (.*)/im.exec( PCDheader.str );
|
|
137
|
+
PCDheader.height = /^HEIGHT (.*)/im.exec( PCDheader.str );
|
|
138
|
+
PCDheader.viewpoint = /^VIEWPOINT (.*)/im.exec( PCDheader.str );
|
|
139
|
+
PCDheader.points = /^POINTS (.*)/im.exec( PCDheader.str );
|
|
139
140
|
|
|
140
141
|
// evaluate
|
|
141
142
|
|
|
@@ -279,7 +280,7 @@ class PCDLoader extends Loader {
|
|
|
279
280
|
const g = ( ( rgb >> 8 ) & 0x0000ff ) / 255;
|
|
280
281
|
const b = ( ( rgb >> 0 ) & 0x0000ff ) / 255;
|
|
281
282
|
|
|
282
|
-
c.
|
|
283
|
+
c.setRGB( r, g, b, SRGBColorSpace );
|
|
283
284
|
|
|
284
285
|
color.push( c.r, c.g, c.b );
|
|
285
286
|
|
|
@@ -346,7 +347,7 @@ class PCDLoader extends Loader {
|
|
|
346
347
|
const g = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 1 ) / 255.0;
|
|
347
348
|
const b = dataview.getUint8( ( PCDheader.points * offset.rgb ) + PCDheader.size[ rgbIndex ] * i + 0 ) / 255.0;
|
|
348
349
|
|
|
349
|
-
c.
|
|
350
|
+
c.setRGB( r, g, b, SRGBColorSpace );
|
|
350
351
|
|
|
351
352
|
color.push( c.r, c.g, c.b );
|
|
352
353
|
|
|
@@ -404,7 +405,7 @@ class PCDLoader extends Loader {
|
|
|
404
405
|
const g = dataview.getUint8( row + offset.rgb + 1 ) / 255.0;
|
|
405
406
|
const b = dataview.getUint8( row + offset.rgb + 0 ) / 255.0;
|
|
406
407
|
|
|
407
|
-
c.
|
|
408
|
+
c.setRGB( r, g, b, SRGBColorSpace );
|
|
408
409
|
|
|
409
410
|
color.push( c.r, c.g, c.b );
|
|
410
411
|
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
FileLoader,
|
|
4
4
|
Float32BufferAttribute,
|
|
5
5
|
Loader,
|
|
6
|
-
Color
|
|
6
|
+
Color,
|
|
7
|
+
SRGBColorSpace
|
|
7
8
|
} from 'three';
|
|
8
9
|
|
|
9
10
|
class PDBLoader extends Loader {
|
|
@@ -131,7 +132,7 @@ class PDBLoader extends Loader {
|
|
|
131
132
|
const g = atom[ 3 ][ 1 ] / 255;
|
|
132
133
|
const b = atom[ 3 ][ 2 ] / 255;
|
|
133
134
|
|
|
134
|
-
c.
|
|
135
|
+
c.setRGB( r, g, b, SRGBColorSpace );
|
|
135
136
|
|
|
136
137
|
colorsAtoms.push( c.r, c.g, c.b );
|
|
137
138
|
|
|
@@ -3,7 +3,8 @@ import {
|
|
|
3
3
|
FileLoader,
|
|
4
4
|
Float32BufferAttribute,
|
|
5
5
|
Loader,
|
|
6
|
-
Color
|
|
6
|
+
Color,
|
|
7
|
+
SRGBColorSpace
|
|
7
8
|
} from 'three';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -126,19 +127,19 @@ class PLYLoader extends Loader {
|
|
|
126
127
|
const lines = headerText.split( /\r\n|\r|\n/ );
|
|
127
128
|
let currentElement;
|
|
128
129
|
|
|
129
|
-
function make_ply_element_property(
|
|
130
|
+
function make_ply_element_property( propertyValues, propertyNameMapping ) {
|
|
130
131
|
|
|
131
|
-
const property = { type:
|
|
132
|
+
const property = { type: propertyValues[ 0 ] };
|
|
132
133
|
|
|
133
134
|
if ( property.type === 'list' ) {
|
|
134
135
|
|
|
135
|
-
property.name =
|
|
136
|
-
property.countType =
|
|
137
|
-
property.itemType =
|
|
136
|
+
property.name = propertyValues[ 3 ];
|
|
137
|
+
property.countType = propertyValues[ 1 ];
|
|
138
|
+
property.itemType = propertyValues[ 2 ];
|
|
138
139
|
|
|
139
140
|
} else {
|
|
140
141
|
|
|
141
|
-
property.name =
|
|
142
|
+
property.name = propertyValues[ 1 ];
|
|
142
143
|
|
|
143
144
|
}
|
|
144
145
|
|
|
@@ -468,8 +469,9 @@ class PLYLoader extends Loader {
|
|
|
468
469
|
_color.setRGB(
|
|
469
470
|
element[ cacheEntry.attrR ] / 255.0,
|
|
470
471
|
element[ cacheEntry.attrG ] / 255.0,
|
|
471
|
-
element[ cacheEntry.attrB ] / 255.0
|
|
472
|
-
|
|
472
|
+
element[ cacheEntry.attrB ] / 255.0,
|
|
473
|
+
SRGBColorSpace
|
|
474
|
+
);
|
|
473
475
|
|
|
474
476
|
buffer.colors.push( _color.r, _color.g, _color.b );
|
|
475
477
|
|
|
@@ -516,8 +518,9 @@ class PLYLoader extends Loader {
|
|
|
516
518
|
_color.setRGB(
|
|
517
519
|
element[ cacheEntry.attrR ] / 255.0,
|
|
518
520
|
element[ cacheEntry.attrG ] / 255.0,
|
|
519
|
-
element[ cacheEntry.attrB ] / 255.0
|
|
520
|
-
|
|
521
|
+
element[ cacheEntry.attrB ] / 255.0,
|
|
522
|
+
SRGBColorSpace
|
|
523
|
+
);
|
|
521
524
|
buffer.faceVertexColors.push( _color.r, _color.g, _color.b );
|
|
522
525
|
buffer.faceVertexColors.push( _color.r, _color.g, _color.b );
|
|
523
526
|
buffer.faceVertexColors.push( _color.r, _color.g, _color.b );
|
|
@@ -573,7 +576,7 @@ class PLYLoader extends Loader {
|
|
|
573
576
|
|
|
574
577
|
switch ( type ) {
|
|
575
578
|
|
|
576
|
-
//
|
|
579
|
+
// correspondences for non-specific length types here match rply:
|
|
577
580
|
case 'int8': case 'char': return { read: ( at ) => {
|
|
578
581
|
|
|
579
582
|
return dataview.getInt8( at );
|
|
@@ -160,7 +160,7 @@ function _parseV2( pvrDatas ) {
|
|
|
160
160
|
pvrDatas.numMipmaps = numMipmaps + 1;
|
|
161
161
|
|
|
162
162
|
// guess cubemap type seems tricky in v2
|
|
163
|
-
// it
|
|
163
|
+
// it's just a pvr containing 6 surface (no explicit cubemap type)
|
|
164
164
|
pvrDatas.isCubemap = ( numSurfs === 6 );
|
|
165
165
|
|
|
166
166
|
return _extract( pvrDatas );
|
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
FileLoader,
|
|
6
6
|
Float32BufferAttribute,
|
|
7
7
|
Loader,
|
|
8
|
-
Vector3
|
|
8
|
+
Vector3,
|
|
9
|
+
SRGBColorSpace
|
|
9
10
|
} from 'three';
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -242,7 +243,7 @@ class STLLoader extends Loader {
|
|
|
242
243
|
|
|
243
244
|
if ( hasColors ) {
|
|
244
245
|
|
|
245
|
-
color.
|
|
246
|
+
color.setRGB( r, g, b, SRGBColorSpace );
|
|
246
247
|
|
|
247
248
|
colors[ componentIdx ] = color.r;
|
|
248
249
|
colors[ componentIdx + 1 ] = color.g;
|
|
@@ -1633,7 +1633,7 @@ class SVGLoader extends Loader {
|
|
|
1633
1633
|
( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
|
|
1634
1634
|
|
|
1635
1635
|
// Do not touch angles of a full ellipse because after transformation they
|
|
1636
|
-
// would converge to a
|
|
1636
|
+
// would converge to a single value effectively removing the whole curve
|
|
1637
1637
|
|
|
1638
1638
|
if ( ! isFullEllipse ) {
|
|
1639
1639
|
|
|
@@ -2124,7 +2124,7 @@ class SVGLoader extends Loader {
|
|
|
2124
2124
|
|
|
2125
2125
|
// check if the center of the bounding box is in the bounding box of the paths.
|
|
2126
2126
|
// this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
|
|
2127
|
-
// if a path envelops another path. The center of that
|
|
2127
|
+
// if a path envelops another path. The center of that other path, has to be inside the bounding box of the enveloping path.
|
|
2128
2128
|
if ( path.boundingBox.containsPoint( center ) ) {
|
|
2129
2129
|
|
|
2130
2130
|
const intersections = getIntersections( scanline, path.points );
|