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
package/src/loaders/Cache.js
CHANGED
|
@@ -35,6 +35,8 @@ const Cache = {
|
|
|
35
35
|
|
|
36
36
|
if ( this.enabled === false ) return;
|
|
37
37
|
|
|
38
|
+
if ( isBlobURL( key ) ) return;
|
|
39
|
+
|
|
38
40
|
// log( 'Cache', 'Adding key:', key );
|
|
39
41
|
|
|
40
42
|
this.files[ key ] = file;
|
|
@@ -52,6 +54,8 @@ const Cache = {
|
|
|
52
54
|
|
|
53
55
|
if ( this.enabled === false ) return;
|
|
54
56
|
|
|
57
|
+
if ( isBlobURL( key ) ) return;
|
|
58
|
+
|
|
55
59
|
// log( 'Cache', 'Checking key:', key );
|
|
56
60
|
|
|
57
61
|
return this.files[ key ];
|
|
@@ -83,5 +87,29 @@ const Cache = {
|
|
|
83
87
|
|
|
84
88
|
};
|
|
85
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Returns true if the given cache key contains the blob: scheme.
|
|
92
|
+
*
|
|
93
|
+
* @private
|
|
94
|
+
* @param {string} key - The cache key.
|
|
95
|
+
* @return {boolean} Whether the given cache key contains the blob: scheme or not.
|
|
96
|
+
*/
|
|
97
|
+
function isBlobURL( key ) {
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
|
|
101
|
+
const urlString = key.slice( key.indexOf( ':' ) + 1 ); // remove type identifier
|
|
102
|
+
|
|
103
|
+
const url = new URL( urlString );
|
|
104
|
+
return url.protocol === 'blob:';
|
|
105
|
+
|
|
106
|
+
} catch ( e ) {
|
|
107
|
+
|
|
108
|
+
// If the string is not a valid URL, it throws an error
|
|
109
|
+
return false;
|
|
110
|
+
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
}
|
|
86
114
|
|
|
87
115
|
export { Cache };
|
|
@@ -2,6 +2,7 @@ import { LinearFilter, LinearMipmapLinearFilter, ClampToEdgeWrapping } from '../
|
|
|
2
2
|
import { FileLoader } from './FileLoader.js';
|
|
3
3
|
import { DataTexture } from '../textures/DataTexture.js';
|
|
4
4
|
import { Loader } from './Loader.js';
|
|
5
|
+
import { error } from '../utils.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Abstract base class for loading binary texture formats RGBE, EXR or TGA.
|
|
@@ -57,19 +58,20 @@ class DataTextureLoader extends Loader {
|
|
|
57
58
|
|
|
58
59
|
texData = scope.parse( buffer );
|
|
59
60
|
|
|
60
|
-
} catch (
|
|
61
|
+
} catch ( e ) {
|
|
61
62
|
|
|
62
63
|
if ( onError !== undefined ) {
|
|
63
64
|
|
|
64
|
-
onError(
|
|
65
|
+
onError( e );
|
|
65
66
|
|
|
66
67
|
} else {
|
|
67
68
|
|
|
68
|
-
error(
|
|
69
|
-
return;
|
|
69
|
+
error( e );
|
|
70
70
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
return;
|
|
74
|
+
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
if ( texData.image !== undefined ) {
|
|
@@ -43,7 +43,7 @@ class FileLoader extends Loader {
|
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* The expected mime type. Valid values can be found
|
|
46
|
-
* [here](
|
|
46
|
+
* [here](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype)
|
|
47
47
|
*
|
|
48
48
|
* @type {string}
|
|
49
49
|
*/
|
|
@@ -74,7 +74,6 @@ class FileLoader extends Loader {
|
|
|
74
74
|
* @param {function(any)} onLoad - Executed when the loading process has been finished.
|
|
75
75
|
* @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
|
|
76
76
|
* @param {onErrorCallback} [onError] - Executed when errors occur.
|
|
77
|
-
* @return {any|undefined} The cached resource if available.
|
|
78
77
|
*/
|
|
79
78
|
load( url, onLoad, onProgress, onError ) {
|
|
80
79
|
|
|
@@ -98,7 +97,7 @@ class FileLoader extends Loader {
|
|
|
98
97
|
|
|
99
98
|
}, 0 );
|
|
100
99
|
|
|
101
|
-
return
|
|
100
|
+
return;
|
|
102
101
|
|
|
103
102
|
}
|
|
104
103
|
|
|
@@ -10,11 +10,16 @@ const _errorMap = new WeakMap();
|
|
|
10
10
|
* textures for rendering.
|
|
11
11
|
*
|
|
12
12
|
* Note that {@link Texture#flipY} and {@link Texture#premultiplyAlpha} are ignored with image bitmaps.
|
|
13
|
-
*
|
|
13
|
+
* These options need to be configured via {@link ImageBitmapLoader#setOptions} prior to loading,
|
|
14
|
+
* unlike regular images which can be configured on the Texture to set these options on GPU upload instead.
|
|
14
15
|
*
|
|
15
|
-
*
|
|
16
|
+
* To match the default behaviour of {@link Texture}, the following options are needed:
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
+
* ```js
|
|
19
|
+
* { imageOrientation: 'flipY', premultiplyAlpha: 'none' }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* Also note that unlike {@link FileLoader}, this loader will only avoid multiple concurrent requests to the same URL if {@link Cache} is enabled.
|
|
18
23
|
*
|
|
19
24
|
* ```js
|
|
20
25
|
* const loader = new THREE.ImageBitmapLoader();
|
|
@@ -81,6 +86,9 @@ class ImageBitmapLoader extends Loader {
|
|
|
81
86
|
* Sets the given loader options. The structure of the object must match the `options` parameter of
|
|
82
87
|
* [createImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap).
|
|
83
88
|
*
|
|
89
|
+
* Note: When caching is enabled, the cache key is based on the URL only. Loading the same URL with
|
|
90
|
+
* different options will return the cached result of the first request.
|
|
91
|
+
*
|
|
84
92
|
* @param {Object} options - The loader options to set.
|
|
85
93
|
* @return {ImageBitmapLoader} A reference to this image bitmap loader.
|
|
86
94
|
*/
|
|
@@ -99,7 +107,6 @@ class ImageBitmapLoader extends Loader {
|
|
|
99
107
|
* @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished.
|
|
100
108
|
* @param {onProgressCallback} onProgress - Unsupported in this loader.
|
|
101
109
|
* @param {onErrorCallback} onError - Executed when errors occur.
|
|
102
|
-
* @return {ImageBitmap|undefined} The image bitmap.
|
|
103
110
|
*/
|
|
104
111
|
load( url, onLoad, onProgress, onError ) {
|
|
105
112
|
|
|
@@ -137,8 +144,6 @@ class ImageBitmapLoader extends Loader {
|
|
|
137
144
|
|
|
138
145
|
scope.manager.itemEnd( url );
|
|
139
146
|
|
|
140
|
-
return imageBitmap;
|
|
141
|
-
|
|
142
147
|
}
|
|
143
148
|
|
|
144
149
|
} );
|
|
@@ -156,7 +161,7 @@ class ImageBitmapLoader extends Loader {
|
|
|
156
161
|
|
|
157
162
|
}, 0 );
|
|
158
163
|
|
|
159
|
-
return
|
|
164
|
+
return;
|
|
160
165
|
|
|
161
166
|
}
|
|
162
167
|
|
|
@@ -181,8 +186,6 @@ class ImageBitmapLoader extends Loader {
|
|
|
181
186
|
|
|
182
187
|
scope.manager.itemEnd( url );
|
|
183
188
|
|
|
184
|
-
return imageBitmap;
|
|
185
|
-
|
|
186
189
|
} ).catch( function ( e ) {
|
|
187
190
|
|
|
188
191
|
if ( onError ) onError( e );
|
package/src/loaders/Loader.js
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
import { error, warn } from '../utils.js';
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
* Class for loading
|
|
32
|
+
* Class for loading materials. The files are internally
|
|
33
33
|
* loaded via {@link FileLoader}.
|
|
34
34
|
*
|
|
35
35
|
* ```js
|
|
@@ -203,6 +203,7 @@ class MaterialLoader extends Loader {
|
|
|
203
203
|
if ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;
|
|
204
204
|
if ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;
|
|
205
205
|
if ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;
|
|
206
|
+
if ( json.allowOverride !== undefined ) material.allowOverride = json.allowOverride;
|
|
206
207
|
|
|
207
208
|
if ( json.visible !== undefined ) material.visible = json.visible;
|
|
208
209
|
|
|
@@ -214,7 +215,7 @@ class MaterialLoader extends Loader {
|
|
|
214
215
|
|
|
215
216
|
if ( typeof json.vertexColors === 'number' ) {
|
|
216
217
|
|
|
217
|
-
material.vertexColors =
|
|
218
|
+
material.vertexColors = json.vertexColors > 0;
|
|
218
219
|
|
|
219
220
|
} else {
|
|
220
221
|
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
} from '../constants.js';
|
|
20
20
|
import { InstancedBufferAttribute } from '../core/InstancedBufferAttribute.js';
|
|
21
21
|
import { Color } from '../math/Color.js';
|
|
22
|
+
import { Vector3 } from '../math/Vector3.js';
|
|
22
23
|
import { Object3D } from '../core/Object3D.js';
|
|
23
24
|
import { Group } from '../objects/Group.js';
|
|
24
25
|
import { InstancedMesh } from '../objects/InstancedMesh.js';
|
|
@@ -62,6 +63,9 @@ import * as Geometries from '../geometries/Geometries.js';
|
|
|
62
63
|
import { getTypedArray, error, warn } from '../utils.js';
|
|
63
64
|
import { Box3 } from '../math/Box3.js';
|
|
64
65
|
import { Sphere } from '../math/Sphere.js';
|
|
66
|
+
import { SphericalHarmonics3 } from '../math/SphericalHarmonics3.js';
|
|
67
|
+
|
|
68
|
+
const _customGeometries = {};
|
|
65
69
|
|
|
66
70
|
/**
|
|
67
71
|
* A loader for loading a JSON resource in the [JSON Object/Scene format](https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4).
|
|
@@ -119,11 +123,11 @@ class ObjectLoader extends Loader {
|
|
|
119
123
|
|
|
120
124
|
json = JSON.parse( text );
|
|
121
125
|
|
|
122
|
-
} catch (
|
|
126
|
+
} catch ( e ) {
|
|
123
127
|
|
|
124
|
-
if ( onError !== undefined ) onError(
|
|
128
|
+
if ( onError !== undefined ) onError( e );
|
|
125
129
|
|
|
126
|
-
error( 'ObjectLoader: Can\'t parse ' + url + '.',
|
|
130
|
+
error( 'ObjectLoader: Can\'t parse ' + url + '.', e.message );
|
|
127
131
|
|
|
128
132
|
return;
|
|
129
133
|
|
|
@@ -168,7 +172,17 @@ class ObjectLoader extends Loader {
|
|
|
168
172
|
|
|
169
173
|
const text = await loader.loadAsync( url, onProgress );
|
|
170
174
|
|
|
171
|
-
|
|
175
|
+
let json;
|
|
176
|
+
|
|
177
|
+
try {
|
|
178
|
+
|
|
179
|
+
json = JSON.parse( text );
|
|
180
|
+
|
|
181
|
+
} catch ( e ) {
|
|
182
|
+
|
|
183
|
+
throw new Error( 'ObjectLoader: Can\'t parse ' + url + '. ' + e.message );
|
|
184
|
+
|
|
185
|
+
}
|
|
172
186
|
|
|
173
187
|
const metadata = json.metadata;
|
|
174
188
|
|
|
@@ -263,6 +277,20 @@ class ObjectLoader extends Loader {
|
|
|
263
277
|
|
|
264
278
|
}
|
|
265
279
|
|
|
280
|
+
/**
|
|
281
|
+
* Registers the given geometry at the internal
|
|
282
|
+
* geometry library.
|
|
283
|
+
*
|
|
284
|
+
* @static
|
|
285
|
+
* @param {string} type - The geometry type.
|
|
286
|
+
* @param {BufferGeometry.constructor} geometryClass - The geometry class.
|
|
287
|
+
*/
|
|
288
|
+
static registerGeometry( type, geometryClass ) {
|
|
289
|
+
|
|
290
|
+
_customGeometries[ type ] = geometryClass;
|
|
291
|
+
|
|
292
|
+
}
|
|
293
|
+
|
|
266
294
|
// internals
|
|
267
295
|
|
|
268
296
|
parseShapes( json ) {
|
|
@@ -358,9 +386,13 @@ class ObjectLoader extends Loader {
|
|
|
358
386
|
|
|
359
387
|
geometry = Geometries[ data.type ].fromJSON( data, shapes );
|
|
360
388
|
|
|
389
|
+
} else if ( data.type in _customGeometries ) {
|
|
390
|
+
|
|
391
|
+
geometry = _customGeometries[ data.type ].fromJSON( data, shapes );
|
|
392
|
+
|
|
361
393
|
} else {
|
|
362
394
|
|
|
363
|
-
warn( `ObjectLoader:
|
|
395
|
+
warn( `ObjectLoader: Unknown geometry type "${ data.type }". Use .registerGeometry() before starting the deserialization process.` );
|
|
364
396
|
|
|
365
397
|
}
|
|
366
398
|
|
|
@@ -740,6 +772,7 @@ class ObjectLoader extends Loader {
|
|
|
740
772
|
if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;
|
|
741
773
|
if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;
|
|
742
774
|
if ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;
|
|
775
|
+
if ( data.normalized !== undefined ) texture.normalized = data.normalized;
|
|
743
776
|
|
|
744
777
|
if ( data.userData !== undefined ) texture.userData = data.userData;
|
|
745
778
|
|
|
@@ -935,7 +968,8 @@ class ObjectLoader extends Loader {
|
|
|
935
968
|
|
|
936
969
|
case 'LightProbe':
|
|
937
970
|
|
|
938
|
-
|
|
971
|
+
const sh = new SphericalHarmonics3().fromArray( data.sh );
|
|
972
|
+
object = new LightProbe( sh, data.intensity );
|
|
939
973
|
|
|
940
974
|
break;
|
|
941
975
|
|
|
@@ -1127,6 +1161,11 @@ class ObjectLoader extends Loader {
|
|
|
1127
1161
|
|
|
1128
1162
|
if ( data.up !== undefined ) object.up.fromArray( data.up );
|
|
1129
1163
|
|
|
1164
|
+
if ( data.pivot !== undefined ) object.pivot = new Vector3().fromArray( data.pivot );
|
|
1165
|
+
|
|
1166
|
+
if ( data.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, data.morphTargetDictionary );
|
|
1167
|
+
if ( data.morphTargetInfluences !== undefined ) object.morphTargetInfluences = data.morphTargetInfluences.slice();
|
|
1168
|
+
|
|
1130
1169
|
if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
|
|
1131
1170
|
if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
|
|
1132
1171
|
|
|
@@ -1144,6 +1183,7 @@ class ObjectLoader extends Loader {
|
|
|
1144
1183
|
if ( data.visible !== undefined ) object.visible = data.visible;
|
|
1145
1184
|
if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;
|
|
1146
1185
|
if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;
|
|
1186
|
+
if ( data.static !== undefined ) object.static = data.static;
|
|
1147
1187
|
if ( data.userData !== undefined ) object.userData = data.userData;
|
|
1148
1188
|
if ( data.layers !== undefined ) object.layers.mask = data.layers;
|
|
1149
1189
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { float } from '../../nodes/tsl/TSLBase.js';
|
|
2
2
|
|
|
3
3
|
import { Loader } from '../Loader.js';
|
|
4
4
|
import { FileLoader } from '../../loaders/FileLoader.js';
|
|
@@ -185,7 +185,7 @@ class NodeLoader extends Loader {
|
|
|
185
185
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
return
|
|
188
|
+
return new this.nodes[ type ]();
|
|
189
189
|
|
|
190
190
|
}
|
|
191
191
|
|
|
@@ -89,6 +89,24 @@ class NodeObjectLoader extends ObjectLoader {
|
|
|
89
89
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Async version of {@link NodeObjectLoader#parse}.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} json - The JSON definition
|
|
96
|
+
* @return {Promise<Object3D>} A Promise that resolves with the parsed 3D object.
|
|
97
|
+
*/
|
|
98
|
+
async parseAsync( json ) {
|
|
99
|
+
|
|
100
|
+
this._nodesJSON = json.nodes;
|
|
101
|
+
|
|
102
|
+
const data = await super.parseAsync( json );
|
|
103
|
+
|
|
104
|
+
this._nodesJSON = null; // dispose
|
|
105
|
+
|
|
106
|
+
return data;
|
|
107
|
+
|
|
108
|
+
}
|
|
109
|
+
|
|
92
110
|
/**
|
|
93
111
|
* Parses the node objects from the given JSON and textures.
|
|
94
112
|
*
|
|
@@ -832,6 +832,7 @@ class Material extends EventDispatcher {
|
|
|
832
832
|
if ( this.alphaToCoverage === true ) data.alphaToCoverage = true;
|
|
833
833
|
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;
|
|
834
834
|
if ( this.forceSinglePass === true ) data.forceSinglePass = true;
|
|
835
|
+
if ( this.allowOverride === false ) data.allowOverride = false;
|
|
835
836
|
|
|
836
837
|
if ( this.wireframe === true ) data.wireframe = true;
|
|
837
838
|
if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;
|
|
@@ -967,6 +968,7 @@ class Material extends EventDispatcher {
|
|
|
967
968
|
this.alphaToCoverage = source.alphaToCoverage;
|
|
968
969
|
this.premultipliedAlpha = source.premultipliedAlpha;
|
|
969
970
|
this.forceSinglePass = source.forceSinglePass;
|
|
971
|
+
this.allowOverride = source.allowOverride;
|
|
970
972
|
|
|
971
973
|
this.visible = source.visible;
|
|
972
974
|
|
|
@@ -267,6 +267,14 @@ class MeshLambertMaterial extends Material {
|
|
|
267
267
|
*/
|
|
268
268
|
this.reflectivity = 1;
|
|
269
269
|
|
|
270
|
+
/**
|
|
271
|
+
* Scales the effect of the environment map by multiplying its color.
|
|
272
|
+
*
|
|
273
|
+
* @type {number}
|
|
274
|
+
* @default 1
|
|
275
|
+
*/
|
|
276
|
+
this.envMapIntensity = 1.0;
|
|
277
|
+
|
|
270
278
|
/**
|
|
271
279
|
* The index of refraction (IOR) of air (approximately 1) divided by the
|
|
272
280
|
* index of refraction of the material. It is used with environment mapping
|
|
@@ -373,6 +381,7 @@ class MeshLambertMaterial extends Material {
|
|
|
373
381
|
this.envMapRotation.copy( source.envMapRotation );
|
|
374
382
|
this.combine = source.combine;
|
|
375
383
|
this.reflectivity = source.reflectivity;
|
|
384
|
+
this.envMapIntensity = source.envMapIntensity;
|
|
376
385
|
this.refractionRatio = source.refractionRatio;
|
|
377
386
|
|
|
378
387
|
this.wireframe = source.wireframe;
|
|
@@ -284,6 +284,14 @@ class MeshPhongMaterial extends Material {
|
|
|
284
284
|
*/
|
|
285
285
|
this.reflectivity = 1;
|
|
286
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Scales the effect of the environment map by multiplying its color.
|
|
289
|
+
*
|
|
290
|
+
* @type {number}
|
|
291
|
+
* @default 1
|
|
292
|
+
*/
|
|
293
|
+
this.envMapIntensity = 1.0;
|
|
294
|
+
|
|
287
295
|
/**
|
|
288
296
|
* The index of refraction (IOR) of air (approximately 1) divided by the
|
|
289
297
|
* index of refraction of the material. It is used with environment mapping
|
|
@@ -392,6 +400,7 @@ class MeshPhongMaterial extends Material {
|
|
|
392
400
|
this.envMapRotation.copy( source.envMapRotation );
|
|
393
401
|
this.combine = source.combine;
|
|
394
402
|
this.reflectivity = source.reflectivity;
|
|
403
|
+
this.envMapIntensity = source.envMapIntensity;
|
|
395
404
|
this.refractionRatio = source.refractionRatio;
|
|
396
405
|
|
|
397
406
|
this.wireframe = source.wireframe;
|
|
@@ -57,7 +57,7 @@ class MeshToonMaterial extends Material {
|
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* Gradient map for toon shading. It's required to set
|
|
60
|
-
* {@link Texture#minFilter} and {@link Texture#magFilter} to {@
|
|
60
|
+
* {@link Texture#minFilter} and {@link Texture#magFilter} to {@link NearestFilter}
|
|
61
61
|
* when using this type of texture.
|
|
62
62
|
*
|
|
63
63
|
* @type {?Texture}
|
|
@@ -158,9 +158,22 @@ class ShaderMaterial extends Material {
|
|
|
158
158
|
this.wireframeLinewidth = 1;
|
|
159
159
|
|
|
160
160
|
/**
|
|
161
|
-
*
|
|
161
|
+
* Defines whether the material color is affected by global fog settings; `true`
|
|
162
162
|
* to pass fog uniforms to the shader.
|
|
163
163
|
*
|
|
164
|
+
* Setting this property to `true` requires the definition of fog uniforms. It is
|
|
165
|
+
* recommended to use `UniformsUtils.merge()` to combine the custom shader uniforms
|
|
166
|
+
* with predefined fog uniforms.
|
|
167
|
+
*
|
|
168
|
+
* ```js
|
|
169
|
+
* const material = new ShaderMaterial( {
|
|
170
|
+
* uniforms: UniformsUtils.merge( [ UniformsLib[ 'fog' ], shaderUniforms ] );
|
|
171
|
+
* vertexShader: vertexShader,
|
|
172
|
+
* fragmentShader: fragmentShader,
|
|
173
|
+
* fog: true
|
|
174
|
+
* } );
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
164
177
|
* @type {boolean}
|
|
165
178
|
* @default false
|
|
166
179
|
*/
|
|
@@ -279,6 +292,12 @@ class ShaderMaterial extends Material {
|
|
|
279
292
|
|
|
280
293
|
this.glslVersion = source.glslVersion;
|
|
281
294
|
|
|
295
|
+
this.defaultAttributeValues = Object.assign( {}, source.defaultAttributeValues );
|
|
296
|
+
|
|
297
|
+
this.index0AttributeName = source.index0AttributeName;
|
|
298
|
+
|
|
299
|
+
this.uniformsNeedUpdate = source.uniformsNeedUpdate;
|
|
300
|
+
|
|
282
301
|
return this;
|
|
283
302
|
|
|
284
303
|
}
|
|
@@ -8,8 +8,8 @@ import { positionGeometry } from '../../nodes/accessors/Position.js';
|
|
|
8
8
|
import { mix, smoothstep } from '../../nodes/math/MathNode.js';
|
|
9
9
|
import { Fn, float, vec2, vec3, vec4, If } from '../../nodes/tsl/TSLBase.js';
|
|
10
10
|
import { uv } from '../../nodes/accessors/UV.js';
|
|
11
|
-
import { viewport } from '../../nodes/display/ScreenNode.js';
|
|
12
|
-
import {
|
|
11
|
+
import { screenDPR, viewport } from '../../nodes/display/ScreenNode.js';
|
|
12
|
+
import { viewportOpaqueMipTexture } from '../../nodes/display/ViewportTextureNode.js';
|
|
13
13
|
|
|
14
14
|
import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
15
15
|
import { NoBlending } from '../../constants.js';
|
|
@@ -56,7 +56,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
56
56
|
* @type {boolean}
|
|
57
57
|
* @default false
|
|
58
58
|
*/
|
|
59
|
-
this.
|
|
59
|
+
this.vertexColors = parameters.vertexColors;
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* The dash offset.
|
|
@@ -133,7 +133,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
133
133
|
const { renderer } = builder;
|
|
134
134
|
|
|
135
135
|
const useAlphaToCoverage = this._useAlphaToCoverage;
|
|
136
|
-
const
|
|
136
|
+
const vertexColors = this.vertexColors;
|
|
137
137
|
const useDash = this._useDash;
|
|
138
138
|
const useWorldUnits = this._useWorldUnits;
|
|
139
139
|
|
|
@@ -300,7 +300,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
300
300
|
offset.assign( offset.mul( materialLineWidth ) );
|
|
301
301
|
|
|
302
302
|
// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...
|
|
303
|
-
offset.assign( offset.div( viewport.w ) );
|
|
303
|
+
offset.assign( offset.div( viewport.w.div( screenDPR ) ) );
|
|
304
304
|
|
|
305
305
|
// select end
|
|
306
306
|
clip.assign( positionGeometry.y.lessThan( 0.5 ).select( clipStart, clipEnd ) );
|
|
@@ -434,7 +434,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
434
434
|
|
|
435
435
|
} else {
|
|
436
436
|
|
|
437
|
-
if (
|
|
437
|
+
if ( vertexColors ) {
|
|
438
438
|
|
|
439
439
|
const instanceColorStart = attribute( 'instanceColorStart' );
|
|
440
440
|
const instanceColorEnd = attribute( 'instanceColorEnd' );
|
|
@@ -459,7 +459,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
459
459
|
|
|
460
460
|
const opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;
|
|
461
461
|
|
|
462
|
-
this.outputNode = vec4( this.colorNode.rgb.mul( opacityNode ).add(
|
|
462
|
+
this.outputNode = vec4( this.colorNode.rgb.mul( opacityNode ).add( viewportOpaqueMipTexture().rgb.mul( opacityNode.oneMinus() ) ), this.colorNode.a );
|
|
463
463
|
|
|
464
464
|
}
|
|
465
465
|
|
|
@@ -537,6 +537,33 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
537
537
|
|
|
538
538
|
}
|
|
539
539
|
|
|
540
|
+
/**
|
|
541
|
+
* Copies the properties of the given material to this instance.
|
|
542
|
+
*
|
|
543
|
+
* @param {Line2NodeMaterial} source - The material to copy.
|
|
544
|
+
* @return {Line2NodeMaterial} A reference to this material.
|
|
545
|
+
*/
|
|
546
|
+
copy( source ) {
|
|
547
|
+
|
|
548
|
+
super.copy( source );
|
|
549
|
+
|
|
550
|
+
this.vertexColors = source.vertexColors;
|
|
551
|
+
this.dashOffset = source.dashOffset;
|
|
552
|
+
|
|
553
|
+
this.lineColorNode = source.lineColorNode;
|
|
554
|
+
this.offsetNode = source.offsetNode;
|
|
555
|
+
this.dashScaleNode = source.dashScaleNode;
|
|
556
|
+
this.dashSizeNode = source.dashSizeNode;
|
|
557
|
+
this.gapSizeNode = source.gapSizeNode;
|
|
558
|
+
|
|
559
|
+
this._useDash = source._useDash;
|
|
560
|
+
this._useAlphaToCoverage = source._useAlphaToCoverage;
|
|
561
|
+
this._useWorldUnits = source._useWorldUnits;
|
|
562
|
+
|
|
563
|
+
return this;
|
|
564
|
+
|
|
565
|
+
}
|
|
566
|
+
|
|
540
567
|
}
|
|
541
568
|
|
|
542
569
|
export default Line2NodeMaterial;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor, dispersion } from '../../nodes/core/PropertyNode.js';
|
|
1
|
+
import { clearcoat, clearcoatRoughness, sheen, sheenRoughness, iridescence, iridescenceIOR, iridescenceThickness, specularColor, specularColorBlended, specularF90, diffuseColor, metalness, roughness, anisotropy, alphaT, anisotropyT, anisotropyB, ior, transmission, thickness, attenuationDistance, attenuationColor, dispersion } from '../../nodes/core/PropertyNode.js';
|
|
2
2
|
import { materialClearcoat, materialClearcoatRoughness, materialClearcoatNormal, materialSheen, materialSheenRoughness, materialIridescence, materialIridescenceIOR, materialIridescenceThickness, materialSpecularIntensity, materialSpecularColor, materialAnisotropy, materialIOR, materialTransmission, materialThickness, materialAttenuationDistance, materialAttenuationColor, materialDispersion } from '../../nodes/accessors/MaterialNode.js';
|
|
3
3
|
import { float, vec2, vec3, If } from '../../nodes/tsl/TSLBase.js';
|
|
4
4
|
import getRoughness from '../../nodes/functions/material/getRoughness.js';
|
|
@@ -350,7 +350,8 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
|
|
|
350
350
|
const iorNode = this.iorNode ? float( this.iorNode ) : materialIOR;
|
|
351
351
|
|
|
352
352
|
ior.assign( iorNode );
|
|
353
|
-
specularColor.assign(
|
|
353
|
+
specularColor.assign( min( pow2( ior.sub( 1.0 ).div( ior.add( 1.0 ) ) ).mul( materialSpecularColor ), vec3( 1.0 ) ).mul( materialSpecularIntensity ) );
|
|
354
|
+
specularColorBlended.assign( mix( specularColor, diffuseColor.rgb, metalness ) );
|
|
354
355
|
specularF90.assign( mix( materialSpecularIntensity, 1.0, metalness ) );
|
|
355
356
|
|
|
356
357
|
}
|
|
@@ -501,6 +502,8 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
|
|
|
501
502
|
this.specularIntensityNode = source.specularIntensityNode;
|
|
502
503
|
this.specularColorNode = source.specularColorNode;
|
|
503
504
|
|
|
505
|
+
this.iorNode = source.iorNode;
|
|
506
|
+
|
|
504
507
|
this.transmissionNode = source.transmissionNode;
|
|
505
508
|
this.thicknessNode = source.thicknessNode;
|
|
506
509
|
this.attenuationDistanceNode = source.attenuationDistanceNode;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import NodeMaterial from './NodeMaterial.js';
|
|
2
|
-
import { diffuseColor, metalness, roughness, specularColor, specularF90 } from '../../nodes/core/PropertyNode.js';
|
|
2
|
+
import { diffuseColor, diffuseContribution, metalness, roughness, specularColor, specularColorBlended, specularF90 } from '../../nodes/core/PropertyNode.js';
|
|
3
3
|
import { mix } from '../../nodes/math/MathNode.js';
|
|
4
4
|
import { materialRoughness, materialMetalness } from '../../nodes/accessors/MaterialNode.js';
|
|
5
5
|
import getRoughness from '../../nodes/functions/material/getRoughness.js';
|
|
6
6
|
import PhysicalLightingModel from '../../nodes/functions/PhysicalLightingModel.js';
|
|
7
7
|
import EnvironmentNode from '../../nodes/lighting/EnvironmentNode.js';
|
|
8
|
-
import { float, vec3
|
|
8
|
+
import { float, vec3 } from '../../nodes/tsl/TSLBase.js';
|
|
9
9
|
|
|
10
10
|
import { MeshStandardMaterial } from '../MeshStandardMaterial.js';
|
|
11
11
|
|
|
@@ -135,7 +135,8 @@ class MeshStandardNodeMaterial extends NodeMaterial {
|
|
|
135
135
|
|
|
136
136
|
const specularColorNode = mix( vec3( 0.04 ), diffuseColor.rgb, metalness );
|
|
137
137
|
|
|
138
|
-
specularColor.assign(
|
|
138
|
+
specularColor.assign( vec3( 0.04 ) );
|
|
139
|
+
specularColorBlended.assign( specularColorNode );
|
|
139
140
|
specularF90.assign( 1.0 );
|
|
140
141
|
|
|
141
142
|
}
|
|
@@ -166,7 +167,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
|
|
|
166
167
|
|
|
167
168
|
// DIFFUSE COLOR
|
|
168
169
|
|
|
169
|
-
|
|
170
|
+
diffuseContribution.assign( diffuseColor.rgb.mul( metalnessNode.oneMinus() ) );
|
|
170
171
|
|
|
171
172
|
}
|
|
172
173
|
|