@plastic-software/three 0.174.0 → 0.175.1
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/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -9,17 +9,34 @@ import {
|
|
|
9
9
|
} from 'three';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* A marching cubes implementation.
|
|
13
|
+
*
|
|
14
|
+
* Port of: {@link http://webglsamples.org/blob/blob.html}
|
|
13
15
|
*/
|
|
14
|
-
|
|
15
16
|
class MarchingCubes extends Mesh {
|
|
16
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Constructs a new marching cubes instance.
|
|
20
|
+
*
|
|
21
|
+
* @param {number} resolution - The effect's resolution.
|
|
22
|
+
* @param {Material} material - The cube's material.
|
|
23
|
+
* @param {boolean} [enableUvs=false] - Whether texture coordinates should be animated or not.
|
|
24
|
+
* @param {boolean} [enableColors=false] - Whether colors should be animated or not.
|
|
25
|
+
* @param {number} [maxPolyCount=10000] - The maximum size of the geometry buffers.
|
|
26
|
+
*/
|
|
17
27
|
constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
|
|
18
28
|
|
|
19
29
|
const geometry = new BufferGeometry();
|
|
20
30
|
|
|
21
31
|
super( geometry, material );
|
|
22
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
23
40
|
this.isMarchingCubes = true;
|
|
24
41
|
|
|
25
42
|
const scope = this;
|
|
@@ -30,7 +47,20 @@ class MarchingCubes extends Mesh {
|
|
|
30
47
|
const nlist = new Float32Array( 12 * 3 );
|
|
31
48
|
const clist = new Float32Array( 12 * 3 );
|
|
32
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Whether texture coordinates should be animated or not.
|
|
52
|
+
*
|
|
53
|
+
* @type {boolean}
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
33
56
|
this.enableUvs = enableUvs;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Whether colors should be animated or not.
|
|
60
|
+
*
|
|
61
|
+
* @type {boolean}
|
|
62
|
+
* @default false
|
|
63
|
+
*/
|
|
34
64
|
this.enableColors = enableColors;
|
|
35
65
|
|
|
36
66
|
// functions have to be object properties
|
|
@@ -495,9 +525,17 @@ class MarchingCubes extends Mesh {
|
|
|
495
525
|
// Metaballs
|
|
496
526
|
/////////////////////////////////////
|
|
497
527
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
528
|
+
/**
|
|
529
|
+
* Adds a reciprocal ball (nice and blobby) that, to be fast, fades to zero after
|
|
530
|
+
* a fixed distance, determined by strength and subtract.
|
|
531
|
+
*
|
|
532
|
+
* @param {number} ballx - The x-coordinate of the ball.
|
|
533
|
+
* @param {number} bally - The y-coordinate of the ball.
|
|
534
|
+
* @param {number} ballz - The z-coordinate of the ball.
|
|
535
|
+
* @param {number} strength - The strength factor.
|
|
536
|
+
* @param {number} subtract - The subtract factor.
|
|
537
|
+
* @param {Color} colors - The color.
|
|
538
|
+
*/
|
|
501
539
|
this.addBall = function ( ballx, bally, ballz, strength, subtract, colors ) {
|
|
502
540
|
|
|
503
541
|
const sign = Math.sign( strength );
|
|
@@ -598,6 +636,12 @@ class MarchingCubes extends Mesh {
|
|
|
598
636
|
|
|
599
637
|
};
|
|
600
638
|
|
|
639
|
+
/**
|
|
640
|
+
* Adds a plane along the x-axis.
|
|
641
|
+
*
|
|
642
|
+
* @param {number} strength - The strength factor.
|
|
643
|
+
* @param {number} subtract - The subtract factor.
|
|
644
|
+
*/
|
|
601
645
|
this.addPlaneX = function ( strength, subtract ) {
|
|
602
646
|
|
|
603
647
|
// cache attribute lookups
|
|
@@ -643,6 +687,12 @@ class MarchingCubes extends Mesh {
|
|
|
643
687
|
|
|
644
688
|
};
|
|
645
689
|
|
|
690
|
+
/**
|
|
691
|
+
* Adds a plane along the y-axis.
|
|
692
|
+
*
|
|
693
|
+
* @param {number} strength - The strength factor.
|
|
694
|
+
* @param {number} subtract - The subtract factor.
|
|
695
|
+
*/
|
|
646
696
|
this.addPlaneY = function ( strength, subtract ) {
|
|
647
697
|
|
|
648
698
|
// cache attribute lookups
|
|
@@ -687,6 +737,12 @@ class MarchingCubes extends Mesh {
|
|
|
687
737
|
|
|
688
738
|
};
|
|
689
739
|
|
|
740
|
+
/**
|
|
741
|
+
* Adds a plane along the z-axis.
|
|
742
|
+
*
|
|
743
|
+
* @param {number} strength - The strength factor.
|
|
744
|
+
* @param {number} subtract - The subtract factor.
|
|
745
|
+
*/
|
|
690
746
|
this.addPlaneZ = function ( strength, subtract ) {
|
|
691
747
|
|
|
692
748
|
// cache attribute lookups
|
|
@@ -735,6 +791,14 @@ class MarchingCubes extends Mesh {
|
|
|
735
791
|
// Updates
|
|
736
792
|
/////////////////////////////////////
|
|
737
793
|
|
|
794
|
+
/**
|
|
795
|
+
* Sets the cell value for the given coordinates.
|
|
796
|
+
*
|
|
797
|
+
* @param {number} x - The x value.
|
|
798
|
+
* @param {number} y - The y value.
|
|
799
|
+
* @param {number} z - The z value.
|
|
800
|
+
* @param {number} value - The value to set.
|
|
801
|
+
*/
|
|
738
802
|
this.setCell = function ( x, y, z, value ) {
|
|
739
803
|
|
|
740
804
|
const index = this.size2 * z + this.size * y + x;
|
|
@@ -742,6 +806,14 @@ class MarchingCubes extends Mesh {
|
|
|
742
806
|
|
|
743
807
|
};
|
|
744
808
|
|
|
809
|
+
/**
|
|
810
|
+
* Returns the cell value for the given coordinates.
|
|
811
|
+
*
|
|
812
|
+
* @param {number} x - The x value.
|
|
813
|
+
* @param {number} y - The y value.
|
|
814
|
+
* @param {number} z - The z value.
|
|
815
|
+
* @return {number} The value.
|
|
816
|
+
*/
|
|
745
817
|
this.getCell = function ( x, y, z ) {
|
|
746
818
|
|
|
747
819
|
const index = this.size2 * z + this.size * y + x;
|
|
@@ -749,6 +821,11 @@ class MarchingCubes extends Mesh {
|
|
|
749
821
|
|
|
750
822
|
};
|
|
751
823
|
|
|
824
|
+
/**
|
|
825
|
+
* Applies a blur with the given intensity.
|
|
826
|
+
*
|
|
827
|
+
* @param {number} [intensity=1] - The intensity of the blur.
|
|
828
|
+
*/
|
|
752
829
|
this.blur = function ( intensity = 1 ) {
|
|
753
830
|
|
|
754
831
|
const field = this.field;
|
|
@@ -802,6 +879,9 @@ class MarchingCubes extends Mesh {
|
|
|
802
879
|
|
|
803
880
|
};
|
|
804
881
|
|
|
882
|
+
/**
|
|
883
|
+
* Resets the effect.
|
|
884
|
+
*/
|
|
805
885
|
this.reset = function () {
|
|
806
886
|
|
|
807
887
|
// wipe the normal cache
|
|
@@ -818,6 +898,9 @@ class MarchingCubes extends Mesh {
|
|
|
818
898
|
|
|
819
899
|
};
|
|
820
900
|
|
|
901
|
+
/**
|
|
902
|
+
* Updates the effect.
|
|
903
|
+
*/
|
|
821
904
|
this.update = function () {
|
|
822
905
|
|
|
823
906
|
this.count = 0;
|
|
@@ -12,16 +12,65 @@ import {
|
|
|
12
12
|
HalfFloatType
|
|
13
13
|
} from 'three';
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Can be used to create a flat, reflective surface like a mirror.
|
|
17
|
+
*
|
|
18
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
19
|
+
* When using {@link WebGPURenderer}, use {@link ReflectorNode}.
|
|
20
|
+
*
|
|
21
|
+
* ```js
|
|
22
|
+
* const geometry = new THREE.PlaneGeometry( 100, 100 );
|
|
23
|
+
*
|
|
24
|
+
* const reflector = new Reflector( geometry, {
|
|
25
|
+
* clipBias: 0.003,
|
|
26
|
+
* textureWidth: window.innerWidth * window.devicePixelRatio,
|
|
27
|
+
* textureHeight: window.innerHeight * window.devicePixelRatio,
|
|
28
|
+
* color: 0xc1cbcb
|
|
29
|
+
* } );
|
|
30
|
+
*
|
|
31
|
+
* scene.add( reflector );
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @augments Mesh
|
|
35
|
+
*/
|
|
15
36
|
class Reflector extends Mesh {
|
|
16
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Constructs a new reflector.
|
|
40
|
+
*
|
|
41
|
+
* @param {BufferGeometry} geometry - The reflector's geometry.
|
|
42
|
+
* @param {Reflector~Options} [options] - The configuration options.
|
|
43
|
+
*/
|
|
17
44
|
constructor( geometry, options = {} ) {
|
|
18
45
|
|
|
19
46
|
super( geometry );
|
|
20
47
|
|
|
48
|
+
/**
|
|
49
|
+
* This flag can be used for type testing.
|
|
50
|
+
*
|
|
51
|
+
* @type {boolean}
|
|
52
|
+
* @readonly
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
21
55
|
this.isReflector = true;
|
|
22
56
|
|
|
23
57
|
this.type = 'Reflector';
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Whether to force an update, no matter if the reflector
|
|
61
|
+
* is in view or not.
|
|
62
|
+
*
|
|
63
|
+
* @type {boolean}
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
24
66
|
this.forceUpdate = false;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The reflector's virtual camera. This is used to render
|
|
70
|
+
* the scene from the mirror's point of view.
|
|
71
|
+
*
|
|
72
|
+
* @type {PerspectiveCamera}
|
|
73
|
+
*/
|
|
25
74
|
this.camera = new PerspectiveCamera();
|
|
26
75
|
|
|
27
76
|
const scope = this;
|
|
@@ -178,12 +227,21 @@ class Reflector extends Mesh {
|
|
|
178
227
|
|
|
179
228
|
};
|
|
180
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Returns the reflector's internal render target.
|
|
232
|
+
*
|
|
233
|
+
* @return {WebGLRenderTarget} The internal render target
|
|
234
|
+
*/
|
|
181
235
|
this.getRenderTarget = function () {
|
|
182
236
|
|
|
183
237
|
return renderTarget;
|
|
184
238
|
|
|
185
239
|
};
|
|
186
240
|
|
|
241
|
+
/**
|
|
242
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
243
|
+
* method whenever this instance is no longer used in your app.
|
|
244
|
+
*/
|
|
187
245
|
this.dispose = function () {
|
|
188
246
|
|
|
189
247
|
renderTarget.dispose();
|
|
@@ -264,4 +322,16 @@ Reflector.ReflectorShader = {
|
|
|
264
322
|
}`
|
|
265
323
|
};
|
|
266
324
|
|
|
325
|
+
/**
|
|
326
|
+
* Constructor options of `Reflector`.
|
|
327
|
+
*
|
|
328
|
+
* @typedef {Object} Reflector~Options
|
|
329
|
+
* @property {number|Color|string} [color=0x7F7F7F] - The reflector's color.
|
|
330
|
+
* @property {number} [textureWidth=512] - The texture width. A higher value results in more clear reflections but is also more expensive.
|
|
331
|
+
* @property {number} [textureHeight=512] - The texture height. A higher value results in more clear reflections but is also more expensive.
|
|
332
|
+
* @property {number} [clipBias=0] - The clip bias.
|
|
333
|
+
* @property {Object} [shader] - Can be used to pass in a custom shader that defines how the reflective view is projected onto the reflector's geometry.
|
|
334
|
+
* @property {number} [multisample=4] - How many samples to use for MSAA. `0` disables MSAA.
|
|
335
|
+
**/
|
|
336
|
+
|
|
267
337
|
export { Reflector };
|
|
@@ -15,8 +15,19 @@ import {
|
|
|
15
15
|
HalfFloatType
|
|
16
16
|
} from 'three';
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* A special version of {@link Reflector} for usage with {@link SSRPass}.
|
|
20
|
+
*
|
|
21
|
+
* @augments Mesh
|
|
22
|
+
*/
|
|
18
23
|
class ReflectorForSSRPass extends Mesh {
|
|
19
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Constructs a new reflector.
|
|
27
|
+
*
|
|
28
|
+
* @param {BufferGeometry} geometry - The reflector's geometry.
|
|
29
|
+
* @param {ReflectorForSSRPass~Options} [options] - The configuration options.
|
|
30
|
+
*/
|
|
20
31
|
constructor( geometry, options = {} ) {
|
|
21
32
|
|
|
22
33
|
super( geometry );
|
|
@@ -240,12 +251,28 @@ class ReflectorForSSRPass extends Mesh {
|
|
|
240
251
|
|
|
241
252
|
};
|
|
242
253
|
|
|
254
|
+
/**
|
|
255
|
+
* Returns the reflector's internal render target.
|
|
256
|
+
*
|
|
257
|
+
* @return {WebGLRenderTarget} The internal render target
|
|
258
|
+
*/
|
|
243
259
|
this.getRenderTarget = function () {
|
|
244
260
|
|
|
245
261
|
return renderTarget;
|
|
246
262
|
|
|
247
263
|
};
|
|
248
264
|
|
|
265
|
+
/**
|
|
266
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
267
|
+
* method whenever this instance is no longer used in your app.
|
|
268
|
+
*/
|
|
269
|
+
this.dispose = function () {
|
|
270
|
+
|
|
271
|
+
renderTarget.dispose();
|
|
272
|
+
scope.material.dispose();
|
|
273
|
+
|
|
274
|
+
};
|
|
275
|
+
|
|
249
276
|
}
|
|
250
277
|
|
|
251
278
|
}
|
|
@@ -349,4 +376,16 @@ ReflectorForSSRPass.ReflectorShader = {
|
|
|
349
376
|
`,
|
|
350
377
|
};
|
|
351
378
|
|
|
379
|
+
/**
|
|
380
|
+
* Constructor options of `ReflectorForSSRPass`.
|
|
381
|
+
*
|
|
382
|
+
* @typedef {Object} ReflectorForSSRPass~Options
|
|
383
|
+
* @property {number|Color|string} [color=0x7F7F7F] - The reflector's color.
|
|
384
|
+
* @property {number} [textureWidth=512] - The texture width. A higher value results in more clear reflections but is also more expensive.
|
|
385
|
+
* @property {number} [textureHeight=512] - The texture height. A higher value results in more clear reflections but is also more expensive.
|
|
386
|
+
* @property {number} [clipBias=0] - The clip bias.
|
|
387
|
+
* @property {Object} [shader] - Can be used to pass in a custom shader that defines how the reflective view is projected onto the reflector's geometry.
|
|
388
|
+
* @property {boolean} [useDepthTexture=true] - Whether to store depth values in a texture or not.
|
|
389
|
+
**/
|
|
390
|
+
|
|
352
391
|
export { ReflectorForSSRPass };
|
|
@@ -13,15 +13,55 @@ import {
|
|
|
13
13
|
HalfFloatType
|
|
14
14
|
} from 'three';
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Can be used to create a flat, refractive surface like for special
|
|
18
|
+
* windows or water effects.
|
|
19
|
+
*
|
|
20
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
21
|
+
* When using {@link WebGPURenderer}, use {@link viewportSharedTexture}.
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* const geometry = new THREE.PlaneGeometry( 100, 100 );
|
|
25
|
+
*
|
|
26
|
+
* const refractor = new Refractor( refractorGeometry, {
|
|
27
|
+
* color: 0xcbcbcb,
|
|
28
|
+
* textureWidth: 1024,
|
|
29
|
+
* textureHeight: 1024
|
|
30
|
+
* } );
|
|
31
|
+
*
|
|
32
|
+
* scene.add( refractor );
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @augments Mesh
|
|
36
|
+
*/
|
|
16
37
|
class Refractor extends Mesh {
|
|
17
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Constructs a new refractor.
|
|
41
|
+
*
|
|
42
|
+
* @param {BufferGeometry} geometry - The refractor's geometry.
|
|
43
|
+
* @param {Refractor~Options} [options] - The configuration options.
|
|
44
|
+
*/
|
|
18
45
|
constructor( geometry, options = {} ) {
|
|
19
46
|
|
|
20
47
|
super( geometry );
|
|
21
48
|
|
|
49
|
+
/**
|
|
50
|
+
* This flag can be used for type testing.
|
|
51
|
+
*
|
|
52
|
+
* @type {boolean}
|
|
53
|
+
* @readonly
|
|
54
|
+
* @default true
|
|
55
|
+
*/
|
|
22
56
|
this.isRefractor = true;
|
|
23
57
|
|
|
24
58
|
this.type = 'Refractor';
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The reflector's virtual camera.
|
|
62
|
+
*
|
|
63
|
+
* @type {PerspectiveCamera}
|
|
64
|
+
*/
|
|
25
65
|
this.camera = new PerspectiveCamera();
|
|
26
66
|
|
|
27
67
|
const scope = this;
|
|
@@ -243,12 +283,21 @@ class Refractor extends Mesh {
|
|
|
243
283
|
|
|
244
284
|
};
|
|
245
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Returns the reflector's internal render target.
|
|
288
|
+
*
|
|
289
|
+
* @return {WebGLRenderTarget} The internal render target
|
|
290
|
+
*/
|
|
246
291
|
this.getRenderTarget = function () {
|
|
247
292
|
|
|
248
293
|
return renderTarget;
|
|
249
294
|
|
|
250
295
|
};
|
|
251
296
|
|
|
297
|
+
/**
|
|
298
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
299
|
+
* method whenever this instance is no longer used in your app.
|
|
300
|
+
*/
|
|
252
301
|
this.dispose = function () {
|
|
253
302
|
|
|
254
303
|
renderTarget.dispose();
|
|
@@ -324,4 +373,16 @@ Refractor.RefractorShader = {
|
|
|
324
373
|
|
|
325
374
|
};
|
|
326
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Constructor options of `Refractor`.
|
|
378
|
+
*
|
|
379
|
+
* @typedef {Object} Refractor~Options
|
|
380
|
+
* @property {number|Color|string} [color=0x7F7F7F] - The refractor's color.
|
|
381
|
+
* @property {number} [textureWidth=512] - The texture width. A higher value results in more clear refractions but is also more expensive.
|
|
382
|
+
* @property {number} [textureHeight=512] - The texture height. A higher value results in more clear refractions but is also more expensive.
|
|
383
|
+
* @property {number} [clipBias=0] - The clip bias.
|
|
384
|
+
* @property {Object} [shader] - Can be used to pass in a custom shader that defines how the refractive view is projected onto the reflector's geometry.
|
|
385
|
+
* @property {number} [multisample=4] - How many samples to use for MSAA. `0` disables MSAA.
|
|
386
|
+
**/
|
|
387
|
+
|
|
327
388
|
export { Refractor };
|
|
@@ -6,14 +6,31 @@ import {
|
|
|
6
6
|
IncrementStencilOp
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
|
-
/**
|
|
10
|
-
* A shadow Mesh that follows a shadow-casting Mesh in the scene, but is confined to a single plane.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
9
|
const _shadowMatrix = new Matrix4();
|
|
14
10
|
|
|
11
|
+
/**
|
|
12
|
+
* A Shadow Mesh that follows a shadow-casting mesh in the scene,
|
|
13
|
+
* but is confined to a single plane. This technique can be used as
|
|
14
|
+
* a very performant alternative to classic shadow mapping. However,
|
|
15
|
+
* it has serious limitations like:
|
|
16
|
+
*
|
|
17
|
+
* - Shadows can only be casted on flat planes.
|
|
18
|
+
* - No soft shadows support.
|
|
19
|
+
*
|
|
20
|
+
* ```js
|
|
21
|
+
* const cubeShadow = new ShadowMesh( cube );
|
|
22
|
+
* scene.add( cubeShadow );
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @augments Mesh
|
|
26
|
+
*/
|
|
15
27
|
class ShadowMesh extends Mesh {
|
|
16
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Constructs a new shadow mesh.
|
|
31
|
+
*
|
|
32
|
+
* @param {Mesh} mesh - The shadow-casting reference mesh.
|
|
33
|
+
*/
|
|
17
34
|
constructor( mesh ) {
|
|
18
35
|
|
|
19
36
|
const shadowMaterial = new MeshBasicMaterial( {
|
|
@@ -31,15 +48,47 @@ class ShadowMesh extends Mesh {
|
|
|
31
48
|
|
|
32
49
|
super( mesh.geometry, shadowMaterial );
|
|
33
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
34
58
|
this.isShadowMesh = true;
|
|
35
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Represent the world matrix of the reference mesh.
|
|
62
|
+
*
|
|
63
|
+
* @type {Matrix4}
|
|
64
|
+
*/
|
|
36
65
|
this.meshMatrix = mesh.matrixWorld;
|
|
37
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Overwritten to disable view-frustum culling by default.
|
|
69
|
+
*
|
|
70
|
+
* @type {boolean}
|
|
71
|
+
* @default false
|
|
72
|
+
*/
|
|
38
73
|
this.frustumCulled = false;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Overwritten to disable automatic matrix update. The local
|
|
77
|
+
* matrix is computed manually in {@link ShadowMesh#update}.
|
|
78
|
+
*
|
|
79
|
+
* @type {boolean}
|
|
80
|
+
* @default false
|
|
81
|
+
*/
|
|
39
82
|
this.matrixAutoUpdate = false;
|
|
40
83
|
|
|
41
84
|
}
|
|
42
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Updates the shadow mesh so it follows its shadow-casting reference mesh.
|
|
88
|
+
*
|
|
89
|
+
* @param {Plane} plane - The plane onto the shadow mesh is projected.
|
|
90
|
+
* @param {Vector4} lightPosition4D - The light position.
|
|
91
|
+
*/
|
|
43
92
|
update( plane, lightPosition4D ) {
|
|
44
93
|
|
|
45
94
|
// based on https://www.opengl.org/archives/resources/features/StencilTalk/tsld021.htm
|
|
@@ -8,21 +8,31 @@ import {
|
|
|
8
8
|
} from 'three';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* Based on
|
|
12
|
-
* aka The Preetham Model, the de facto standard
|
|
13
|
-
* https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
|
|
11
|
+
* Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
|
|
12
|
+
* aka The Preetham Model, the de facto standard for analytical skydomes.
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
15
|
+
* When using {@link WebGPURenderer}, use {@link SkyMesh}.
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
* http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
|
|
17
|
+
* More references:
|
|
20
18
|
*
|
|
21
|
-
*
|
|
19
|
+
* - {@link http://simonwallner.at/project/atmospheric-scattering/}
|
|
20
|
+
* - {@link http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR}
|
|
21
|
+
*
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* const sky = new Sky();
|
|
25
|
+
* sky.scale.setScalar( 10000 );
|
|
26
|
+
* scene.add( sky );
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @augments Mesh
|
|
22
30
|
*/
|
|
23
|
-
|
|
24
31
|
class Sky extends Mesh {
|
|
25
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new skydome.
|
|
35
|
+
*/
|
|
26
36
|
constructor() {
|
|
27
37
|
|
|
28
38
|
const shader = Sky.SkyShader;
|
|
@@ -38,6 +48,13 @@ class Sky extends Mesh {
|
|
|
38
48
|
|
|
39
49
|
super( new BoxGeometry( 1, 1, 1 ), material );
|
|
40
50
|
|
|
51
|
+
/**
|
|
52
|
+
* This flag can be used for type testing.
|
|
53
|
+
*
|
|
54
|
+
* @type {boolean}
|
|
55
|
+
* @readonly
|
|
56
|
+
* @default true
|
|
57
|
+
*/
|
|
41
58
|
this.isSky = true;
|
|
42
59
|
|
|
43
60
|
}
|
|
@@ -9,34 +9,85 @@ import {
|
|
|
9
9
|
import { Fn, float, vec3, acos, add, mul, clamp, cos, dot, exp, max, mix, modelViewProjection, normalize, positionWorld, pow, smoothstep, sub, varying, varyingProperty, vec4, uniform, cameraPosition } from 'three/tsl';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Based on
|
|
13
|
-
* aka The Preetham Model, the de facto standard
|
|
14
|
-
* https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
|
|
12
|
+
* Represents a skydome for scene backgrounds. Based on [A Practical Analytic Model for Daylight]{@link https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight}
|
|
13
|
+
* aka The Preetham Model, the de facto standard for analytical skydomes.
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
15
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
16
|
+
* When using {@link WebGPURenderer}, use {@link SkyMesh}.
|
|
18
17
|
*
|
|
19
|
-
*
|
|
20
|
-
* http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
|
|
18
|
+
* More references:
|
|
21
19
|
*
|
|
22
|
-
*
|
|
20
|
+
* - {@link http://simonwallner.at/project/atmospheric-scattering/}
|
|
21
|
+
* - {@link http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR}
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* const sky = new SkyMesh();
|
|
25
|
+
* sky.scale.setScalar( 10000 );
|
|
26
|
+
* scene.add( sky );
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @augments Mesh
|
|
23
30
|
*/
|
|
24
|
-
|
|
25
31
|
class SkyMesh extends Mesh {
|
|
26
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Constructs a new skydome.
|
|
35
|
+
*/
|
|
27
36
|
constructor() {
|
|
28
37
|
|
|
29
38
|
const material = new NodeMaterial();
|
|
30
39
|
|
|
31
40
|
super( new BoxGeometry( 1, 1, 1 ), material );
|
|
32
41
|
|
|
42
|
+
/**
|
|
43
|
+
* The turbidity uniform.
|
|
44
|
+
*
|
|
45
|
+
* @type {UniformNode<float>}
|
|
46
|
+
*/
|
|
33
47
|
this.turbidity = uniform( 2 );
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The rayleigh uniform.
|
|
51
|
+
*
|
|
52
|
+
* @type {UniformNode<float>}
|
|
53
|
+
*/
|
|
34
54
|
this.rayleigh = uniform( 1 );
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The mieCoefficient uniform.
|
|
58
|
+
*
|
|
59
|
+
* @type {UniformNode<float>}
|
|
60
|
+
*/
|
|
35
61
|
this.mieCoefficient = uniform( 0.005 );
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The mieDirectionalG uniform.
|
|
65
|
+
*
|
|
66
|
+
* @type {UniformNode<float>}
|
|
67
|
+
*/
|
|
36
68
|
this.mieDirectionalG = uniform( 0.8 );
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The sun position uniform.
|
|
72
|
+
*
|
|
73
|
+
* @type {UniformNode<vec3>}
|
|
74
|
+
*/
|
|
37
75
|
this.sunPosition = uniform( new Vector3() );
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The up position.
|
|
79
|
+
*
|
|
80
|
+
* @type {UniformNode<vec3>}
|
|
81
|
+
*/
|
|
38
82
|
this.upUniform = uniform( new Vector3( 0, 1, 0 ) );
|
|
39
83
|
|
|
84
|
+
/**
|
|
85
|
+
* This flag can be used for type testing.
|
|
86
|
+
*
|
|
87
|
+
* @type {boolean}
|
|
88
|
+
* @readonly
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
40
91
|
this.isSky = true;
|
|
41
92
|
|
|
42
93
|
const vertexNode = /*@__PURE__*/ Fn( () => {
|