super-three 0.181.0 → 0.184.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 +13152 -11354
- package/build/three.core.js +12319 -11539
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1808 -781
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +27 -13
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +10523 -6263
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +10484 -6262
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +11 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +7 -4
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +58 -54
- 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 +34 -2
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMShadowNode.js +6 -2
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +152 -9
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- 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/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +203 -88
- package/examples/jsm/inspector/RendererInspector.js +14 -4
- package/examples/jsm/inspector/extensions/extensions.json +6 -0
- 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 +41 -7
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +51 -3
- package/examples/jsm/inspector/tabs/Performance.js +4 -4
- package/examples/jsm/inspector/tabs/Settings.js +264 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
- package/examples/jsm/inspector/tabs/Viewer.js +107 -5
- package/examples/jsm/inspector/ui/Graph.js +2 -2
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +1936 -34
- package/examples/jsm/inspector/ui/Style.js +1044 -31
- package/examples/jsm/inspector/ui/Tab.js +222 -3
- package/examples/jsm/inspector/ui/Values.js +55 -2
- package/examples/jsm/inspector/ui/utils.js +13 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +651 -0
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- 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 +5 -5
- package/examples/jsm/loaders/EXRLoader.js +687 -48
- 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 +1 -2
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +27 -5
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +79 -2
- 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 +450 -363
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4594 -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/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +73 -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/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +9 -5
- 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/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +63 -6
- 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/AnamorphicNode.js +12 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +16 -6
- 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 +1 -1
- 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 +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +6 -4
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -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 +7 -6
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- 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 +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +8 -24
- package/examples/jsm/tsl/display/SSRNode.js +8 -8
- package/examples/jsm/tsl/display/SSSNode.js +6 -4
- 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/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/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/utils/BufferGeometryUtils.js +2 -3
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/LDrawUtils.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/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +24 -30
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +25 -11
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +9 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- 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 +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +52 -4
- package/src/core/Raycaster.js +2 -2
- package/src/core/RenderTarget.js +4 -4
- package/src/extras/PMREMGenerator.js +7 -18
- package/src/extras/TextureUtils.js +5 -1
- 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/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +1 -25
- package/src/helpers/SpotLightHelper.js +3 -0
- 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 +6 -4
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +46 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +2 -0
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +34 -7
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +45 -25
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -86
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +13 -9
- package/src/math/Matrix4.js +87 -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 +11 -7
- package/src/math/Vector3.js +15 -13
- package/src/math/Vector4.js +13 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +86 -68
- package/src/nodes/TSL.js +7 -7
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +107 -15
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/InstanceNode.js +148 -43
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialProperties.js +2 -5
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +11 -11
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +8 -8
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/SkinningNode.js +27 -26
- package/src/nodes/accessors/StorageBufferNode.js +14 -25
- package/src/nodes/accessors/StorageTextureNode.js +40 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +67 -23
- 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 +2 -3
- 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 +48 -2
- package/src/nodes/core/Node.js +112 -15
- package/src/nodes/core/NodeBuilder.js +284 -66
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +11 -9
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +66 -17
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +17 -3
- package/src/nodes/core/StructTypeNode.js +12 -18
- 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 +48 -23
- package/src/nodes/core/VaryingNode.js +2 -19
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +39 -4
- package/src/nodes/display/PassNode.js +125 -16
- package/src/nodes/display/RenderOutputNode.js +7 -7
- 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/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 +4 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/LightsNode.js +7 -28
- package/src/nodes/lighting/PointShadowNode.js +162 -149
- package/src/nodes/lighting/ShadowFilterNode.js +53 -65
- package/src/nodes/lighting/ShadowNode.js +120 -42
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +76 -41
- package/src/nodes/math/OperatorNode.js +3 -2
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +38 -17
- 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/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- 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 +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +3 -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/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +44 -16
- package/src/objects/InstancedMesh.js +30 -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/Skeleton.js +9 -0
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +329 -145
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +29 -8
- 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 +29 -14
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- 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 +333 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +5 -21
- 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/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +17 -5
- 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 +481 -117
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +89 -4
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +62 -1
- package/src/renderers/common/XRManager.js +37 -29
- package/src/renderers/common/extras/PMREMGenerator.js +25 -23
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +242 -99
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -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/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- 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 +2 -0
- 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_maps.glsl.js +7 -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 +1 -1
- 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} +1 -2
- 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 +270 -0
- package/src/renderers/webgl/WebGLProgram.js +49 -109
- package/src/renderers/webgl/WebGLPrograms.js +63 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +215 -54
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +253 -82
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +173 -74
- 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 +68 -53
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +260 -140
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +366 -90
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +107 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +357 -200
- 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 +61 -23
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +156 -59
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +33 -11
- 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/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/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- 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
|
@@ -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,
|
|
@@ -244,6 +253,7 @@ class KTX2Loader extends Loader {
|
|
|
244
253
|
};
|
|
245
254
|
|
|
246
255
|
if ( typeof navigator !== 'undefined' &&
|
|
256
|
+
typeof navigator.platform !== 'undefined' && typeof navigator.userAgent !== 'undefined' &&
|
|
247
257
|
navigator.platform.indexOf( 'Linux' ) >= 0 && navigator.userAgent.indexOf( 'Firefox' ) >= 0 &&
|
|
248
258
|
this.workerConfig.astcSupported && this.workerConfig.etc2Supported &&
|
|
249
259
|
this.workerConfig.bptcSupported && this.workerConfig.dxtSupported ) {
|
|
@@ -956,6 +966,8 @@ const FORMAT_MAP = {
|
|
|
956
966
|
[ VK_FORMAT_R16G16_SFLOAT ]: RGFormat,
|
|
957
967
|
[ VK_FORMAT_R16_SFLOAT ]: RedFormat,
|
|
958
968
|
|
|
969
|
+
[ VK_FORMAT_R16G16B16A16_UNORM ]: RGBAFormat,
|
|
970
|
+
|
|
959
971
|
[ VK_FORMAT_R8G8B8A8_SRGB ]: RGBAFormat,
|
|
960
972
|
[ VK_FORMAT_R8G8B8A8_UNORM ]: RGBAFormat,
|
|
961
973
|
[ VK_FORMAT_R8G8_SRGB ]: RGFormat,
|
|
@@ -968,6 +980,10 @@ const FORMAT_MAP = {
|
|
|
968
980
|
|
|
969
981
|
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
|
|
970
982
|
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
|
|
983
|
+
[ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: R11_EAC_Format,
|
|
984
|
+
[ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: SIGNED_R11_EAC_Format,
|
|
985
|
+
[ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: RG11_EAC_Format,
|
|
986
|
+
[ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: SIGNED_RG11_EAC_Format,
|
|
971
987
|
|
|
972
988
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
|
|
973
989
|
[ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
|
|
@@ -981,8 +997,8 @@ const FORMAT_MAP = {
|
|
|
981
997
|
[ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
982
998
|
[ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
|
|
983
999
|
|
|
984
|
-
[ VK_FORMAT_BC3_SRGB_BLOCK ]:
|
|
985
|
-
[ VK_FORMAT_BC3_UNORM_BLOCK ]:
|
|
1000
|
+
[ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
1001
|
+
[ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
|
|
986
1002
|
|
|
987
1003
|
[ VK_FORMAT_BC4_SNORM_BLOCK ]: SIGNED_RED_RGTC1_Format,
|
|
988
1004
|
[ VK_FORMAT_BC4_UNORM_BLOCK ]: RED_RGTC1_Format,
|
|
@@ -1010,6 +1026,8 @@ const TYPE_MAP = {
|
|
|
1010
1026
|
[ VK_FORMAT_R16G16_SFLOAT ]: HalfFloatType,
|
|
1011
1027
|
[ VK_FORMAT_R16_SFLOAT ]: HalfFloatType,
|
|
1012
1028
|
|
|
1029
|
+
[ VK_FORMAT_R16G16B16A16_UNORM ]: UnsignedShortType,
|
|
1030
|
+
|
|
1013
1031
|
[ VK_FORMAT_R8G8B8A8_SRGB ]: UnsignedByteType,
|
|
1014
1032
|
[ VK_FORMAT_R8G8B8A8_UNORM ]: UnsignedByteType,
|
|
1015
1033
|
[ VK_FORMAT_R8G8_SRGB ]: UnsignedByteType,
|
|
@@ -1022,6 +1040,10 @@ const TYPE_MAP = {
|
|
|
1022
1040
|
|
|
1023
1041
|
[ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
|
|
1024
1042
|
[ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
|
|
1043
|
+
[ VK_FORMAT_EAC_R11_UNORM_BLOCK ]: UnsignedByteType,
|
|
1044
|
+
[ VK_FORMAT_EAC_R11_SNORM_BLOCK ]: UnsignedByteType,
|
|
1045
|
+
[ VK_FORMAT_EAC_R11G11_UNORM_BLOCK ]: UnsignedByteType,
|
|
1046
|
+
[ VK_FORMAT_EAC_R11G11_SNORM_BLOCK ]: UnsignedByteType,
|
|
1025
1047
|
|
|
1026
1048
|
[ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
|
|
1027
1049
|
[ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: UnsignedByteType,
|
|
@@ -1133,7 +1155,7 @@ async function createRawTexture( container ) {
|
|
|
1133
1155
|
|
|
1134
1156
|
);
|
|
1135
1157
|
|
|
1136
|
-
} else if ( TYPE_MAP[ vkFormat ] === HalfFloatType ) {
|
|
1158
|
+
} else if ( TYPE_MAP[ vkFormat ] === HalfFloatType || TYPE_MAP[ vkFormat ] === UnsignedShortType ) {
|
|
1137
1159
|
|
|
1138
1160
|
data = new Uint16Array(
|
|
1139
1161
|
|
|
@@ -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,21 +1053,9 @@ 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
|
|
|
@@ -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
|
|
@@ -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
|
|
|
@@ -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';
|
|
@@ -185,8 +186,6 @@ class LWOTreeParser {
|
|
|
185
186
|
|
|
186
187
|
} );
|
|
187
188
|
|
|
188
|
-
this.applyPivots( finalMeshes );
|
|
189
|
-
|
|
190
189
|
return finalMeshes;
|
|
191
190
|
|
|
192
191
|
}
|
|
@@ -204,38 +203,14 @@ class LWOTreeParser {
|
|
|
204
203
|
if ( layer.name ) mesh.name = layer.name;
|
|
205
204
|
else mesh.name = this.defaultLayerName + '_layer_' + layer.number;
|
|
206
205
|
|
|
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 ];
|
|
206
|
+
const pivot = layer.pivot;
|
|
207
|
+
if ( pivot[ 0 ] !== 0 || pivot[ 1 ] !== 0 || pivot[ 2 ] !== 0 ) {
|
|
225
208
|
|
|
226
|
-
|
|
209
|
+
mesh.pivot = new Vector3( pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] );
|
|
227
210
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
child.position.x -= parentPivot[ 0 ];
|
|
231
|
-
child.position.y -= parentPivot[ 1 ];
|
|
232
|
-
child.position.z -= parentPivot[ 2 ];
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
} );
|
|
211
|
+
}
|
|
237
212
|
|
|
238
|
-
|
|
213
|
+
return mesh;
|
|
239
214
|
|
|
240
215
|
}
|
|
241
216
|
|
|
@@ -813,13 +788,6 @@ class GeometryParser {
|
|
|
813
788
|
this.parseUVs( geometry, layer );
|
|
814
789
|
this.parseMorphTargets( geometry, layer );
|
|
815
790
|
|
|
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
791
|
return geometry;
|
|
824
792
|
|
|
825
793
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
Matrix4,
|
|
5
5
|
Vector3
|
|
6
6
|
} from 'three';
|
|
7
|
-
import
|
|
7
|
+
import { gunzipSync } from '../libs/fflate.module.js';
|
|
8
8
|
import { Volume } from '../misc/Volume.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -356,7 +356,7 @@ class NRRDLoader extends Loader {
|
|
|
356
356
|
|
|
357
357
|
// we need to decompress the datastream
|
|
358
358
|
// here we start the unzipping and get a typed Uint8Array back
|
|
359
|
-
_data =
|
|
359
|
+
_data = gunzipSync( new Uint8Array( _data ) );
|
|
360
360
|
|
|
361
361
|
} else if ( headerObject.encoding === 'ascii' || headerObject.encoding === 'text' || headerObject.encoding === 'txt' || headerObject.encoding === 'hex' ) {
|
|
362
362
|
|
|
@@ -100,6 +100,7 @@ class PCDLoader extends Loader {
|
|
|
100
100
|
/**
|
|
101
101
|
* Get dataview value by field type and size.
|
|
102
102
|
*
|
|
103
|
+
* @private
|
|
103
104
|
* @param {DataView} dataview - The DataView to read from.
|
|
104
105
|
* @param {number} offset - The offset to start reading from.
|
|
105
106
|
* @param {'F' | 'U' | 'I'} type - Field type.
|
|
@@ -517,7 +518,7 @@ class PCDLoader extends Loader {
|
|
|
517
518
|
if ( offset.label !== undefined ) {
|
|
518
519
|
|
|
519
520
|
const labelIndex = PCDheader.fields.indexOf( 'label' );
|
|
520
|
-
label.push(
|
|
521
|
+
label.push( this._getDataView( dataview, ( PCDheader.points * offset.label ) + PCDheader.size[ labelIndex ] * i, PCDheader.type[ labelIndex ], PCDheader.size[ labelIndex ] ) );
|
|
521
522
|
|
|
522
523
|
}
|
|
523
524
|
|
|
@@ -577,7 +578,8 @@ class PCDLoader extends Loader {
|
|
|
577
578
|
|
|
578
579
|
if ( offset.label !== undefined ) {
|
|
579
580
|
|
|
580
|
-
|
|
581
|
+
const labelIndex = PCDheader.fields.indexOf( 'label' );
|
|
582
|
+
label.push( this._getDataView( dataview, row + offset.label, PCDheader.type[ labelIndex ], PCDheader.size[ labelIndex ] ) );
|
|
581
583
|
|
|
582
584
|
}
|
|
583
585
|
|
|
@@ -1082,7 +1082,7 @@ class SVGLoader extends Loader {
|
|
|
1082
1082
|
};
|
|
1083
1083
|
|
|
1084
1084
|
if ( node.hasAttribute( svgName ) ) style[ jsName ] = adjustFunction( node.getAttribute( svgName ) );
|
|
1085
|
-
if ( stylesheetStyles[
|
|
1085
|
+
if ( stylesheetStyles[ jsName ] ) style[ jsName ] = adjustFunction( stylesheetStyles[ jsName ] );
|
|
1086
1086
|
if ( node.style && node.style[ svgName ] !== '' ) style[ jsName ] = adjustFunction( node.style[ svgName ] );
|
|
1087
1087
|
|
|
1088
1088
|
}
|
|
@@ -3005,7 +3005,7 @@ class SVGLoader extends Loader {
|
|
|
3005
3005
|
|
|
3006
3006
|
}
|
|
3007
3007
|
|
|
3008
|
-
addVertex(
|
|
3008
|
+
addVertex( tempV2_3, u, v );
|
|
3009
3009
|
addVertex( p2, u, v );
|
|
3010
3010
|
addVertex( center, u, 0.5 );
|
|
3011
3011
|
|
|
@@ -684,11 +684,9 @@ class TDSLoader extends Loader {
|
|
|
684
684
|
|
|
685
685
|
case INT_PERCENTAGE:
|
|
686
686
|
return ( subChunk.readShort( ) / 100 );
|
|
687
|
-
break;
|
|
688
687
|
|
|
689
688
|
case FLOAT_PERCENTAGE:
|
|
690
689
|
return subChunk.readFloat( );
|
|
691
|
-
break;
|
|
692
690
|
|
|
693
691
|
default:
|
|
694
692
|
this.debugMessage( ' Unknown percentage chunk: ' + subChunk.hexId );
|
|
@@ -389,7 +389,6 @@ class TGALoader extends DataTextureLoader {
|
|
|
389
389
|
|
|
390
390
|
default:
|
|
391
391
|
throw new Error( 'THREE.TGALoader: Format not supported.' );
|
|
392
|
-
break;
|
|
393
392
|
|
|
394
393
|
}
|
|
395
394
|
|
|
@@ -415,7 +414,6 @@ class TGALoader extends DataTextureLoader {
|
|
|
415
414
|
|
|
416
415
|
default:
|
|
417
416
|
throw new Error( 'THREE.TGALoader: Format not supported.' );
|
|
418
|
-
break;
|
|
419
417
|
|
|
420
418
|
}
|
|
421
419
|
|