@plastic-software/three 0.174.0 → 0.175.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/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- 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 +1429 -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 +53 -0
- 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/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- 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
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* An outline effect for toon shaders.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* 1. Traditional
|
|
12
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
13
|
+
* When using {@link WebGPURenderer}, use {@link ToonOutlinePassNode}.
|
|
15
14
|
*
|
|
15
|
+
* ```js
|
|
16
16
|
* const effect = new OutlineEffect( renderer );
|
|
17
17
|
*
|
|
18
18
|
* function render() {
|
|
@@ -20,50 +20,16 @@ import {
|
|
|
20
20
|
* effect.render( scene, camera );
|
|
21
21
|
*
|
|
22
22
|
* }
|
|
23
|
-
*
|
|
24
|
-
* 2. VR compatible
|
|
25
|
-
*
|
|
26
|
-
* const effect = new OutlineEffect( renderer );
|
|
27
|
-
* let renderingOutline = false;
|
|
28
|
-
*
|
|
29
|
-
* scene.onAfterRender = function () {
|
|
30
|
-
*
|
|
31
|
-
* if ( renderingOutline ) return;
|
|
32
|
-
*
|
|
33
|
-
* renderingOutline = true;
|
|
34
|
-
*
|
|
35
|
-
* effect.renderOutline( scene, camera );
|
|
36
|
-
*
|
|
37
|
-
* renderingOutline = false;
|
|
38
|
-
*
|
|
39
|
-
* };
|
|
40
|
-
*
|
|
41
|
-
* function render() {
|
|
42
|
-
*
|
|
43
|
-
* renderer.render( scene, camera );
|
|
44
|
-
*
|
|
45
|
-
* }
|
|
46
|
-
*
|
|
47
|
-
* // How to set default outline parameters
|
|
48
|
-
* new OutlineEffect( renderer, {
|
|
49
|
-
* defaultThickness: 0.01,
|
|
50
|
-
* defaultColor: [ 0, 0, 0 ],
|
|
51
|
-
* defaultAlpha: 0.8,
|
|
52
|
-
* defaultKeepAlive: true // keeps outline material in cache even if material is removed from scene
|
|
53
|
-
* } );
|
|
54
|
-
*
|
|
55
|
-
* // How to set outline parameters for each material
|
|
56
|
-
* material.userData.outlineParameters = {
|
|
57
|
-
* thickness: 0.01,
|
|
58
|
-
* color: [ 0, 0, 0 ],
|
|
59
|
-
* alpha: 0.8,
|
|
60
|
-
* visible: true,
|
|
61
|
-
* keepAlive: true
|
|
62
|
-
* };
|
|
23
|
+
* ```
|
|
63
24
|
*/
|
|
64
|
-
|
|
65
25
|
class OutlineEffect {
|
|
66
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Constructs a new outline effect.
|
|
29
|
+
*
|
|
30
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
31
|
+
* @param {OutlineEffect~Options} [parameters] - The configuration parameter.
|
|
32
|
+
*/
|
|
67
33
|
constructor( renderer, parameters = {} ) {
|
|
68
34
|
|
|
69
35
|
this.enabled = true;
|
|
@@ -413,6 +379,13 @@ class OutlineEffect {
|
|
|
413
379
|
|
|
414
380
|
}
|
|
415
381
|
|
|
382
|
+
/**
|
|
383
|
+
* When using this effect, this method should be called instead of the
|
|
384
|
+
* default {@link WebGLRenderer#render}.
|
|
385
|
+
*
|
|
386
|
+
* @param {Object3D} scene - The scene to render.
|
|
387
|
+
* @param {Camera} camera - The camera.
|
|
388
|
+
*/
|
|
416
389
|
this.render = function ( scene, camera ) {
|
|
417
390
|
|
|
418
391
|
if ( this.enabled === false ) {
|
|
@@ -433,6 +406,30 @@ class OutlineEffect {
|
|
|
433
406
|
|
|
434
407
|
};
|
|
435
408
|
|
|
409
|
+
/**
|
|
410
|
+
* This method can be used to render outlines in VR.
|
|
411
|
+
*
|
|
412
|
+
* ```js
|
|
413
|
+
* const effect = new OutlineEffect( renderer );
|
|
414
|
+
* let renderingOutline = false;
|
|
415
|
+
*
|
|
416
|
+
* scene.onAfterRender = function () {
|
|
417
|
+
*
|
|
418
|
+
* if ( renderingOutline ) return;
|
|
419
|
+
*
|
|
420
|
+
* renderingOutline = true;
|
|
421
|
+
* effect.renderOutline( scene, camera );
|
|
422
|
+
* renderingOutline = false;
|
|
423
|
+
* };
|
|
424
|
+
*
|
|
425
|
+
* function render() {
|
|
426
|
+
* renderer.render( scene, camera );
|
|
427
|
+
* }
|
|
428
|
+
* ```
|
|
429
|
+
*
|
|
430
|
+
* @param {Object3D} scene - The scene to render.
|
|
431
|
+
* @param {Camera} camera - The camera.
|
|
432
|
+
*/
|
|
436
433
|
this.renderOutline = function ( scene, camera ) {
|
|
437
434
|
|
|
438
435
|
const currentAutoClear = renderer.autoClear;
|
|
@@ -460,75 +457,15 @@ class OutlineEffect {
|
|
|
460
457
|
|
|
461
458
|
};
|
|
462
459
|
|
|
463
|
-
|
|
464
|
-
*
|
|
465
|
-
*
|
|
466
|
-
* The following property copies and wrapper methods enable
|
|
467
|
-
* OutlineEffect to be called from other *Effect, like
|
|
468
|
-
*
|
|
469
|
-
* effect = new StereoEffect( new OutlineEffect( renderer ) );
|
|
470
|
-
*
|
|
471
|
-
* function render () {
|
|
460
|
+
/**
|
|
461
|
+
* Resizes the effect.
|
|
472
462
|
*
|
|
473
|
-
|
|
474
|
-
*
|
|
475
|
-
* }
|
|
463
|
+
* @param {number} width - The width of the effect in logical pixels.
|
|
464
|
+
* @param {number} height - The height of the effect in logical pixels.
|
|
476
465
|
*/
|
|
477
|
-
this.
|
|
478
|
-
this.domElement = renderer.domElement;
|
|
479
|
-
this.shadowMap = renderer.shadowMap;
|
|
480
|
-
|
|
481
|
-
this.clear = function ( color, depth, stencil ) {
|
|
482
|
-
|
|
483
|
-
renderer.clear( color, depth, stencil );
|
|
466
|
+
this.setSize = function ( width, height ) {
|
|
484
467
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
this.getPixelRatio = function () {
|
|
488
|
-
|
|
489
|
-
return renderer.getPixelRatio();
|
|
490
|
-
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
this.setPixelRatio = function ( value ) {
|
|
494
|
-
|
|
495
|
-
renderer.setPixelRatio( value );
|
|
496
|
-
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
this.getSize = function ( target ) {
|
|
500
|
-
|
|
501
|
-
return renderer.getSize( target );
|
|
502
|
-
|
|
503
|
-
};
|
|
504
|
-
|
|
505
|
-
this.setSize = function ( width, height, updateStyle ) {
|
|
506
|
-
|
|
507
|
-
renderer.setSize( width, height, updateStyle );
|
|
508
|
-
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
this.setViewport = function ( x, y, width, height ) {
|
|
512
|
-
|
|
513
|
-
renderer.setViewport( x, y, width, height );
|
|
514
|
-
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
this.setScissor = function ( x, y, width, height ) {
|
|
518
|
-
|
|
519
|
-
renderer.setScissor( x, y, width, height );
|
|
520
|
-
|
|
521
|
-
};
|
|
522
|
-
|
|
523
|
-
this.setScissorTest = function ( boolean ) {
|
|
524
|
-
|
|
525
|
-
renderer.setScissorTest( boolean );
|
|
526
|
-
|
|
527
|
-
};
|
|
528
|
-
|
|
529
|
-
this.setRenderTarget = function ( renderTarget ) {
|
|
530
|
-
|
|
531
|
-
renderer.setRenderTarget( renderTarget );
|
|
468
|
+
renderer.setSize( width, height );
|
|
532
469
|
|
|
533
470
|
};
|
|
534
471
|
|
|
@@ -536,4 +473,15 @@ class OutlineEffect {
|
|
|
536
473
|
|
|
537
474
|
}
|
|
538
475
|
|
|
476
|
+
/**
|
|
477
|
+
* This type represents configuration settings of `OutlineEffect`.
|
|
478
|
+
*
|
|
479
|
+
* @typedef {Object} OutlineEffect~Options
|
|
480
|
+
* @property {number} [defaultThickness=0.003] - The outline thickness.
|
|
481
|
+
* @property {Array<number>} [defaultColor=[0,0,0]] - The outline color.
|
|
482
|
+
* @property {number} [defaultAlpha=1] - The outline alpha value.
|
|
483
|
+
* @property {boolean} [defaultKeepAlive=false] - Whether to keep alive cached internal materials or not.
|
|
484
|
+
**/
|
|
485
|
+
|
|
486
|
+
|
|
539
487
|
export { OutlineEffect };
|
|
@@ -8,8 +8,19 @@ import {
|
|
|
8
8
|
} from 'three';
|
|
9
9
|
import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* A class that creates an parallax barrier effect.
|
|
13
|
+
*
|
|
14
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
15
|
+
* When using {@link WebGPURenderer}, use {@link ParallaxBarrierPassNode}.
|
|
16
|
+
*/
|
|
11
17
|
class ParallaxBarrierEffect {
|
|
12
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new parallax barrier effect.
|
|
21
|
+
*
|
|
22
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
23
|
+
*/
|
|
13
24
|
constructor( renderer ) {
|
|
14
25
|
|
|
15
26
|
const _stereo = new StereoCamera();
|
|
@@ -72,6 +83,12 @@ class ParallaxBarrierEffect {
|
|
|
72
83
|
|
|
73
84
|
const _quad = new FullScreenQuad( _material );
|
|
74
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Resizes the effect.
|
|
88
|
+
*
|
|
89
|
+
* @param {number} width - The width of the effect in logical pixels.
|
|
90
|
+
* @param {number} height - The height of the effect in logical pixels.
|
|
91
|
+
*/
|
|
75
92
|
this.setSize = function ( width, height ) {
|
|
76
93
|
|
|
77
94
|
renderer.setSize( width, height );
|
|
@@ -83,6 +100,13 @@ class ParallaxBarrierEffect {
|
|
|
83
100
|
|
|
84
101
|
};
|
|
85
102
|
|
|
103
|
+
/**
|
|
104
|
+
* When using this effect, this method should be called instead of the
|
|
105
|
+
* default {@link WebGLRenderer#render}.
|
|
106
|
+
*
|
|
107
|
+
* @param {Object3D} scene - The scene to render.
|
|
108
|
+
* @param {Camera} camera - The camera.
|
|
109
|
+
*/
|
|
86
110
|
this.render = function ( scene, camera ) {
|
|
87
111
|
|
|
88
112
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
@@ -108,6 +132,10 @@ class ParallaxBarrierEffect {
|
|
|
108
132
|
|
|
109
133
|
};
|
|
110
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Frees internal resources. This method should be called
|
|
137
|
+
* when the effect is no longer required.
|
|
138
|
+
*/
|
|
111
139
|
this.dispose = function () {
|
|
112
140
|
|
|
113
141
|
_renderTargetL.dispose();
|
|
@@ -5,11 +5,17 @@ import {
|
|
|
5
5
|
} from 'three';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* peppers ghost effect
|
|
8
|
+
* A class that implements a peppers ghost effect.
|
|
9
|
+
*
|
|
10
|
+
* Reference: [Reflective Prism]{@link http://www.instructables.com/id/Reflective-Prism/?ALLSTEPS}
|
|
9
11
|
*/
|
|
10
|
-
|
|
11
12
|
class PeppersGhostEffect {
|
|
12
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new peppers ghost effect.
|
|
16
|
+
*
|
|
17
|
+
* @param {(WebGPURenderer|WebGLRenderer)} renderer - The renderer.
|
|
18
|
+
*/
|
|
13
19
|
constructor( renderer ) {
|
|
14
20
|
|
|
15
21
|
const scope = this;
|
|
@@ -32,6 +38,12 @@ class PeppersGhostEffect {
|
|
|
32
38
|
// Initialization
|
|
33
39
|
renderer.autoClear = false;
|
|
34
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Resizes the effect.
|
|
43
|
+
*
|
|
44
|
+
* @param {number} width - The width of the effect in logical pixels.
|
|
45
|
+
* @param {number} height - The height of the effect in logical pixels.
|
|
46
|
+
*/
|
|
35
47
|
this.setSize = function ( width, height ) {
|
|
36
48
|
|
|
37
49
|
_halfWidth = width / 2;
|
|
@@ -51,6 +63,13 @@ class PeppersGhostEffect {
|
|
|
51
63
|
|
|
52
64
|
};
|
|
53
65
|
|
|
66
|
+
/**
|
|
67
|
+
* When using this effect, this method should be called instead of the
|
|
68
|
+
* default {@link WebGLRenderer#render}.
|
|
69
|
+
*
|
|
70
|
+
* @param {Object3D} scene - The scene to render.
|
|
71
|
+
* @param {Camera} camera - The camera.
|
|
72
|
+
*/
|
|
54
73
|
this.render = function ( scene, camera ) {
|
|
55
74
|
|
|
56
75
|
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
@@ -3,26 +3,55 @@ import {
|
|
|
3
3
|
Vector2
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* A class that creates an stereo effect.
|
|
8
|
+
*
|
|
9
|
+
* Note that this class can only be used with {@link WebGLRenderer}.
|
|
10
|
+
* When using {@link WebGPURenderer}, use {@link StereoPassNode}.
|
|
11
|
+
*/
|
|
6
12
|
class StereoEffect {
|
|
7
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new stereo effect.
|
|
16
|
+
*
|
|
17
|
+
* @param {WebGLRenderer} renderer - The renderer.
|
|
18
|
+
*/
|
|
8
19
|
constructor( renderer ) {
|
|
9
20
|
|
|
10
21
|
const _stereo = new StereoCamera();
|
|
11
22
|
_stereo.aspect = 0.5;
|
|
12
23
|
const size = new Vector2();
|
|
13
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Sets the given eye separation.
|
|
27
|
+
*
|
|
28
|
+
* @param {number} eyeSep - The eye separation to set.
|
|
29
|
+
*/
|
|
14
30
|
this.setEyeSeparation = function ( eyeSep ) {
|
|
15
31
|
|
|
16
32
|
_stereo.eyeSep = eyeSep;
|
|
17
33
|
|
|
18
34
|
};
|
|
19
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Resizes the effect.
|
|
38
|
+
*
|
|
39
|
+
* @param {number} width - The width of the effect in logical pixels.
|
|
40
|
+
* @param {number} height - The height of the effect in logical pixels.
|
|
41
|
+
*/
|
|
20
42
|
this.setSize = function ( width, height ) {
|
|
21
43
|
|
|
22
44
|
renderer.setSize( width, height );
|
|
23
45
|
|
|
24
46
|
};
|
|
25
47
|
|
|
48
|
+
/**
|
|
49
|
+
* When using this effect, this method should be called instead of the
|
|
50
|
+
* default {@link WebGLRenderer#render}.
|
|
51
|
+
*
|
|
52
|
+
* @param {Object3D} scene - The scene to render.
|
|
53
|
+
* @param {Camera} camera - The camera.
|
|
54
|
+
*/
|
|
26
55
|
this.render = function ( scene, camera ) {
|
|
27
56
|
|
|
28
57
|
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
@@ -8,8 +8,30 @@ import {
|
|
|
8
8
|
Scene,
|
|
9
9
|
} from 'three';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* This class represents a scene with a very basic room setup that can be used as
|
|
13
|
+
* input for {@link PMREMGenerator#fromScene}. The resulting PMREM represents the room's
|
|
14
|
+
* lighting and can be used for Image Based Lighting by assigning it to {@link Scene#environment}
|
|
15
|
+
* or directly as an environment map to PBR materials.
|
|
16
|
+
*
|
|
17
|
+
* This class uses a simple room setup and should only be used for development purposes.
|
|
18
|
+
* A more appropriate setup for production is {@link RoomEnvironment}.
|
|
19
|
+
*
|
|
20
|
+
* ```js
|
|
21
|
+
* const environment = new DebugEnvironment();
|
|
22
|
+
* const pmremGenerator = new THREE.PMREMGenerator( renderer );
|
|
23
|
+
*
|
|
24
|
+
* const envMap = pmremGenerator.fromScene( environment ).texture;
|
|
25
|
+
* scene.environment = envMap;
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @augments Scene
|
|
29
|
+
*/
|
|
11
30
|
class DebugEnvironment extends Scene {
|
|
12
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Constructs a new debug environment.
|
|
34
|
+
*/
|
|
13
35
|
constructor() {
|
|
14
36
|
|
|
15
37
|
super();
|
|
@@ -47,6 +69,33 @@ class DebugEnvironment extends Scene {
|
|
|
47
69
|
|
|
48
70
|
}
|
|
49
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Frees internal resources. This method should be called
|
|
74
|
+
* when the environment is no longer required.
|
|
75
|
+
*/
|
|
76
|
+
dispose() {
|
|
77
|
+
|
|
78
|
+
const resources = new Set();
|
|
79
|
+
|
|
80
|
+
this.traverse( ( object ) => {
|
|
81
|
+
|
|
82
|
+
if ( object.isMesh ) {
|
|
83
|
+
|
|
84
|
+
resources.add( object.geometry );
|
|
85
|
+
resources.add( object.material );
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
} );
|
|
90
|
+
|
|
91
|
+
for ( const resource of resources ) {
|
|
92
|
+
|
|
93
|
+
resource.dispose();
|
|
94
|
+
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
|
|
50
99
|
}
|
|
51
100
|
|
|
52
101
|
export { DebugEnvironment };
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* https://github.com/google/model-viewer/blob/master/packages/model-viewer/src/three-components/EnvironmentScene.ts
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
1
|
import {
|
|
6
2
|
BackSide,
|
|
7
3
|
BoxGeometry,
|
|
@@ -12,6 +8,25 @@ import {
|
|
|
12
8
|
Scene,
|
|
13
9
|
} from 'three';
|
|
14
10
|
|
|
11
|
+
/**
|
|
12
|
+
* This class represents a scene with a basic room setup that can be used as
|
|
13
|
+
* input for {@link PMREMGenerator#fromScene}. The resulting PMREM represents the room's
|
|
14
|
+
* lighting and can be used for Image Based Lighting by assigning it to {@link Scene#environment}
|
|
15
|
+
* or directly as an environment map to PBR materials.
|
|
16
|
+
*
|
|
17
|
+
* The implementation is based on the [EnvironmentScene](https://github.com/google/model-viewer/blob/master/packages/model-viewer/src/three-components/EnvironmentScene.ts)
|
|
18
|
+
* component from the `model-viewer` project.
|
|
19
|
+
*
|
|
20
|
+
* ```js
|
|
21
|
+
* const environment = new RoomEnvironment();
|
|
22
|
+
* const pmremGenerator = new THREE.PMREMGenerator( renderer );
|
|
23
|
+
*
|
|
24
|
+
* const envMap = pmremGenerator.fromScene( environment ).texture;
|
|
25
|
+
* scene.environment = envMap;
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @augments Scene
|
|
29
|
+
*/
|
|
15
30
|
class RoomEnvironment extends Scene {
|
|
16
31
|
|
|
17
32
|
constructor() {
|
|
@@ -108,6 +123,10 @@ class RoomEnvironment extends Scene {
|
|
|
108
123
|
|
|
109
124
|
}
|
|
110
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Frees internal resources. This method should be called
|
|
128
|
+
* when the environment is no longer required.
|
|
129
|
+
*/
|
|
111
130
|
dispose() {
|
|
112
131
|
|
|
113
132
|
const resources = new Set();
|
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import { Color, ColorManagement, SRGBColorSpace } from 'three';
|
|
2
2
|
|
|
3
|
+
/* global DracoEncoderModule */
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
6
|
+
* An exporter to compress geometry with the Draco library.
|
|
5
7
|
*
|
|
6
|
-
* Draco
|
|
8
|
+
* [Draco]{@link https://google.github.io/draco/} is an open source library for compressing and
|
|
9
|
+
* decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
|
|
10
|
+
* at the cost of additional decoding time on the client device.
|
|
7
11
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Standalone Draco files have a `.drc` extension, and contain vertex positions,
|
|
13
|
+
* normals, colors, and other attributes. Draco files *do not* contain materials,
|
|
14
|
+
* textures, animation, or node hierarchies – to use these features, embed Draco geometry
|
|
15
|
+
* inside of a glTF file. A normal glTF file can be converted to a Draco-compressed glTF file
|
|
16
|
+
* using [glTF-Pipeline]{@link https://github.com/AnalyticalGraphicsInc/gltf-pipeline}.
|
|
17
|
+
*
|
|
18
|
+
* ```js
|
|
19
|
+
* const exporter = new DRACOExporter();
|
|
20
|
+
* const data = exporter.parse( mesh, options );
|
|
21
|
+
* ```
|
|
16
22
|
*/
|
|
17
|
-
|
|
18
|
-
/* global DracoEncoderModule */
|
|
19
|
-
|
|
20
23
|
class DRACOExporter {
|
|
21
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Parses the given mesh or point cloud and generates the Draco output.
|
|
27
|
+
*
|
|
28
|
+
* @param {(Mesh|Points)} object - The mesh or point cloud to export.
|
|
29
|
+
* @param {DRACOExporter~Options} options - The export options.
|
|
30
|
+
* @return {ArrayBuffer} The exported Draco.
|
|
31
|
+
*/
|
|
22
32
|
parse( object, options = {} ) {
|
|
23
33
|
|
|
24
34
|
options = Object.assign( {
|
|
@@ -249,7 +259,24 @@ function createVertexColorSRGBArray( attribute ) {
|
|
|
249
259
|
|
|
250
260
|
// Encoder methods
|
|
251
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Edgebreaker encoding.
|
|
264
|
+
*
|
|
265
|
+
* @static
|
|
266
|
+
* @constant
|
|
267
|
+
* @type {number}
|
|
268
|
+
* @default 1
|
|
269
|
+
*/
|
|
252
270
|
DRACOExporter.MESH_EDGEBREAKER_ENCODING = 1;
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Sequential encoding.
|
|
274
|
+
*
|
|
275
|
+
* @static
|
|
276
|
+
* @constant
|
|
277
|
+
* @type {number}
|
|
278
|
+
* @default 0
|
|
279
|
+
*/
|
|
253
280
|
DRACOExporter.MESH_SEQUENTIAL_ENCODING = 0;
|
|
254
281
|
|
|
255
282
|
// Geometry type
|
|
@@ -266,4 +293,17 @@ DRACOExporter.COLOR = 2;
|
|
|
266
293
|
DRACOExporter.TEX_COORD = 3;
|
|
267
294
|
DRACOExporter.GENERIC = 4;
|
|
268
295
|
|
|
296
|
+
/**
|
|
297
|
+
* Export options of `DRACOExporter`.
|
|
298
|
+
*
|
|
299
|
+
* @typedef {Object} DRACOExporter~Options
|
|
300
|
+
* @property {number} [decodeSpeed=5] - Indicates how to tune the encoder regarding decode speed (0 gives better speed but worst quality).
|
|
301
|
+
* @property {number} [encodeSpeed=5] - Indicates how to tune the encoder parameters (0 gives better speed but worst quality).
|
|
302
|
+
* @property {number} [encoderMethod=1] - Either sequential (very little compression) or Edgebreaker. Edgebreaker traverses the triangles of the mesh in a deterministic, spiral-like way which provides most of the benefits of this data format.
|
|
303
|
+
* @property {Array<number>} [quantization=[ 16, 8, 8, 8, 8 ]] - Indicates the precision of each type of data stored in the draco file in the order (POSITION, NORMAL, COLOR, TEX_COORD, GENERIC).
|
|
304
|
+
* @property {boolean} [exportUvs=true] - Whether to export UVs or not.
|
|
305
|
+
* @property {boolean} [exportNormals=true] - Whether to export normals or not.
|
|
306
|
+
* @property {boolean} [exportColor=false] - Whether to export colors or not.
|
|
307
|
+
**/
|
|
308
|
+
|
|
269
309
|
export { DRACOExporter };
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @author sciecode / https://github.com/sciecode
|
|
3
|
-
*
|
|
4
|
-
* EXR format references:
|
|
5
|
-
* https://www.openexr.com/documentation/openexrfilelayout.pdf
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
1
|
import {
|
|
9
2
|
FloatType,
|
|
10
3
|
HalfFloatType,
|
|
@@ -19,13 +12,41 @@ const NO_COMPRESSION = 0;
|
|
|
19
12
|
const ZIPS_COMPRESSION = 2;
|
|
20
13
|
const ZIP_COMPRESSION = 3;
|
|
21
14
|
|
|
15
|
+
/**
|
|
16
|
+
* An exporter for EXR.
|
|
17
|
+
*
|
|
18
|
+
* EXR ( Extended Dynamic Range) is an [open format specification]{@link https://github.com/AcademySoftwareFoundation/openexr}
|
|
19
|
+
* for professional-grade image storage format of the motion picture industry. The purpose of
|
|
20
|
+
* format is to accurately and efficiently represent high-dynamic-range scene-linear image data
|
|
21
|
+
* and associated metadata. The library is widely used in host application software where accuracy
|
|
22
|
+
* is critical, such as photorealistic rendering, texture access, image compositing, deep compositing,
|
|
23
|
+
* and DI.
|
|
24
|
+
*
|
|
25
|
+
* ```js
|
|
26
|
+
* const exporter = new EXRExporter();
|
|
27
|
+
* const result = await exporter.parse( renderer, options );
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
22
30
|
class EXRExporter {
|
|
23
31
|
|
|
32
|
+
/**
|
|
33
|
+
* This method has two variants.
|
|
34
|
+
*
|
|
35
|
+
* - When exporting a data texture, it receives two parameters. The texture and the exporter options.
|
|
36
|
+
* - When exporting a render target (e.g. a PMREM), it receives three parameters. The renderer, the
|
|
37
|
+
* render target and the exporter options.
|
|
38
|
+
*
|
|
39
|
+
* @async
|
|
40
|
+
* @param {(DataTexture|WebGPURenderer|WebGLRenderer)} arg1 - The data texture to export or a renderer.
|
|
41
|
+
* @param {(EXRExporter~Options|RenderTarget)} arg2 - The exporter options or a render target.
|
|
42
|
+
* @param {EXRExporter~Options} [arg3] - The exporter options.
|
|
43
|
+
* @return {Promise<Uint8Array>} A Promise that resolves with the exported EXR.
|
|
44
|
+
*/
|
|
24
45
|
async parse( arg1, arg2, arg3 ) {
|
|
25
46
|
|
|
26
47
|
if ( ! arg1 || ! ( arg1.isWebGLRenderer || arg1.isWebGPURenderer || arg1.isDataTexture ) ) {
|
|
27
48
|
|
|
28
|
-
throw Error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer or DataTexture.' );
|
|
49
|
+
throw Error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer, WebGPURenderer or DataTexture.' );
|
|
29
50
|
|
|
30
51
|
} else if ( arg1.isWebGLRenderer || arg1.isWebGPURenderer ) {
|
|
31
52
|
|
|
@@ -584,4 +605,12 @@ function getFloat32( arr, i ) {
|
|
|
584
605
|
|
|
585
606
|
}
|
|
586
607
|
|
|
608
|
+
/**
|
|
609
|
+
* Export options of `EXRExporter`.
|
|
610
|
+
*
|
|
611
|
+
* @typedef {Object} EXRExporter~Options
|
|
612
|
+
* @property {(HalfFloatType|FloatType)} [type=HalfFloatType] - Output data type.
|
|
613
|
+
* @property {(NO_COMPRESSION|ZIP_COMPRESSION|ZIPS_COMPRESSION)} [type=ZIP_COMPRESSION] - The compression algorithm.
|
|
614
|
+
**/
|
|
615
|
+
|
|
587
616
|
export { EXRExporter, NO_COMPRESSION, ZIP_COMPRESSION, ZIPS_COMPRESSION };
|