super-three 0.179.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 +14522 -12207
- package/build/three.core.js +12005 -10954
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +2270 -1005
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +63 -18
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +16573 -7890
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +16533 -7888
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +12 -4
- package/examples/jsm/animation/CCDIKSolver.js +8 -4
- package/examples/jsm/controls/ArcballControls.js +15 -12
- package/examples/jsm/controls/DragControls.js +9 -59
- package/examples/jsm/controls/FirstPersonControls.js +61 -57
- package/examples/jsm/controls/FlyControls.js +5 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +113 -10
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +9 -9
- package/examples/jsm/controls/TransformControls.js +35 -3
- 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/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +2 -2
- package/examples/jsm/exporters/GLTFExporter.js +185 -34
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +31 -5
- package/examples/jsm/geometries/DecalGeometry.js +3 -3
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +21 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -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 +110 -13
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +542 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- 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 +238 -0
- package/examples/jsm/inspector/tabs/Memory.js +128 -0
- package/examples/jsm/inspector/tabs/Parameters.js +380 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- 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 +268 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +2072 -0
- package/examples/jsm/inspector/ui/Style.js +1667 -0
- package/examples/jsm/inspector/ui/Tab.js +265 -0
- package/examples/jsm/inspector/ui/Values.js +476 -0
- package/examples/jsm/inspector/ui/utils.js +69 -0
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/interactive/HTMLMesh.js +6 -10
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- 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/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineMaterial.js +7 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/3MFLoader.js +3 -3
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +27 -4029
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +692 -53
- package/examples/jsm/loaders/FBXLoader.js +237 -39
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +159 -185
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +162 -53
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +41 -50
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +9 -41
- package/examples/jsm/loaders/MaterialXLoader.js +22 -5
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PCDLoader.js +4 -2
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +4 -4
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
- 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/lwo/IFFParser.js +1 -1
- 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 +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -2
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -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/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +91 -7
- package/examples/jsm/objects/SkyMesh.js +151 -17
- package/examples/jsm/objects/Water.js +7 -6
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +11 -13
- 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/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- 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/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +175 -61
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +21 -8
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +7 -6
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +52 -10
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +23 -9
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
- package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- 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 +59 -9
- package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
- 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 +81 -20
- 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 +638 -0
- package/examples/jsm/tsl/display/SSRNode.js +186 -69
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- 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 +381 -75
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- 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 +3 -4
- 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 +13 -6
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
- package/package.json +27 -38
- package/src/Three.Core.js +7 -3
- package/src/Three.TSL.js +61 -16
- package/src/Three.WebGPU.Nodes.js +7 -0
- package/src/Three.WebGPU.js +11 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +12 -2
- package/src/animation/AnimationClip.js +21 -5
- package/src/animation/AnimationMixer.js +9 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +54 -14
- package/src/animation/PropertyBinding.js +12 -11
- 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 +11 -10
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +100 -7
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +24 -12
- package/src/core/Clock.js +7 -0
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +55 -6
- package/src/core/Raycaster.js +4 -3
- package/src/core/RenderTarget.js +14 -5
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +259 -57
- package/src/extras/TextureUtils.js +6 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +10 -8
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +9 -3
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +4 -1
- 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/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +13 -2
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +30 -2
- package/src/loaders/DataTextureLoader.js +6 -4
- package/src/loaders/FileLoader.js +4 -4
- package/src/loaders/ImageBitmapLoader.js +17 -13
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +9 -3
- package/src/loaders/LoadingManager.js +25 -3
- package/src/loaders/MaterialLoader.js +6 -4
- package/src/loaders/ObjectLoader.js +57 -17
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +5 -4
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +11 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +11 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +2 -1
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +22 -3
- package/src/materials/nodes/Line2NodeMaterial.js +36 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +95 -35
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +23 -21
- package/src/math/Matrix2.js +14 -10
- package/src/math/Matrix3.js +15 -11
- package/src/math/Matrix4.js +94 -81
- package/src/math/Plane.js +5 -4
- package/src/math/Quaternion.js +60 -84
- package/src/math/Sphere.js +1 -1
- package/src/math/Spherical.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 -65
- package/src/nodes/TSL.js +11 -8
- 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 +30 -3
- package/src/nodes/accessors/Camera.js +260 -13
- package/src/nodes/accessors/ClippingNode.js +10 -9
- package/src/nodes/accessors/CubeTextureNode.js +32 -6
- package/src/nodes/accessors/InstanceNode.js +164 -39
- package/src/nodes/accessors/Lights.js +10 -0
- 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 +16 -15
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +51 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
- package/src/nodes/accessors/ReferenceNode.js +11 -10
- 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 -24
- package/src/nodes/accessors/StorageTextureNode.js +62 -9
- package/src/nodes/accessors/Tangent.js +4 -14
- package/src/nodes/accessors/Texture3DNode.js +41 -31
- package/src/nodes/accessors/TextureNode.js +193 -63
- 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 +25 -5
- package/src/nodes/code/FunctionNode.js +25 -3
- package/src/nodes/core/ArrayNode.js +22 -2
- package/src/nodes/core/AssignNode.js +6 -5
- package/src/nodes/core/AttributeNode.js +5 -4
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +133 -15
- package/src/nodes/core/IndexNode.js +4 -3
- package/src/nodes/core/InputNode.js +3 -2
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +264 -46
- package/src/nodes/core/NodeBuilder.js +453 -87
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +31 -23
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +25 -97
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +34 -3
- package/src/nodes/core/PropertyNode.js +26 -3
- package/src/nodes/core/StackNode.js +99 -23
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +22 -8
- package/src/nodes/core/StructTypeNode.js +13 -18
- package/src/nodes/core/SubBuildNode.js +4 -4
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +37 -13
- package/src/nodes/core/VarNode.js +96 -34
- package/src/nodes/core/VaryingNode.js +2 -18
- package/src/nodes/display/BlendModes.js +0 -63
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +18 -1
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +41 -5
- package/src/nodes/display/PassNode.js +175 -25
- package/src/nodes/display/RenderOutputNode.js +35 -9
- package/src/nodes/display/ScreenNode.js +47 -15
- package/src/nodes/display/ToneMappingNode.js +32 -5
- package/src/nodes/display/ToonOutlinePassNode.js +10 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +72 -14
- package/src/nodes/fog/Fog.js +18 -34
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- 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/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +128 -46
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +44 -6
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
- package/src/nodes/gpgpu/ComputeNode.js +76 -38
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +34 -9
- package/src/nodes/lighting/LightsNode.js +10 -32
- package/src/nodes/lighting/PointShadowNode.js +167 -148
- package/src/nodes/lighting/ShadowFilterNode.js +55 -65
- package/src/nodes/lighting/ShadowNode.js +189 -44
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +25 -8
- package/src/nodes/math/MathNode.js +98 -57
- package/src/nodes/math/OperatorNode.js +8 -5
- 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 +111 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -3
- package/src/nodes/tsl/TSLCore.js +488 -166
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +14 -13
- package/src/nodes/utils/EventNode.js +67 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +7 -4
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +60 -8
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +60 -1
- package/src/nodes/utils/RTTNode.js +14 -4
- package/src/nodes/utils/ReflectorNode.js +61 -11
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +12 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +46 -18
- package/src/objects/InstancedMesh.js +30 -3
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +3 -2
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +12 -2
- package/src/objects/SkinnedMesh.js +29 -10
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +372 -179
- package/src/renderers/common/Animation.js +16 -4
- package/src/renderers/common/Attributes.js +16 -2
- package/src/renderers/common/Backend.js +137 -35
- package/src/renderers/common/Background.js +28 -14
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +83 -12
- 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/CanvasTarget.js +341 -0
- 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/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +55 -3
- package/src/renderers/common/Info.js +337 -6
- package/src/renderers/common/InspectorBase.js +151 -0
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +41 -8
- package/src/renderers/common/PostProcessing.js +9 -226
- package/src/renderers/common/QuadMesh.js +7 -1
- 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 +18 -2
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +32 -6
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +22 -6
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +927 -335
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +52 -14
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +208 -47
- package/src/renderers/common/TimestampQueryPool.js +70 -6
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +64 -2
- package/src/renderers/common/XRManager.js +79 -51
- package/src/renderers/common/extras/PMREMGenerator.js +176 -79
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +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 +152 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- 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 +221 -190
- 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 +4 -1
- 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 +8 -5
- package/src/renderers/shaders/UniformsUtils.js +52 -9
- 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 +11 -5
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- 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 +63 -122
- package/src/renderers/webgl/WebGLPrograms.js +65 -52
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShadowMap.js +191 -26
- package/src/renderers/webgl/WebGLState.js +79 -40
- package/src/renderers/webgl/WebGLTextures.js +234 -68
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
- package/src/renderers/webgl/WebGLUtils.js +8 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
- 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/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
- package/src/renderers/webgpu/WebGPUBackend.js +403 -253
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +5 -3
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
- package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +45 -29
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +5 -4
- package/src/textures/Texture.js +19 -7
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +344 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- 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 -144
- 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 -30
- 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
|
@@ -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';
|
|
@@ -59,12 +60,15 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
|
|
|
59
60
|
import { Loader } from './Loader.js';
|
|
60
61
|
import { FileLoader } from './FileLoader.js';
|
|
61
62
|
import * as Geometries from '../geometries/Geometries.js';
|
|
62
|
-
import { getTypedArray } from '../utils.js';
|
|
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
|
-
* A loader for loading a JSON resource in the [JSON Object/Scene format]
|
|
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).
|
|
68
72
|
* The files are internally loaded via {@link FileLoader}.
|
|
69
73
|
*
|
|
70
74
|
* ```js
|
|
@@ -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
|
-
|
|
130
|
+
error( 'ObjectLoader: Can\'t parse ' + url + '.', e.message );
|
|
127
131
|
|
|
128
132
|
return;
|
|
129
133
|
|
|
@@ -135,7 +139,7 @@ class ObjectLoader extends Loader {
|
|
|
135
139
|
|
|
136
140
|
if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
|
|
137
141
|
|
|
138
|
-
|
|
142
|
+
error( 'ObjectLoader: Can\'t load ' + url );
|
|
139
143
|
return;
|
|
140
144
|
|
|
141
145
|
}
|
|
@@ -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
|
-
|
|
395
|
+
warn( `ObjectLoader: Unknown geometry type "${ data.type }". Use .registerGeometry() before starting the deserialization process.` );
|
|
364
396
|
|
|
365
397
|
}
|
|
366
398
|
|
|
@@ -651,7 +683,7 @@ class ObjectLoader extends Loader {
|
|
|
651
683
|
|
|
652
684
|
if ( typeof value === 'number' ) return value;
|
|
653
685
|
|
|
654
|
-
|
|
686
|
+
warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
|
|
655
687
|
|
|
656
688
|
return type[ value ];
|
|
657
689
|
|
|
@@ -667,13 +699,13 @@ class ObjectLoader extends Loader {
|
|
|
667
699
|
|
|
668
700
|
if ( data.image === undefined ) {
|
|
669
701
|
|
|
670
|
-
|
|
702
|
+
warn( 'ObjectLoader: No "image" specified for', data.uuid );
|
|
671
703
|
|
|
672
704
|
}
|
|
673
705
|
|
|
674
706
|
if ( images[ data.image ] === undefined ) {
|
|
675
707
|
|
|
676
|
-
|
|
708
|
+
warn( 'ObjectLoader: Undefined image', data.image );
|
|
677
709
|
|
|
678
710
|
}
|
|
679
711
|
|
|
@@ -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
|
|
|
@@ -761,7 +794,7 @@ class ObjectLoader extends Loader {
|
|
|
761
794
|
|
|
762
795
|
if ( geometries[ name ] === undefined ) {
|
|
763
796
|
|
|
764
|
-
|
|
797
|
+
warn( 'ObjectLoader: Undefined geometry', name );
|
|
765
798
|
|
|
766
799
|
}
|
|
767
800
|
|
|
@@ -783,7 +816,7 @@ class ObjectLoader extends Loader {
|
|
|
783
816
|
|
|
784
817
|
if ( materials[ uuid ] === undefined ) {
|
|
785
818
|
|
|
786
|
-
|
|
819
|
+
warn( 'ObjectLoader: Undefined material', uuid );
|
|
787
820
|
|
|
788
821
|
}
|
|
789
822
|
|
|
@@ -797,7 +830,7 @@ class ObjectLoader extends Loader {
|
|
|
797
830
|
|
|
798
831
|
if ( materials[ name ] === undefined ) {
|
|
799
832
|
|
|
800
|
-
|
|
833
|
+
warn( 'ObjectLoader: Undefined material', name );
|
|
801
834
|
|
|
802
835
|
}
|
|
803
836
|
|
|
@@ -809,7 +842,7 @@ class ObjectLoader extends Loader {
|
|
|
809
842
|
|
|
810
843
|
if ( textures[ uuid ] === undefined ) {
|
|
811
844
|
|
|
812
|
-
|
|
845
|
+
warn( 'ObjectLoader: Undefined texture', uuid );
|
|
813
846
|
|
|
814
847
|
}
|
|
815
848
|
|
|
@@ -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
|
|
|
@@ -1210,7 +1250,7 @@ class ObjectLoader extends Loader {
|
|
|
1210
1250
|
|
|
1211
1251
|
if ( skeleton === undefined ) {
|
|
1212
1252
|
|
|
1213
|
-
|
|
1253
|
+
warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
|
|
1214
1254
|
|
|
1215
1255
|
} else {
|
|
1216
1256
|
|
|
@@ -14,7 +14,7 @@ import { Loader } from './Loader.js';
|
|
|
14
14
|
* ```
|
|
15
15
|
* Please note that `TextureLoader` has dropped support for progress
|
|
16
16
|
* events in `r84`. For a `TextureLoader` that supports progress events, see
|
|
17
|
-
* [this thread]
|
|
17
|
+
* [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145).
|
|
18
18
|
*
|
|
19
19
|
* @augments Loader
|
|
20
20
|
*/
|
|
@@ -1,7 +1,8 @@
|
|
|
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';
|
|
5
|
+
import { error } from '../../utils.js';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* A loader for loading node objects in the three.js JSON Object/Scene format.
|
|
@@ -63,7 +64,7 @@ class NodeLoader extends Loader {
|
|
|
63
64
|
|
|
64
65
|
} else {
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
error( e );
|
|
67
68
|
|
|
68
69
|
}
|
|
69
70
|
|
|
@@ -179,12 +180,12 @@ class NodeLoader extends Loader {
|
|
|
179
180
|
|
|
180
181
|
if ( this.nodes[ type ] === undefined ) {
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
error( 'NodeLoader: Node type not found:', type );
|
|
183
184
|
return float();
|
|
184
185
|
|
|
185
186
|
}
|
|
186
187
|
|
|
187
|
-
return
|
|
188
|
+
return new this.nodes[ type ]();
|
|
188
189
|
|
|
189
190
|
}
|
|
190
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
|
*
|
|
@@ -2,6 +2,7 @@ import { Color } from '../math/Color.js';
|
|
|
2
2
|
import { EventDispatcher } from '../core/EventDispatcher.js';
|
|
3
3
|
import { FrontSide, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor, AlwaysStencilFunc, KeepStencilOp } from '../constants.js';
|
|
4
4
|
import { generateUUID } from '../math/MathUtils.js';
|
|
5
|
+
import { warn } from '../utils.js';
|
|
5
6
|
|
|
6
7
|
let _materialId = 0;
|
|
7
8
|
|
|
@@ -522,7 +523,7 @@ class Material extends EventDispatcher {
|
|
|
522
523
|
*
|
|
523
524
|
* This method can only be used when rendering with {@link WebGLRenderer}. The
|
|
524
525
|
* recommended approach when customizing materials is to use `WebGPURenderer` with the new
|
|
525
|
-
* Node Material system and [TSL]
|
|
526
|
+
* Node Material system and [TSL](https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language).
|
|
526
527
|
*
|
|
527
528
|
* @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.
|
|
528
529
|
* @param {WebGLRenderer} renderer - A reference to the renderer.
|
|
@@ -561,7 +562,7 @@ class Material extends EventDispatcher {
|
|
|
561
562
|
|
|
562
563
|
if ( newValue === undefined ) {
|
|
563
564
|
|
|
564
|
-
|
|
565
|
+
warn( `Material: parameter '${ key }' has value of undefined.` );
|
|
565
566
|
continue;
|
|
566
567
|
|
|
567
568
|
}
|
|
@@ -570,7 +571,7 @@ class Material extends EventDispatcher {
|
|
|
570
571
|
|
|
571
572
|
if ( currentValue === undefined ) {
|
|
572
573
|
|
|
573
|
-
|
|
574
|
+
warn( `Material: '${ key }' is not a property of THREE.${ this.type }.` );
|
|
574
575
|
continue;
|
|
575
576
|
|
|
576
577
|
}
|
|
@@ -664,6 +665,18 @@ class Material extends EventDispatcher {
|
|
|
664
665
|
|
|
665
666
|
}
|
|
666
667
|
|
|
668
|
+
if ( this.sheenColorMap && this.sheenColorMap.isTexture ) {
|
|
669
|
+
|
|
670
|
+
data.sheenColorMap = this.sheenColorMap.toJSON( meta ).uuid;
|
|
671
|
+
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if ( this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture ) {
|
|
675
|
+
|
|
676
|
+
data.sheenRoughnessMap = this.sheenRoughnessMap.toJSON( meta ).uuid;
|
|
677
|
+
|
|
678
|
+
}
|
|
679
|
+
|
|
667
680
|
if ( this.dispersion !== undefined ) data.dispersion = this.dispersion;
|
|
668
681
|
|
|
669
682
|
if ( this.iridescence !== undefined ) data.iridescence = this.iridescence;
|
|
@@ -819,6 +832,7 @@ class Material extends EventDispatcher {
|
|
|
819
832
|
if ( this.alphaToCoverage === true ) data.alphaToCoverage = true;
|
|
820
833
|
if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;
|
|
821
834
|
if ( this.forceSinglePass === true ) data.forceSinglePass = true;
|
|
835
|
+
if ( this.allowOverride === false ) data.allowOverride = false;
|
|
822
836
|
|
|
823
837
|
if ( this.wireframe === true ) data.wireframe = true;
|
|
824
838
|
if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;
|
|
@@ -954,6 +968,7 @@ class Material extends EventDispatcher {
|
|
|
954
968
|
this.alphaToCoverage = source.alphaToCoverage;
|
|
955
969
|
this.premultipliedAlpha = source.premultipliedAlpha;
|
|
956
970
|
this.forceSinglePass = source.forceSinglePass;
|
|
971
|
+
this.allowOverride = source.allowOverride;
|
|
957
972
|
|
|
958
973
|
this.visible = source.visible;
|
|
959
974
|
|
|
@@ -7,7 +7,7 @@ import { Material } from './Material.js';
|
|
|
7
7
|
* Can also be used to customize the shadow casting of an object by assigning
|
|
8
8
|
* an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.
|
|
9
9
|
* The following examples demonstrates this approach in order to ensure
|
|
10
|
-
* transparent parts of objects do
|
|
10
|
+
* transparent parts of objects do not cast shadows.
|
|
11
11
|
*
|
|
12
12
|
* @augments Material
|
|
13
13
|
*/
|
|
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* A material for non-shiny surfaces, without specular highlights.
|
|
9
9
|
*
|
|
10
|
-
* The material uses a non-physically based [Lambertian]
|
|
10
|
+
* The material uses a non-physically based [Lambertian](https://en.wikipedia.org/wiki/Lambertian_reflectance)
|
|
11
11
|
* model for calculating reflectance. This can simulate some surfaces (such
|
|
12
12
|
* as untreated wood or stone) well, but cannot simulate shiny surfaces with
|
|
13
13
|
* specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment
|
|
@@ -19,6 +19,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
19
19
|
* {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.
|
|
20
20
|
*
|
|
21
21
|
* @augments Material
|
|
22
|
+
* @demo scenes/material-browser.html#MeshLambertMaterial
|
|
22
23
|
*/
|
|
23
24
|
class MeshLambertMaterial extends Material {
|
|
24
25
|
|
|
@@ -266,6 +267,14 @@ class MeshLambertMaterial extends Material {
|
|
|
266
267
|
*/
|
|
267
268
|
this.reflectivity = 1;
|
|
268
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
|
+
|
|
269
278
|
/**
|
|
270
279
|
* The index of refraction (IOR) of air (approximately 1) divided by the
|
|
271
280
|
* index of refraction of the material. It is used with environment mapping
|
|
@@ -372,6 +381,7 @@ class MeshLambertMaterial extends Material {
|
|
|
372
381
|
this.envMapRotation.copy( source.envMapRotation );
|
|
373
382
|
this.combine = source.combine;
|
|
374
383
|
this.reflectivity = source.reflectivity;
|
|
384
|
+
this.envMapIntensity = source.envMapIntensity;
|
|
375
385
|
this.refractionRatio = source.refractionRatio;
|
|
376
386
|
|
|
377
387
|
this.wireframe = source.wireframe;
|
|
@@ -13,6 +13,7 @@ import { Color } from '../math/Color.js';
|
|
|
13
13
|
* shadows.
|
|
14
14
|
*
|
|
15
15
|
* @augments Material
|
|
16
|
+
* @demo scenes/material-browser.html#MeshMatcapMaterial
|
|
16
17
|
*/
|
|
17
18
|
class MeshMatcapMaterial extends Material {
|
|
18
19
|
|
|
@@ -164,6 +165,24 @@ class MeshMatcapMaterial extends Material {
|
|
|
164
165
|
*/
|
|
165
166
|
this.alphaMap = null;
|
|
166
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Renders the geometry as a wireframe.
|
|
170
|
+
*
|
|
171
|
+
* @type {boolean}
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
this.wireframe = false;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Controls the thickness of the wireframe.
|
|
178
|
+
*
|
|
179
|
+
* Can only be used with {@link SVGRenderer}.
|
|
180
|
+
*
|
|
181
|
+
* @type {number}
|
|
182
|
+
* @default 1
|
|
183
|
+
*/
|
|
184
|
+
this.wireframeLinewidth = 1;
|
|
185
|
+
|
|
167
186
|
/**
|
|
168
187
|
* Whether the material is rendered with flat shading or not.
|
|
169
188
|
*
|
|
@@ -210,6 +229,9 @@ class MeshMatcapMaterial extends Material {
|
|
|
210
229
|
|
|
211
230
|
this.alphaMap = source.alphaMap;
|
|
212
231
|
|
|
232
|
+
this.wireframe = source.wireframe;
|
|
233
|
+
this.wireframeLinewidth = source.wireframeLinewidth;
|
|
234
|
+
|
|
213
235
|
this.flatShading = source.flatShading;
|
|
214
236
|
|
|
215
237
|
this.fog = source.fog;
|
|
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* A material for shiny surfaces with specular highlights.
|
|
9
9
|
*
|
|
10
|
-
* The material uses a non-physically based [Blinn-Phong]
|
|
10
|
+
* The material uses a non-physically based [Blinn-Phong](https://en.wikipedia.org/wiki/Blinn-Phong_shading_model)
|
|
11
11
|
* model for calculating reflectance. Unlike the Lambertian model used in the
|
|
12
12
|
* {@link MeshLambertMaterial} this can simulate shiny surfaces with specular
|
|
13
13
|
* highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.
|
|
@@ -17,6 +17,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
17
17
|
* some graphical accuracy.
|
|
18
18
|
*
|
|
19
19
|
* @augments Material
|
|
20
|
+
* @demo scenes/material-browser.html#MeshPhongMaterial
|
|
20
21
|
*/
|
|
21
22
|
class MeshPhongMaterial extends Material {
|
|
22
23
|
|
|
@@ -283,6 +284,14 @@ class MeshPhongMaterial extends Material {
|
|
|
283
284
|
*/
|
|
284
285
|
this.reflectivity = 1;
|
|
285
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
|
+
|
|
286
295
|
/**
|
|
287
296
|
* The index of refraction (IOR) of air (approximately 1) divided by the
|
|
288
297
|
* index of refraction of the material. It is used with environment mapping
|
|
@@ -391,6 +400,7 @@ class MeshPhongMaterial extends Material {
|
|
|
391
400
|
this.envMapRotation.copy( source.envMapRotation );
|
|
392
401
|
this.combine = source.combine;
|
|
393
402
|
this.reflectivity = source.reflectivity;
|
|
403
|
+
this.envMapIntensity = source.envMapIntensity;
|
|
394
404
|
this.refractionRatio = source.refractionRatio;
|
|
395
405
|
|
|
396
406
|
this.wireframe = source.wireframe;
|
|
@@ -27,6 +27,7 @@ import { clamp } from '../math/MathUtils.js';
|
|
|
27
27
|
* best results, always specify an environment map when using this material.
|
|
28
28
|
*
|
|
29
29
|
* @augments MeshStandardMaterial
|
|
30
|
+
* @demo scenes/material-browser.html#MeshPhysicalMaterial
|
|
30
31
|
*/
|
|
31
32
|
class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
32
33
|
|
|
@@ -323,7 +324,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
323
324
|
}
|
|
324
325
|
|
|
325
326
|
/**
|
|
326
|
-
* The anisotropy strength.
|
|
327
|
+
* The anisotropy strength, from `0.0` to `1.0`.
|
|
327
328
|
*
|
|
328
329
|
* @type {number}
|
|
329
330
|
* @default 0
|
|
@@ -8,9 +8,9 @@ import { Euler } from '../math/Euler.js';
|
|
|
8
8
|
* A standard physically based material, using Metallic-Roughness workflow.
|
|
9
9
|
*
|
|
10
10
|
* Physically based rendering (PBR) has recently become the standard in many
|
|
11
|
-
* 3D applications, such as [Unity]
|
|
12
|
-
* [Unreal]
|
|
13
|
-
* [3D Studio Max]
|
|
11
|
+
* 3D applications, such as [Unity](https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/),
|
|
12
|
+
* [Unreal](https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/) and
|
|
13
|
+
* [3D Studio Max](http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017).
|
|
14
14
|
*
|
|
15
15
|
* This approach differs from older approaches in that instead of using
|
|
16
16
|
* approximations for the way in which light interacts with a surface, a
|
|
@@ -26,16 +26,17 @@ import { Euler } from '../math/Euler.js';
|
|
|
26
26
|
* Note that for best results you should always specify an environment map when using this material.
|
|
27
27
|
*
|
|
28
28
|
* For a non-technical introduction to the concept of PBR and how to set up a
|
|
29
|
-
* PBR material, check out these articles by the people at [marmoset]
|
|
29
|
+
* PBR material, check out these articles by the people at [marmoset](https://www.marmoset.co):
|
|
30
30
|
*
|
|
31
|
-
* - [Basic Theory of Physically Based Rendering]
|
|
32
|
-
* - [Physically Based Rendering and You Can Too]
|
|
31
|
+
* - [Basic Theory of Physically Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)
|
|
32
|
+
* - [Physically Based Rendering and You Can Too](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)
|
|
33
33
|
*
|
|
34
34
|
* Technical details of the approach used in three.js (and most other PBR systems) can be found is this
|
|
35
|
-
* [paper from Disney]
|
|
35
|
+
* [paper from Disney](https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf)
|
|
36
36
|
* (pdf), by Brent Burley.
|
|
37
37
|
*
|
|
38
38
|
* @augments Material
|
|
39
|
+
* @demo scenes/material-browser.html#MeshStandardMaterial
|
|
39
40
|
*/
|
|
40
41
|
class MeshStandardMaterial extends Material {
|
|
41
42
|
|
|
@@ -7,6 +7,7 @@ import { Color } from '../math/Color.js';
|
|
|
7
7
|
* A material implementing toon shading.
|
|
8
8
|
*
|
|
9
9
|
* @augments Material
|
|
10
|
+
* @demo scenes/material-browser.html#MeshToonMaterial
|
|
10
11
|
*/
|
|
11
12
|
class MeshToonMaterial extends Material {
|
|
12
13
|
|
|
@@ -56,7 +57,7 @@ class MeshToonMaterial extends Material {
|
|
|
56
57
|
|
|
57
58
|
/**
|
|
58
59
|
* Gradient map for toon shading. It's required to set
|
|
59
|
-
* {@link Texture#minFilter} and {@link Texture#magFilter} to {@
|
|
60
|
+
* {@link Texture#minFilter} and {@link Texture#magFilter} to {@link NearestFilter}
|
|
60
61
|
* when using this type of texture.
|
|
61
62
|
*
|
|
62
63
|
* @type {?Texture}
|
|
@@ -88,7 +88,7 @@ class PointsMaterial extends Material {
|
|
|
88
88
|
/**
|
|
89
89
|
* Defines the size of the points in pixels.
|
|
90
90
|
*
|
|
91
|
-
* Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]
|
|
91
|
+
* Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete).
|
|
92
92
|
*
|
|
93
93
|
* @type {number}
|
|
94
94
|
* @default 1
|
|
@@ -17,7 +17,7 @@ import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.
|
|
|
17
17
|
* - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
|
|
18
18
|
* in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
|
|
19
19
|
* to be placed right above the loop. The loop formatting has to correspond to a defined standard.
|
|
20
|
-
* - The loop has to be [normalized]
|
|
20
|
+
* - The loop has to be [normalized](https://en.wikipedia.org/wiki/Normalized_loop).
|
|
21
21
|
* - The loop variable has to be *i*.
|
|
22
22
|
* - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
|
|
23
23
|
* value of *i* for the given iteration and can be used in preprocessor
|
|
@@ -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
|
*/
|
|
@@ -223,7 +236,7 @@ class ShaderMaterial extends Material {
|
|
|
223
236
|
};
|
|
224
237
|
|
|
225
238
|
/**
|
|
226
|
-
* If set, this calls [gl.bindAttribLocation]
|
|
239
|
+
* If set, this calls [gl.bindAttribLocation](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation)
|
|
227
240
|
* to bind a generic vertex index to an attribute variable.
|
|
228
241
|
*
|
|
229
242
|
* @type {string|undefined}
|
|
@@ -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
|
}
|