super-three 0.181.0 → 0.185.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 +3 -4
- package/build/three.cjs +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +4 -19
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -100,7 +100,7 @@ class HDRLoader extends DataTextureLoader {
|
|
|
100
100
|
|
|
101
101
|
s += chunk; len += chunk.length;
|
|
102
102
|
p += chunkSize;
|
|
103
|
-
chunk
|
|
103
|
+
chunk = String.fromCharCode.apply( null, new Uint16Array( buffer.subarray( p, p + chunkSize ) ) );
|
|
104
104
|
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -424,7 +424,6 @@ class HDRLoader extends DataTextureLoader {
|
|
|
424
424
|
default:
|
|
425
425
|
|
|
426
426
|
throw new Error( 'THREE.HDRLoader: Unsupported type: ' + this.type );
|
|
427
|
-
break;
|
|
428
427
|
|
|
429
428
|
}
|
|
430
429
|
|
|
@@ -434,7 +433,12 @@ class HDRLoader extends DataTextureLoader {
|
|
|
434
433
|
header: rgbe_header_info.string,
|
|
435
434
|
gamma: rgbe_header_info.gamma,
|
|
436
435
|
exposure: rgbe_header_info.exposure,
|
|
437
|
-
type: type
|
|
436
|
+
type: type,
|
|
437
|
+
colorSpace: LinearSRGBColorSpace,
|
|
438
|
+
minFilter: LinearFilter,
|
|
439
|
+
magFilter: LinearFilter,
|
|
440
|
+
generateMipmaps: false,
|
|
441
|
+
flipY: true
|
|
438
442
|
};
|
|
439
443
|
|
|
440
444
|
}
|
|
@@ -452,33 +456,6 @@ class HDRLoader extends DataTextureLoader {
|
|
|
452
456
|
|
|
453
457
|
}
|
|
454
458
|
|
|
455
|
-
load( url, onLoad, onProgress, onError ) {
|
|
456
|
-
|
|
457
|
-
function onLoadCallback( texture, texData ) {
|
|
458
|
-
|
|
459
|
-
switch ( texture.type ) {
|
|
460
|
-
|
|
461
|
-
case FloatType:
|
|
462
|
-
case HalfFloatType:
|
|
463
|
-
|
|
464
|
-
texture.colorSpace = LinearSRGBColorSpace;
|
|
465
|
-
texture.minFilter = LinearFilter;
|
|
466
|
-
texture.magFilter = LinearFilter;
|
|
467
|
-
texture.generateMipmaps = false;
|
|
468
|
-
texture.flipY = true;
|
|
469
|
-
|
|
470
|
-
break;
|
|
471
|
-
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
if ( onLoad ) onLoad( texture, texData );
|
|
475
|
-
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
return super.load( url, onLoadCallback, onProgress, onError );
|
|
479
|
-
|
|
480
|
-
}
|
|
481
|
-
|
|
482
459
|
}
|
|
483
460
|
|
|
484
461
|
export { HDRLoader };
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
LoadingManager
|
|
6
6
|
} from 'three';
|
|
7
7
|
import { ColladaLoader } from '../loaders/ColladaLoader.js';
|
|
8
|
-
import
|
|
8
|
+
import { unzipSync } from '../libs/fflate.module.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* A loader for the KMZ format.
|
|
@@ -119,18 +119,18 @@ class KMZLoader extends Loader {
|
|
|
119
119
|
|
|
120
120
|
//
|
|
121
121
|
|
|
122
|
-
const zip =
|
|
122
|
+
const zip = unzipSync( new Uint8Array( data ) );
|
|
123
123
|
|
|
124
124
|
if ( zip[ 'doc.kml' ] ) {
|
|
125
125
|
|
|
126
|
-
const xml = new DOMParser().parseFromString(
|
|
126
|
+
const xml = new DOMParser().parseFromString( new TextDecoder().decode( zip[ 'doc.kml' ] ), 'application/xml' );
|
|
127
127
|
|
|
128
128
|
const model = xml.querySelector( 'Placemark Model Link href' );
|
|
129
129
|
|
|
130
130
|
if ( model ) {
|
|
131
131
|
|
|
132
132
|
const loader = new ColladaLoader( manager );
|
|
133
|
-
return loader.parse(
|
|
133
|
+
return loader.parse( new TextDecoder().decode( zip[ model.textContent ] ) );
|
|
134
134
|
|
|
135
135
|
}
|
|
136
136
|
|
|
@@ -145,7 +145,7 @@ class KMZLoader extends Loader {
|
|
|
145
145
|
if ( extension === 'dae' ) {
|
|
146
146
|
|
|
147
147
|
const loader = new ColladaLoader( manager );
|
|
148
|
-
return loader.parse(
|
|
148
|
+
return loader.parse( new TextDecoder().decode( zip[ path ] ) );
|
|
149
149
|
|
|
150
150
|
}
|
|
151
151
|
|
|
@@ -18,8 +18,11 @@ import {
|
|
|
18
18
|
RGBA_ASTC_4x4_Format,
|
|
19
19
|
RGBA_ASTC_6x6_Format,
|
|
20
20
|
RGBA_BPTC_Format,
|
|
21
|
-
RGBA_S3TC_DXT3_Format,
|
|
22
21
|
RGBA_ETC2_EAC_Format,
|
|
22
|
+
R11_EAC_Format,
|
|
23
|
+
SIGNED_R11_EAC_Format,
|
|
24
|
+
RG11_EAC_Format,
|
|
25
|
+
SIGNED_RG11_EAC_Format,
|
|
23
26
|
RGBA_PVRTC_4BPPV1_Format,
|
|
24
27
|
RGBA_PVRTC_2BPPV1_Format,
|
|
25
28
|
RGBA_S3TC_DXT1_Format,
|
|
@@ -39,7 +42,8 @@ import {
|
|
|
39
42
|
SRGBColorSpace,
|
|
40
43
|
UnsignedByteType,
|
|
41
44
|
UnsignedInt5999Type,
|
|
42
|
-
UnsignedInt101111Type
|
|
45
|
+
UnsignedInt101111Type,
|
|
46
|
+
UnsignedShortType
|
|
43
47
|
} from 'three';
|
|
44
48
|
import { WorkerPool } from '../utils/WorkerPool.js';
|
|
45
49
|
import {
|
|
@@ -71,11 +75,16 @@ import {
|
|
|
71
75
|
VK_FORMAT_BC7_UNORM_BLOCK,
|
|
72
76
|
VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
|
|
73
77
|
VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
|
|
78
|
+
VK_FORMAT_EAC_R11_UNORM_BLOCK,
|
|
79
|
+
VK_FORMAT_EAC_R11_SNORM_BLOCK,
|
|
80
|
+
VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
|
|
81
|
+
VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
|
|
74
82
|
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
|
|
75
83
|
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
|
|
76
84
|
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
|
|
77
85
|
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
|
|
78
86
|
VK_FORMAT_R16G16B16A16_SFLOAT,
|
|
87
|
+
VK_FORMAT_R16G16B16A16_UNORM,
|
|
79
88
|
VK_FORMAT_R16G16_SFLOAT,
|
|
80
89
|
VK_FORMAT_R16_SFLOAT,
|
|
81
90
|
VK_FORMAT_R32G32B32A32_SFLOAT,
|
|
@@ -94,6 +103,9 @@ import {
|
|
|
94
103
|
import { ZSTDDecoder } from '../libs/zstddec.module.js';
|
|
95
104
|
import { DisplayP3ColorSpace, LinearDisplayP3ColorSpace } from '../math/ColorSpaces.js';
|
|
96
105
|
|
|
106
|
+
const WASM_BIN_URL = new URL( '../libs/basis/basis_transcoder.wasm', import.meta.url ).toString();
|
|
107
|
+
const WASM_JS_URL = new URL( '../libs/basis/basis_transcoder.js', import.meta.url ).toString();
|
|
108
|
+
|
|
97
109
|
const _taskCache = new WeakMap();
|
|
98
110
|
|
|
99
111
|
let _activeLoaders = 0;
|
|
@@ -160,9 +172,9 @@ class KTX2Loader extends Loader {
|
|
|
160
172
|
}
|
|
161
173
|
|
|
162
174
|
/**
|
|
163
|
-
* Sets the transcoder path.
|
|
175
|
+
* Sets the transcoder path to optionally set the decoder load path from a CDN.
|
|
164
176
|
*
|
|
165
|
-
* The WASM transcoder and JS wrapper are
|
|
177
|
+
* By default The WASM transcoder and JS wrapper are loaded from the `examples/jsm/libs/basis` directory.
|
|
166
178
|
*
|
|
167
179
|
* @param {string} path - The transcoder path to set.
|
|
168
180
|
* @return {KTX2Loader} A reference to this loader.
|
|
@@ -244,16 +256,18 @@ class KTX2Loader extends Loader {
|
|
|
244
256
|
};
|
|
245
257
|
|
|
246
258
|
if ( typeof navigator !== 'undefined' &&
|
|
247
|
-
navigator.platform
|
|
259
|
+
typeof navigator.platform !== 'undefined' && typeof navigator.userAgent !== 'undefined' &&
|
|
260
|
+
navigator.platform.indexOf( 'Linux' ) >= 0 && navigator.userAgent.indexOf( 'Android' ) < 0 &&
|
|
248
261
|
this.workerConfig.astcSupported && this.workerConfig.etc2Supported &&
|
|
249
262
|
this.workerConfig.bptcSupported && this.workerConfig.dxtSupported ) {
|
|
250
263
|
|
|
251
|
-
// On Linux, Mesa drivers for AMD and Intel GPUs expose ETC2 and ASTC even though the hardware doesn't support these.
|
|
264
|
+
// On Linux, Mesa drivers for AMD and Intel GPUs expose ETC1,ETC2 and ASTC even though the hardware doesn't support these.
|
|
252
265
|
// Using these extensions will result in expensive software decompression on the main thread inside the driver, causing performance issues.
|
|
253
|
-
//
|
|
266
|
+
// In general, browsers should not expose extensions for emulated formats, but Chrome and Firefox currently do so on Linux.
|
|
254
267
|
// Since a granular filter is a little too fragile and we can transcode into other GPU formats, disable formats that are likely to be emulated.
|
|
255
268
|
|
|
256
269
|
this.workerConfig.astcSupported = false;
|
|
270
|
+
this.workerConfig.etc1Supported = false;
|
|
257
271
|
this.workerConfig.etc2Supported = false;
|
|
258
272
|
|
|
259
273
|
}
|
|
@@ -270,18 +284,30 @@ class KTX2Loader extends Loader {
|
|
|
270
284
|
|
|
271
285
|
if ( ! this.transcoderPending ) {
|
|
272
286
|
|
|
273
|
-
// Load transcoder wrapper.
|
|
274
287
|
const jsLoader = new FileLoader( this.manager );
|
|
275
|
-
jsLoader.setPath( this.transcoderPath );
|
|
276
288
|
jsLoader.setWithCredentials( this.withCredentials );
|
|
277
|
-
const jsContent = jsLoader.loadAsync( 'basis_transcoder.js' );
|
|
278
289
|
|
|
279
|
-
// Load transcoder WASM binary.
|
|
280
290
|
const binaryLoader = new FileLoader( this.manager );
|
|
281
|
-
binaryLoader.setPath( this.transcoderPath );
|
|
282
|
-
binaryLoader.setResponseType( 'arraybuffer' );
|
|
283
291
|
binaryLoader.setWithCredentials( this.withCredentials );
|
|
284
|
-
|
|
292
|
+
binaryLoader.setResponseType( 'arraybuffer' );
|
|
293
|
+
|
|
294
|
+
let jsContent, binaryContent;
|
|
295
|
+
if ( this.transcoderPath === '' ) {
|
|
296
|
+
|
|
297
|
+
jsContent = jsLoader.loadAsync( WASM_JS_URL );
|
|
298
|
+
binaryContent = binaryLoader.loadAsync( WASM_BIN_URL );
|
|
299
|
+
|
|
300
|
+
} else {
|
|
301
|
+
|
|
302
|
+
// Load transcoder wrapper.
|
|
303
|
+
jsLoader.setPath( this.transcoderPath );
|
|
304
|
+
jsContent = jsLoader.loadAsync( 'basis_transcoder.js' );
|
|
305
|
+
|
|
306
|
+
// Load transcoder WASM binary.
|
|
307
|
+
binaryLoader.setPath( this.transcoderPath );
|
|
308
|
+
binaryContent = binaryLoader.loadAsync( 'basis_transcoder.wasm' );
|
|
309
|
+
|
|
310
|
+
}
|
|
285
311
|
|
|
286
312
|
this.transcoderPending = Promise.all( [ jsContent, binaryContent ] )
|
|
287
313
|
.then( ( [ jsContent, binaryContent ] ) => {
|
|
@@ -946,6 +972,8 @@ KTX2Loader.BasisWorker = function () {
|
|
|
946
972
|
|
|
947
973
|
const UNCOMPRESSED_FORMATS = new Set( [ RGBAFormat, RGBFormat, RGFormat, RedFormat ] );
|
|
948
974
|
|
|
975
|
+
const NORMALIZED_VK_FORMATS = new Set( [ VK_FORMAT_R16G16B16A16_UNORM ] );
|
|
976
|
+
|
|
949
977
|
const FORMAT_MAP = {
|
|
950
978
|
|
|
951
979
|
[ VK_FORMAT_R32G32B32A32_SFLOAT ]: RGBAFormat,
|
|
@@ -956,6 +984,8 @@ const FORMAT_MAP = {
|
|
|
956
984
|
[ VK_FORMAT_R16G16_SFLOAT ]: RGFormat,
|
|
957
985
|
[ VK_FORMAT_R16_SFLOAT ]: RedFormat,
|
|
958
986
|
|
|
987
|
+
[ VK_FORMAT_R16G16B16A16_UNORM ]: RGBAFormat,
|
|
988
|
+
|
|
959
989
|
[ VK_FORMAT_R8G8B8A8_SRGB ]: RGBAFormat,
|
|
960
990
|
[ VK_FORMAT_R8G8B8A8_UNORM ]: RGBAFormat,
|
|
961
991
|
[ VK_FORMAT_R8G8_SRGB ]: RGFormat,
|
|
@@ -968,6 +998,10 @@ const FORMAT_MAP = {
|
|
|
968
998
|
|
|
969
999
|
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
|
|
970
1000
|
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
|
|
1001
|
+
[ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: R11_EAC_Format,
|
|
1002
|
+
[ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: SIGNED_R11_EAC_Format,
|
|
1003
|
+
[ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: RG11_EAC_Format,
|
|
1004
|
+
[ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: SIGNED_RG11_EAC_Format,
|
|
971
1005
|
|
|
972
1006
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
|
|
973
1007
|
[ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
|
|
@@ -981,8 +1015,8 @@ const FORMAT_MAP = {
|
|
|
981
1015
|
[ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
982
1016
|
[ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
983
1017
|
|
|
984
|
-
[ VK_FORMAT_BC3_SRGB_BLOCK ]:
|
|
985
|
-
[ VK_FORMAT_BC3_UNORM_BLOCK ]:
|
|
1018
|
+
[ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
1019
|
+
[ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
986
1020
|
|
|
987
1021
|
[ VK_FORMAT_BC4_SNORM_BLOCK ]: SIGNED_RED_RGTC1_Format,
|
|
988
1022
|
[ VK_FORMAT_BC4_UNORM_BLOCK ]: RED_RGTC1_Format,
|
|
@@ -1010,6 +1044,8 @@ const TYPE_MAP = {
|
|
|
1010
1044
|
[ VK_FORMAT_R16G16_SFLOAT ]: HalfFloatType,
|
|
1011
1045
|
[ VK_FORMAT_R16_SFLOAT ]: HalfFloatType,
|
|
1012
1046
|
|
|
1047
|
+
[ VK_FORMAT_R16G16B16A16_UNORM ]: UnsignedShortType,
|
|
1048
|
+
|
|
1013
1049
|
[ VK_FORMAT_R8G8B8A8_SRGB ]: UnsignedByteType,
|
|
1014
1050
|
[ VK_FORMAT_R8G8B8A8_UNORM ]: UnsignedByteType,
|
|
1015
1051
|
[ VK_FORMAT_R8G8_SRGB ]: UnsignedByteType,
|
|
@@ -1022,6 +1058,10 @@ const TYPE_MAP = {
|
|
|
1022
1058
|
|
|
1023
1059
|
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
|
|
1024
1060
|
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
|
|
1061
|
+
[ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: UnsignedByteType,
|
|
1062
|
+
[ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: UnsignedByteType,
|
|
1063
|
+
[ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: UnsignedByteType,
|
|
1064
|
+
[ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: UnsignedByteType,
|
|
1025
1065
|
|
|
1026
1066
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
|
|
1027
1067
|
[ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: UnsignedByteType,
|
|
@@ -1133,7 +1173,7 @@ async function createRawTexture( container ) {
|
|
|
1133
1173
|
|
|
1134
1174
|
);
|
|
1135
1175
|
|
|
1136
|
-
} else if ( TYPE_MAP[ vkFormat ] === HalfFloatType ) {
|
|
1176
|
+
} else if ( TYPE_MAP[ vkFormat ] === HalfFloatType || TYPE_MAP[ vkFormat ] === UnsignedShortType ) {
|
|
1137
1177
|
|
|
1138
1178
|
data = new Uint16Array(
|
|
1139
1179
|
|
|
@@ -1183,6 +1223,7 @@ async function createRawTexture( container ) {
|
|
|
1183
1223
|
texture.minFilter = useMipmaps ? NearestMipmapNearestFilter : NearestFilter;
|
|
1184
1224
|
texture.magFilter = NearestFilter;
|
|
1185
1225
|
texture.generateMipmaps = container.levelCount === 0;
|
|
1226
|
+
texture.normalized = NORMALIZED_VK_FORMATS.has( vkFormat );
|
|
1186
1227
|
|
|
1187
1228
|
} else {
|
|
1188
1229
|
|
|
@@ -644,7 +644,7 @@ class LDrawParsedCache {
|
|
|
644
644
|
|
|
645
645
|
}
|
|
646
646
|
|
|
647
|
-
throw new Error( 'LDrawLoader: Subobject "' + fileName + '" could not be loaded.' );
|
|
647
|
+
throw new Error( 'THREE.LDrawLoader: Subobject "' + fileName + '" could not be loaded.' );
|
|
648
648
|
|
|
649
649
|
}
|
|
650
650
|
|
|
@@ -1015,21 +1015,9 @@ class LDrawParsedCache {
|
|
|
1015
1015
|
faceNormal: null,
|
|
1016
1016
|
vertices: [ v0, v1, v2 ],
|
|
1017
1017
|
normals: [ null, null, null ],
|
|
1018
|
+
doubleSided: doubleSided,
|
|
1018
1019
|
} );
|
|
1019
|
-
totalFaces
|
|
1020
|
-
|
|
1021
|
-
if ( doubleSided === true ) {
|
|
1022
|
-
|
|
1023
|
-
faces.push( {
|
|
1024
|
-
material: material,
|
|
1025
|
-
colorCode: colorCode,
|
|
1026
|
-
faceNormal: null,
|
|
1027
|
-
vertices: [ v2, v1, v0 ],
|
|
1028
|
-
normals: [ null, null, null ],
|
|
1029
|
-
} );
|
|
1030
|
-
totalFaces ++;
|
|
1031
|
-
|
|
1032
|
-
}
|
|
1020
|
+
totalFaces += doubleSided ? 2 : 1;
|
|
1033
1021
|
|
|
1034
1022
|
break;
|
|
1035
1023
|
|
|
@@ -1065,26 +1053,14 @@ class LDrawParsedCache {
|
|
|
1065
1053
|
faceNormal: null,
|
|
1066
1054
|
vertices: [ v0, v1, v2, v3 ],
|
|
1067
1055
|
normals: [ null, null, null, null ],
|
|
1056
|
+
doubleSided: doubleSided,
|
|
1068
1057
|
} );
|
|
1069
|
-
totalFaces += 2;
|
|
1070
|
-
|
|
1071
|
-
if ( doubleSided === true ) {
|
|
1072
|
-
|
|
1073
|
-
faces.push( {
|
|
1074
|
-
material: material,
|
|
1075
|
-
colorCode: colorCode,
|
|
1076
|
-
faceNormal: null,
|
|
1077
|
-
vertices: [ v3, v2, v1, v0 ],
|
|
1078
|
-
normals: [ null, null, null, null ],
|
|
1079
|
-
} );
|
|
1080
|
-
totalFaces += 2;
|
|
1081
|
-
|
|
1082
|
-
}
|
|
1058
|
+
totalFaces += doubleSided ? 4 : 2;
|
|
1083
1059
|
|
|
1084
1060
|
break;
|
|
1085
1061
|
|
|
1086
1062
|
default:
|
|
1087
|
-
throw new Error( 'LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.' );
|
|
1063
|
+
throw new Error( 'THREE.LDrawLoader: Unknown line type "' + lineType + '"' + lp.getLineNumberString() + '.' );
|
|
1088
1064
|
|
|
1089
1065
|
}
|
|
1090
1066
|
|
|
@@ -1550,13 +1526,22 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1550
1526
|
|
|
1551
1527
|
}
|
|
1552
1528
|
|
|
1553
|
-
|
|
1529
|
+
const sideCount = elementSize === 3 && elem.doubleSided ? 2 : 1;
|
|
1530
|
+
const sideVertCount = vertices.length;
|
|
1531
|
+
const totalVertCount = sideVertCount * sideCount;
|
|
1554
1532
|
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1533
|
+
for ( let s = 0; s < sideCount; s ++ ) {
|
|
1534
|
+
|
|
1535
|
+
for ( let j = 0; j < sideVertCount; j ++ ) {
|
|
1536
|
+
|
|
1537
|
+
// front side: original order; back side: reversed winding
|
|
1538
|
+
const v = vertices[ s === 0 ? j : sideVertCount - 1 - j ];
|
|
1539
|
+
const index = offset + ( s * sideVertCount + j ) * 3;
|
|
1540
|
+
positions[ index + 0 ] = v.x;
|
|
1541
|
+
positions[ index + 1 ] = v.y;
|
|
1542
|
+
positions[ index + 2 ] = v.z;
|
|
1543
|
+
|
|
1544
|
+
}
|
|
1560
1545
|
|
|
1561
1546
|
}
|
|
1562
1547
|
|
|
@@ -1589,20 +1574,27 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1589
1574
|
|
|
1590
1575
|
}
|
|
1591
1576
|
|
|
1592
|
-
|
|
1577
|
+
const normalCount = elemNormals.length;
|
|
1578
|
+
for ( let s = 0; s < sideCount; s ++ ) {
|
|
1593
1579
|
|
|
1594
|
-
|
|
1595
|
-
let
|
|
1596
|
-
if ( elemNormals[ j ] ) {
|
|
1580
|
+
const sign = s === 0 ? 1 : - 1;
|
|
1581
|
+
for ( let j = 0; j < normalCount; j ++ ) {
|
|
1597
1582
|
|
|
1598
|
-
|
|
1583
|
+
// back side reuses the front normals in reversed order, with negated direction
|
|
1584
|
+
const idx = s === 0 ? j : normalCount - 1 - j;
|
|
1585
|
+
let n = elem.faceNormal;
|
|
1586
|
+
if ( elemNormals[ idx ] ) {
|
|
1599
1587
|
|
|
1600
|
-
|
|
1588
|
+
n = elemNormals[ idx ].norm;
|
|
1601
1589
|
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
const index = offset + ( s * normalCount + j ) * 3;
|
|
1593
|
+
normals[ index + 0 ] = sign * n.x;
|
|
1594
|
+
normals[ index + 1 ] = sign * n.y;
|
|
1595
|
+
normals[ index + 2 ] = sign * n.z;
|
|
1596
|
+
|
|
1597
|
+
}
|
|
1606
1598
|
|
|
1607
1599
|
}
|
|
1608
1600
|
|
|
@@ -1650,21 +1642,21 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1650
1642
|
|
|
1651
1643
|
prevMaterial = elem.colorCode;
|
|
1652
1644
|
index0 = offset / 3;
|
|
1653
|
-
numGroupVerts =
|
|
1645
|
+
numGroupVerts = totalVertCount;
|
|
1654
1646
|
|
|
1655
1647
|
} else {
|
|
1656
1648
|
|
|
1657
|
-
numGroupVerts +=
|
|
1649
|
+
numGroupVerts += totalVertCount;
|
|
1658
1650
|
|
|
1659
1651
|
}
|
|
1660
1652
|
|
|
1661
|
-
offset += 3 *
|
|
1653
|
+
offset += 3 * totalVertCount;
|
|
1662
1654
|
|
|
1663
1655
|
}
|
|
1664
1656
|
|
|
1665
1657
|
if ( numGroupVerts > 0 ) {
|
|
1666
1658
|
|
|
1667
|
-
bufferGeometry.addGroup( index0,
|
|
1659
|
+
bufferGeometry.addGroup( index0, numGroupVerts, materials.length - 1 );
|
|
1668
1660
|
|
|
1669
1661
|
}
|
|
1670
1662
|
|
|
@@ -1749,7 +1741,7 @@ function createObject( loader, elements, elementSize, isConditionalSegments = fa
|
|
|
1749
1741
|
/**
|
|
1750
1742
|
* A loader for the LDraw format.
|
|
1751
1743
|
*
|
|
1752
|
-
* [LDraw](https://ldraw.org/} (LEGO Draw) is an [open format specification]
|
|
1744
|
+
* [LDraw](https://ldraw.org/} (LEGO Draw) is an [open format specification](https://ldraw.org/article/218.html)
|
|
1753
1745
|
* for describing LEGO and other construction set 3D models.
|
|
1754
1746
|
*
|
|
1755
1747
|
* An LDraw asset (a text file usually with extension .ldr, .dat or .txt) can describe just a single construction
|
|
@@ -2225,7 +2217,7 @@ class LDrawLoader extends Loader {
|
|
|
2225
2217
|
const name = lineParser.getToken();
|
|
2226
2218
|
if ( ! name ) {
|
|
2227
2219
|
|
|
2228
|
-
throw new Error( 'LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.' );
|
|
2220
|
+
throw new Error( 'THREE.LDrawLoader: Material name was expected after "!COLOUR tag' + lineParser.getLineNumberString() + '.' );
|
|
2229
2221
|
|
|
2230
2222
|
}
|
|
2231
2223
|
|
|
@@ -2259,7 +2251,7 @@ class LDrawLoader extends Loader {
|
|
|
2259
2251
|
|
|
2260
2252
|
} else if ( ! fillColor.startsWith( '#' ) ) {
|
|
2261
2253
|
|
|
2262
|
-
throw new Error( 'LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2254
|
+
throw new Error( 'THREE.LDrawLoader: Invalid color while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2263
2255
|
|
|
2264
2256
|
}
|
|
2265
2257
|
|
|
@@ -2278,7 +2270,7 @@ class LDrawLoader extends Loader {
|
|
|
2278
2270
|
edgeMaterial = this.getMaterial( edgeColor );
|
|
2279
2271
|
if ( ! edgeMaterial ) {
|
|
2280
2272
|
|
|
2281
|
-
throw new Error( 'LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2273
|
+
throw new Error( 'THREE.LDrawLoader: Invalid edge color while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2282
2274
|
|
|
2283
2275
|
}
|
|
2284
2276
|
|
|
@@ -2295,7 +2287,7 @@ class LDrawLoader extends Loader {
|
|
|
2295
2287
|
|
|
2296
2288
|
if ( isNaN( alpha ) ) {
|
|
2297
2289
|
|
|
2298
|
-
throw new Error( 'LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.' );
|
|
2290
|
+
throw new Error( 'THREE.LDrawLoader: Invalid alpha value in material definition' + lineParser.getLineNumberString() + '.' );
|
|
2299
2291
|
|
|
2300
2292
|
}
|
|
2301
2293
|
|
|
@@ -2313,7 +2305,7 @@ class LDrawLoader extends Loader {
|
|
|
2313
2305
|
|
|
2314
2306
|
if ( ! parseLuminance( lineParser.getToken() ) ) {
|
|
2315
2307
|
|
|
2316
|
-
throw new Error( 'LDrawLoader: Invalid luminance value in material definition' + lineParser.getLineNumberString() + '.' );
|
|
2308
|
+
throw new Error( 'THREE.LDrawLoader: Invalid luminance value in material definition' + lineParser.getLineNumberString() + '.' );
|
|
2317
2309
|
|
|
2318
2310
|
}
|
|
2319
2311
|
|
|
@@ -2345,7 +2337,7 @@ class LDrawLoader extends Loader {
|
|
|
2345
2337
|
break;
|
|
2346
2338
|
|
|
2347
2339
|
default:
|
|
2348
|
-
throw new Error( 'LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2340
|
+
throw new Error( 'THREE.LDrawLoader: Unknown token "' + token + '" while parsing material' + lineParser.getLineNumberString() + '.' );
|
|
2349
2341
|
|
|
2350
2342
|
}
|
|
2351
2343
|
|
|
@@ -2400,7 +2392,6 @@ class LDrawLoader extends Loader {
|
|
|
2400
2392
|
|
|
2401
2393
|
material.color.setStyle( fillColor, COLOR_SPACE_LDRAW );
|
|
2402
2394
|
material.transparent = isTransparent;
|
|
2403
|
-
material.premultipliedAlpha = true;
|
|
2404
2395
|
material.opacity = alpha;
|
|
2405
2396
|
material.depthWrite = ! isTransparent;
|
|
2406
2397
|
|
|
@@ -114,7 +114,7 @@ export class LUT3dlLoader extends Loader {
|
|
|
114
114
|
|
|
115
115
|
if ( result === null ) {
|
|
116
116
|
|
|
117
|
-
throw new Error( 'LUT3dlLoader: Missing grid information' );
|
|
117
|
+
throw new Error( 'THREE.LUT3dlLoader: Missing grid information' );
|
|
118
118
|
|
|
119
119
|
}
|
|
120
120
|
|
|
@@ -127,7 +127,7 @@ export class LUT3dlLoader extends Loader {
|
|
|
127
127
|
|
|
128
128
|
if ( gridStep !== ( gridLines[ i ] - gridLines[ i - 1 ] ) ) {
|
|
129
129
|
|
|
130
|
-
throw new Error( 'LUT3dlLoader: Inconsistent grid size' );
|
|
130
|
+
throw new Error( 'THREE.LUT3dlLoader: Inconsistent grid size' );
|
|
131
131
|
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -118,7 +118,7 @@ export class LUTCubeLoader extends Loader {
|
|
|
118
118
|
|
|
119
119
|
if ( result === null ) {
|
|
120
120
|
|
|
121
|
-
throw new Error( 'LUTCubeLoader: Missing LUT_3D_SIZE information' );
|
|
121
|
+
throw new Error( 'THREE.LUTCubeLoader: Missing LUT_3D_SIZE information' );
|
|
122
122
|
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -147,7 +147,7 @@ export class LUTCubeLoader extends Loader {
|
|
|
147
147
|
|
|
148
148
|
if ( domainMin.x > domainMax.x || domainMin.y > domainMax.y || domainMin.z > domainMax.z ) {
|
|
149
149
|
|
|
150
|
-
throw new Error( 'LUTCubeLoader: Invalid input domain' );
|
|
150
|
+
throw new Error( 'THREE.LUTCubeLoader: Invalid input domain' );
|
|
151
151
|
|
|
152
152
|
}
|
|
153
153
|
|
|
@@ -23,7 +23,8 @@ import {
|
|
|
23
23
|
RepeatWrapping,
|
|
24
24
|
SRGBColorSpace,
|
|
25
25
|
TextureLoader,
|
|
26
|
-
Vector2
|
|
26
|
+
Vector2,
|
|
27
|
+
Vector3
|
|
27
28
|
} from 'three';
|
|
28
29
|
|
|
29
30
|
import { IFFParser } from './lwo/IFFParser.js';
|
|
@@ -49,6 +50,7 @@ let _lwoTree;
|
|
|
49
50
|
*
|
|
50
51
|
* @augments Loader
|
|
51
52
|
* @three_import import { LWOLoader } from 'three/addons/loaders/LWOLoader.js';
|
|
53
|
+
* @deprecated since r185.
|
|
52
54
|
*/
|
|
53
55
|
class LWOLoader extends Loader {
|
|
54
56
|
|
|
@@ -56,11 +58,14 @@ class LWOLoader extends Loader {
|
|
|
56
58
|
* Constructs a new LWO loader.
|
|
57
59
|
*
|
|
58
60
|
* @param {LoadingManager} [manager] - The loading manager.
|
|
61
|
+
* @deprecated since r185.
|
|
59
62
|
*/
|
|
60
63
|
constructor( manager ) {
|
|
61
64
|
|
|
62
65
|
super( manager );
|
|
63
66
|
|
|
67
|
+
console.warn( 'THREE.LWOLoader: The loader has been deprecated and will be removed with r195. Export your LWO files to glTF before using them on the web.' ); // @deprecated, r185
|
|
68
|
+
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
/**
|
|
@@ -185,8 +190,6 @@ class LWOTreeParser {
|
|
|
185
190
|
|
|
186
191
|
} );
|
|
187
192
|
|
|
188
|
-
this.applyPivots( finalMeshes );
|
|
189
|
-
|
|
190
193
|
return finalMeshes;
|
|
191
194
|
|
|
192
195
|
}
|
|
@@ -204,38 +207,14 @@ class LWOTreeParser {
|
|
|
204
207
|
if ( layer.name ) mesh.name = layer.name;
|
|
205
208
|
else mesh.name = this.defaultLayerName + '_layer_' + layer.number;
|
|
206
209
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
return mesh;
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
// TODO: may need to be reversed in z to convert LWO to three.js coordinates
|
|
214
|
-
applyPivots( meshes ) {
|
|
215
|
-
|
|
216
|
-
meshes.forEach( function ( mesh ) {
|
|
217
|
-
|
|
218
|
-
mesh.traverse( function ( child ) {
|
|
219
|
-
|
|
220
|
-
const pivot = child.userData.pivot;
|
|
221
|
-
|
|
222
|
-
child.position.x += pivot[ 0 ];
|
|
223
|
-
child.position.y += pivot[ 1 ];
|
|
224
|
-
child.position.z += pivot[ 2 ];
|
|
210
|
+
const pivot = layer.pivot;
|
|
211
|
+
if ( pivot[ 0 ] !== 0 || pivot[ 1 ] !== 0 || pivot[ 2 ] !== 0 ) {
|
|
225
212
|
|
|
226
|
-
|
|
213
|
+
mesh.pivot = new Vector3( pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] );
|
|
227
214
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
child.position.x -= parentPivot[ 0 ];
|
|
231
|
-
child.position.y -= parentPivot[ 1 ];
|
|
232
|
-
child.position.z -= parentPivot[ 2 ];
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
} );
|
|
215
|
+
}
|
|
237
216
|
|
|
238
|
-
|
|
217
|
+
return mesh;
|
|
239
218
|
|
|
240
219
|
}
|
|
241
220
|
|
|
@@ -813,13 +792,6 @@ class GeometryParser {
|
|
|
813
792
|
this.parseUVs( geometry, layer );
|
|
814
793
|
this.parseMorphTargets( geometry, layer );
|
|
815
794
|
|
|
816
|
-
// TODO: z may need to be reversed to account for coordinate system change
|
|
817
|
-
geometry.translate( - layer.pivot[ 0 ], - layer.pivot[ 1 ], - layer.pivot[ 2 ] );
|
|
818
|
-
|
|
819
|
-
// let userData = geometry.userData;
|
|
820
|
-
// geometry = geometry.toNonIndexed()
|
|
821
|
-
// geometry.userData = userData;
|
|
822
|
-
|
|
823
795
|
return geometry;
|
|
824
796
|
|
|
825
797
|
}
|