@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
|
@@ -1,25 +1,114 @@
|
|
|
1
1
|
import { Material } from './Material.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A material for rendering point primitives.
|
|
6
|
+
*
|
|
7
|
+
* Materials define the appearance of renderable 3D objects.
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* const vertices = [];
|
|
11
|
+
*
|
|
12
|
+
* for ( let i = 0; i < 10000; i ++ ) {
|
|
13
|
+
* const x = THREE.MathUtils.randFloatSpread( 2000 );
|
|
14
|
+
* const y = THREE.MathUtils.randFloatSpread( 2000 );
|
|
15
|
+
* const z = THREE.MathUtils.randFloatSpread( 2000 );
|
|
16
|
+
*
|
|
17
|
+
* vertices.push( x, y, z );
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* const geometry = new THREE.BufferGeometry();
|
|
21
|
+
* geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
|
|
22
|
+
* const material = new THREE.PointsMaterial( { color: 0x888888 } );
|
|
23
|
+
* const points = new THREE.Points( geometry, material );
|
|
24
|
+
* scene.add( points );
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @augments Material
|
|
28
|
+
*/
|
|
4
29
|
class PointsMaterial extends Material {
|
|
5
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a new points material.
|
|
33
|
+
*
|
|
34
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
35
|
+
* defining the material's appearance. Any property of the material
|
|
36
|
+
* (including any property from inherited materials) can be passed
|
|
37
|
+
* in here. Color values can be passed any type of value accepted
|
|
38
|
+
* by {@link Color#set}.
|
|
39
|
+
*/
|
|
6
40
|
constructor( parameters ) {
|
|
7
41
|
|
|
8
42
|
super();
|
|
9
43
|
|
|
44
|
+
/**
|
|
45
|
+
* This flag can be used for type testing.
|
|
46
|
+
*
|
|
47
|
+
* @type {boolean}
|
|
48
|
+
* @readonly
|
|
49
|
+
* @default true
|
|
50
|
+
*/
|
|
10
51
|
this.isPointsMaterial = true;
|
|
11
52
|
|
|
12
53
|
this.type = 'PointsMaterial';
|
|
13
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Color of the material.
|
|
57
|
+
*
|
|
58
|
+
* @type {Color}
|
|
59
|
+
* @default (1,1,1)
|
|
60
|
+
*/
|
|
14
61
|
this.color = new Color( 0xffffff );
|
|
15
62
|
|
|
63
|
+
/**
|
|
64
|
+
* The color map. May optionally include an alpha channel, typically combined
|
|
65
|
+
* with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
|
|
66
|
+
* color is modulated by the diffuse `color`.
|
|
67
|
+
*
|
|
68
|
+
* @type {?Texture}
|
|
69
|
+
* @default null
|
|
70
|
+
*/
|
|
16
71
|
this.map = null;
|
|
17
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The alpha map is a grayscale texture that controls the opacity across the
|
|
75
|
+
* surface (black: fully transparent; white: fully opaque).
|
|
76
|
+
*
|
|
77
|
+
* Only the color of the texture is used, ignoring the alpha channel if one
|
|
78
|
+
* exists. For RGB and RGBA textures, the renderer will use the green channel
|
|
79
|
+
* when sampling this texture due to the extra bit of precision provided for
|
|
80
|
+
* green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
|
|
81
|
+
* luminance/alpha textures will also still work as expected.
|
|
82
|
+
*
|
|
83
|
+
* @type {?Texture}
|
|
84
|
+
* @default null
|
|
85
|
+
*/
|
|
18
86
|
this.alphaMap = null;
|
|
19
87
|
|
|
88
|
+
/**
|
|
89
|
+
* Defines the size of the points in pixels.
|
|
90
|
+
*
|
|
91
|
+
* Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.
|
|
92
|
+
*
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @default 1
|
|
95
|
+
*/
|
|
20
96
|
this.size = 1;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Specifies whether size of individual points is attenuated by the camera depth (perspective camera only).
|
|
100
|
+
*
|
|
101
|
+
* @type {boolean}
|
|
102
|
+
* @default true
|
|
103
|
+
*/
|
|
21
104
|
this.sizeAttenuation = true;
|
|
22
105
|
|
|
106
|
+
/**
|
|
107
|
+
* Whether the material is affected by fog or not.
|
|
108
|
+
*
|
|
109
|
+
* @type {boolean}
|
|
110
|
+
* @default true
|
|
111
|
+
*/
|
|
23
112
|
this.fog = true;
|
|
24
113
|
|
|
25
114
|
this.setValues( parameters );
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import { ShaderMaterial } from './ShaderMaterial.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* This class works just like {@link ShaderMaterial}, except that definitions
|
|
5
|
+
* of built-in uniforms and attributes are not automatically prepended to the
|
|
6
|
+
* GLSL shader code.
|
|
7
|
+
*
|
|
8
|
+
* `RawShaderMaterial` can only be used with {@link WebGLRenderer}.
|
|
9
|
+
*
|
|
10
|
+
* @augments ShaderMaterial
|
|
11
|
+
*/
|
|
3
12
|
class RawShaderMaterial extends ShaderMaterial {
|
|
4
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new raw shader material.
|
|
16
|
+
*
|
|
17
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
18
|
+
* defining the material's appearance. Any property of the material
|
|
19
|
+
* (including any property from inherited materials) can be passed
|
|
20
|
+
* in here. Color values can be passed any type of value accepted
|
|
21
|
+
* by {@link Color#set}.
|
|
22
|
+
*/
|
|
5
23
|
constructor( parameters ) {
|
|
6
24
|
|
|
7
25
|
super( parameters );
|
|
8
26
|
|
|
27
|
+
/**
|
|
28
|
+
* This flag can be used for type testing.
|
|
29
|
+
*
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
* @readonly
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
9
34
|
this.isRawShaderMaterial = true;
|
|
10
35
|
|
|
11
36
|
this.type = 'RawShaderMaterial';
|
|
@@ -4,50 +4,248 @@ import { cloneUniforms, cloneUniformsGroups } from '../renderers/shaders/Uniform
|
|
|
4
4
|
import default_vertex from '../renderers/shaders/ShaderChunk/default_vertex.glsl.js';
|
|
5
5
|
import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.glsl.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* A material rendered with custom shaders. A shader is a small program written in GLSL.
|
|
9
|
+
* that runs on the GPU. You may want to use a custom shader if you need to implement an
|
|
10
|
+
* effect not included with any of the built-in materials.
|
|
11
|
+
*
|
|
12
|
+
* There are the following notes to bear in mind when using a `ShaderMaterial`:
|
|
13
|
+
*
|
|
14
|
+
* - `ShaderMaterial` can only be used with {@link WebGLRenderer}.
|
|
15
|
+
* - Built in attributes and uniforms are passed to the shaders along with your code. If
|
|
16
|
+
* you don't want that, use {@link RawShaderMaterial} instead.
|
|
17
|
+
* - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
|
|
18
|
+
* in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
|
|
19
|
+
* to be placed right above the loop. The loop formatting has to correspond to a defined standard.
|
|
20
|
+
* - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.
|
|
21
|
+
* - The loop variable has to be *i*.
|
|
22
|
+
* - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
|
|
23
|
+
* value of *i* for the given iteration and can be used in preprocessor
|
|
24
|
+
* statements.
|
|
25
|
+
*
|
|
26
|
+
* ```js
|
|
27
|
+
* const material = new THREE.ShaderMaterial( {
|
|
28
|
+
* uniforms: {
|
|
29
|
+
* time: { value: 1.0 },
|
|
30
|
+
* resolution: { value: new THREE.Vector2() }
|
|
31
|
+
* },
|
|
32
|
+
* vertexShader: document.getElementById( 'vertexShader' ).textContent,
|
|
33
|
+
* fragmentShader: document.getElementById( 'fragmentShader' ).textContent
|
|
34
|
+
* } );
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @augments Material
|
|
38
|
+
*/
|
|
7
39
|
class ShaderMaterial extends Material {
|
|
8
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Constructs a new shader material.
|
|
43
|
+
*
|
|
44
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
45
|
+
* defining the material's appearance. Any property of the material
|
|
46
|
+
* (including any property from inherited materials) can be passed
|
|
47
|
+
* in here. Color values can be passed any type of value accepted
|
|
48
|
+
* by {@link Color#set}.
|
|
49
|
+
*/
|
|
9
50
|
constructor( parameters ) {
|
|
10
51
|
|
|
11
52
|
super();
|
|
12
53
|
|
|
54
|
+
/**
|
|
55
|
+
* This flag can be used for type testing.
|
|
56
|
+
*
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
* @readonly
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
13
61
|
this.isShaderMaterial = true;
|
|
14
62
|
|
|
15
63
|
this.type = 'ShaderMaterial';
|
|
16
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Defines custom constants using `#define` directives within the GLSL code
|
|
67
|
+
* for both the vertex shader and the fragment shader; each key/value pair
|
|
68
|
+
* yields another directive.
|
|
69
|
+
* ```js
|
|
70
|
+
* defines: {
|
|
71
|
+
* FOO: 15,
|
|
72
|
+
* BAR: true
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
* Yields the lines:
|
|
76
|
+
* ```
|
|
77
|
+
* #define FOO 15
|
|
78
|
+
* #define BAR true
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @type {Object}
|
|
82
|
+
*/
|
|
17
83
|
this.defines = {};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* An object of the form:
|
|
87
|
+
* ```js
|
|
88
|
+
* {
|
|
89
|
+
* "uniform1": { value: 1.0 },
|
|
90
|
+
* "uniform2": { value: 2 }
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
* specifying the uniforms to be passed to the shader code; keys are uniform
|
|
94
|
+
* names, values are definitions of the form
|
|
95
|
+
* ```
|
|
96
|
+
* {
|
|
97
|
+
* value: 1.0
|
|
98
|
+
* }
|
|
99
|
+
* ```
|
|
100
|
+
* where `value` is the value of the uniform. Names must match the name of
|
|
101
|
+
* the uniform, as defined in the GLSL code. Note that uniforms are refreshed
|
|
102
|
+
* on every frame, so updating the value of the uniform will immediately
|
|
103
|
+
* update the value available to the GLSL code.
|
|
104
|
+
*
|
|
105
|
+
* @type {Object}
|
|
106
|
+
*/
|
|
18
107
|
this.uniforms = {};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* An array holding uniforms groups for configuring UBOs.
|
|
111
|
+
*
|
|
112
|
+
* @type {Array<UniformsGroup>}
|
|
113
|
+
*/
|
|
19
114
|
this.uniformsGroups = [];
|
|
20
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Vertex shader GLSL code. This is the actual code for the shader.
|
|
118
|
+
*
|
|
119
|
+
* @type {string}
|
|
120
|
+
*/
|
|
21
121
|
this.vertexShader = default_vertex;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Fragment shader GLSL code. This is the actual code for the shader.
|
|
125
|
+
*
|
|
126
|
+
* @type {string}
|
|
127
|
+
*/
|
|
22
128
|
this.fragmentShader = default_fragment;
|
|
23
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Controls line thickness or lines.
|
|
132
|
+
*
|
|
133
|
+
* WebGL and WebGPU ignore this setting and always render line primitives with a
|
|
134
|
+
* width of one pixel.
|
|
135
|
+
*
|
|
136
|
+
* @type {number}
|
|
137
|
+
* @default 1
|
|
138
|
+
*/
|
|
24
139
|
this.linewidth = 1;
|
|
25
140
|
|
|
141
|
+
/**
|
|
142
|
+
* Renders the geometry as a wireframe.
|
|
143
|
+
*
|
|
144
|
+
* @type {boolean}
|
|
145
|
+
* @default false
|
|
146
|
+
*/
|
|
26
147
|
this.wireframe = false;
|
|
27
|
-
this.wireframeLinewidth = 1;
|
|
28
148
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
149
|
+
/**
|
|
150
|
+
* Controls the thickness of the wireframe.
|
|
151
|
+
*
|
|
152
|
+
* WebGL and WebGPU ignore this property and always render
|
|
153
|
+
* 1 pixel wide lines.
|
|
154
|
+
*
|
|
155
|
+
* @type {number}
|
|
156
|
+
* @default 1
|
|
157
|
+
*/
|
|
158
|
+
this.wireframeLinewidth = 1;
|
|
32
159
|
|
|
160
|
+
/**
|
|
161
|
+
* Define whether the material color is affected by global fog settings; `true`
|
|
162
|
+
* to pass fog uniforms to the shader.
|
|
163
|
+
*
|
|
164
|
+
* @type {boolean}
|
|
165
|
+
* @default false
|
|
166
|
+
*/
|
|
167
|
+
this.fog = false;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Defines whether this material uses lighting; `true` to pass uniform data
|
|
171
|
+
* related to lighting to this shader.
|
|
172
|
+
*
|
|
173
|
+
* @type {boolean}
|
|
174
|
+
* @default false
|
|
175
|
+
*/
|
|
176
|
+
this.lights = false;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Defines whether this material supports clipping; `true` to let the renderer
|
|
180
|
+
* pass the clippingPlanes uniform.
|
|
181
|
+
*
|
|
182
|
+
* @type {boolean}
|
|
183
|
+
* @default false
|
|
184
|
+
*/
|
|
185
|
+
this.clipping = false;
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Overwritten and set to `true` by default.
|
|
189
|
+
*
|
|
190
|
+
* @type {boolean}
|
|
191
|
+
* @default true
|
|
192
|
+
*/
|
|
33
193
|
this.forceSinglePass = true;
|
|
34
194
|
|
|
195
|
+
/**
|
|
196
|
+
* This object allows to enable certain WebGL 2 extensions.
|
|
197
|
+
*
|
|
198
|
+
* - clipCullDistance: set to `true` to use vertex shader clipping
|
|
199
|
+
* - multiDraw: set to `true` to use vertex shader multi_draw / enable gl_DrawID
|
|
200
|
+
*
|
|
201
|
+
* @type {{clipCullDistance:false,multiDraw:false}}
|
|
202
|
+
*/
|
|
35
203
|
this.extensions = {
|
|
36
204
|
clipCullDistance: false, // set to use vertex shader clipping
|
|
37
205
|
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
|
|
38
206
|
};
|
|
39
207
|
|
|
40
|
-
|
|
41
|
-
|
|
208
|
+
/**
|
|
209
|
+
* When the rendered geometry doesn't include these attributes but the
|
|
210
|
+
* material does, these default values will be passed to the shaders. This
|
|
211
|
+
* avoids errors when buffer data is missing.
|
|
212
|
+
*
|
|
213
|
+
* - color: [ 1, 1, 1 ]
|
|
214
|
+
* - uv: [ 0, 0 ]
|
|
215
|
+
* - uv1: [ 0, 0 ]
|
|
216
|
+
*
|
|
217
|
+
* @type {Object}
|
|
218
|
+
*/
|
|
42
219
|
this.defaultAttributeValues = {
|
|
43
220
|
'color': [ 1, 1, 1 ],
|
|
44
221
|
'uv': [ 0, 0 ],
|
|
45
222
|
'uv1': [ 0, 0 ]
|
|
46
223
|
};
|
|
47
224
|
|
|
225
|
+
/**
|
|
226
|
+
* If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}
|
|
227
|
+
* to bind a generic vertex index to an attribute variable.
|
|
228
|
+
*
|
|
229
|
+
* @type {string|undefined}
|
|
230
|
+
* @default undefined
|
|
231
|
+
*/
|
|
48
232
|
this.index0AttributeName = undefined;
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Can be used to force a uniform update while changing uniforms in
|
|
236
|
+
* {@link Object3D#onBeforeRender}.
|
|
237
|
+
*
|
|
238
|
+
* @type {boolean}
|
|
239
|
+
* @default false
|
|
240
|
+
*/
|
|
49
241
|
this.uniformsNeedUpdate = false;
|
|
50
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Defines the GLSL version of custom shader code.
|
|
245
|
+
*
|
|
246
|
+
* @type {?(GLSL1|GLSL3)}
|
|
247
|
+
* @default null
|
|
248
|
+
*/
|
|
51
249
|
this.glslVersion = null;
|
|
52
250
|
|
|
53
251
|
if ( parameters !== undefined ) {
|
|
@@ -182,4 +380,15 @@ class ShaderMaterial extends Material {
|
|
|
182
380
|
|
|
183
381
|
}
|
|
184
382
|
|
|
383
|
+
/**
|
|
384
|
+
* This type represents the fields required to store and run the shader code.
|
|
385
|
+
*
|
|
386
|
+
* @typedef {Object} ShaderMaterial~Shader
|
|
387
|
+
* @property {string} name - The name of the shader.
|
|
388
|
+
* @property {Object<string, Uniform>} uniforms - The uniforms of the shader.
|
|
389
|
+
* @property {Object<string, any>} defines - The defines of the shader.
|
|
390
|
+
* @property {string} vertexShader - The vertex shader code.
|
|
391
|
+
* @property {string} fragmentShader - The fragment shader code.
|
|
392
|
+
**/
|
|
393
|
+
|
|
185
394
|
export { ShaderMaterial };
|
|
@@ -1,19 +1,73 @@
|
|
|
1
1
|
import { Material } from './Material.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* This material can receive shadows, but otherwise is completely transparent.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const geometry = new THREE.PlaneGeometry( 2000, 2000 );
|
|
9
|
+
* geometry.rotateX( - Math.PI / 2 );
|
|
10
|
+
*
|
|
11
|
+
* const material = new THREE.ShadowMaterial();
|
|
12
|
+
* material.opacity = 0.2;
|
|
13
|
+
*
|
|
14
|
+
* const plane = new THREE.Mesh( geometry, material );
|
|
15
|
+
* plane.position.y = -200;
|
|
16
|
+
* plane.receiveShadow = true;
|
|
17
|
+
* scene.add( plane );
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @augments Material
|
|
21
|
+
*/
|
|
4
22
|
class ShadowMaterial extends Material {
|
|
5
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Constructs a new shadow material.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
28
|
+
* defining the material's appearance. Any property of the material
|
|
29
|
+
* (including any property from inherited materials) can be passed
|
|
30
|
+
* in here. Color values can be passed any type of value accepted
|
|
31
|
+
* by {@link Color#set}.
|
|
32
|
+
*/
|
|
6
33
|
constructor( parameters ) {
|
|
7
34
|
|
|
8
35
|
super();
|
|
9
36
|
|
|
37
|
+
/**
|
|
38
|
+
* This flag can be used for type testing.
|
|
39
|
+
*
|
|
40
|
+
* @type {boolean}
|
|
41
|
+
* @readonly
|
|
42
|
+
* @default true
|
|
43
|
+
*/
|
|
10
44
|
this.isShadowMaterial = true;
|
|
11
45
|
|
|
12
46
|
this.type = 'ShadowMaterial';
|
|
13
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Color of the material.
|
|
50
|
+
*
|
|
51
|
+
* @type {Color}
|
|
52
|
+
* @default (0,0,0)
|
|
53
|
+
*/
|
|
14
54
|
this.color = new Color( 0x000000 );
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Overwritten since shadow materials are transparent
|
|
58
|
+
* by default.
|
|
59
|
+
*
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
* @default true
|
|
62
|
+
*/
|
|
15
63
|
this.transparent = true;
|
|
16
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Whether the material is affected by fog or not.
|
|
67
|
+
*
|
|
68
|
+
* @type {boolean}
|
|
69
|
+
* @default true
|
|
70
|
+
*/
|
|
17
71
|
this.fog = true;
|
|
18
72
|
|
|
19
73
|
this.setValues( parameters );
|
|
@@ -1,28 +1,110 @@
|
|
|
1
1
|
import { Material } from './Material.js';
|
|
2
2
|
import { Color } from '../math/Color.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A material for rendering instances of {@link Sprite}.
|
|
6
|
+
*
|
|
7
|
+
* ```js
|
|
8
|
+
* const map = new THREE.TextureLoader().load( 'textures/sprite.png' );
|
|
9
|
+
* const material = new THREE.SpriteMaterial( { map: map, color: 0xffffff } );
|
|
10
|
+
*
|
|
11
|
+
* const sprite = new THREE.Sprite( material );
|
|
12
|
+
* sprite.scale.set(200, 200, 1)
|
|
13
|
+
* scene.add( sprite );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @augments Material
|
|
17
|
+
*/
|
|
4
18
|
class SpriteMaterial extends Material {
|
|
5
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new sprite material.
|
|
22
|
+
*
|
|
23
|
+
* @param {Object} [parameters] - An object with one or more properties
|
|
24
|
+
* defining the material's appearance. Any property of the material
|
|
25
|
+
* (including any property from inherited materials) can be passed
|
|
26
|
+
* in here. Color values can be passed any type of value accepted
|
|
27
|
+
* by {@link Color#set}.
|
|
28
|
+
*/
|
|
6
29
|
constructor( parameters ) {
|
|
7
30
|
|
|
8
31
|
super();
|
|
9
32
|
|
|
33
|
+
/**
|
|
34
|
+
* This flag can be used for type testing.
|
|
35
|
+
*
|
|
36
|
+
* @type {boolean}
|
|
37
|
+
* @readonly
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
10
40
|
this.isSpriteMaterial = true;
|
|
11
41
|
|
|
12
42
|
this.type = 'SpriteMaterial';
|
|
13
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Color of the material.
|
|
46
|
+
*
|
|
47
|
+
* @type {Color}
|
|
48
|
+
* @default (1,1,1)
|
|
49
|
+
*/
|
|
14
50
|
this.color = new Color( 0xffffff );
|
|
15
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The color map. May optionally include an alpha channel, typically combined
|
|
54
|
+
* with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
|
|
55
|
+
* color is modulated by the diffuse `color`.
|
|
56
|
+
*
|
|
57
|
+
* @type {?Texture}
|
|
58
|
+
* @default null
|
|
59
|
+
*/
|
|
16
60
|
this.map = null;
|
|
17
61
|
|
|
62
|
+
/**
|
|
63
|
+
* The alpha map is a grayscale texture that controls the opacity across the
|
|
64
|
+
* surface (black: fully transparent; white: fully opaque).
|
|
65
|
+
*
|
|
66
|
+
* Only the color of the texture is used, ignoring the alpha channel if one
|
|
67
|
+
* exists. For RGB and RGBA textures, the renderer will use the green channel
|
|
68
|
+
* when sampling this texture due to the extra bit of precision provided for
|
|
69
|
+
* green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
|
|
70
|
+
* luminance/alpha textures will also still work as expected.
|
|
71
|
+
*
|
|
72
|
+
* @type {?Texture}
|
|
73
|
+
* @default null
|
|
74
|
+
*/
|
|
18
75
|
this.alphaMap = null;
|
|
19
76
|
|
|
77
|
+
/**
|
|
78
|
+
* The rotation of the sprite in radians.
|
|
79
|
+
*
|
|
80
|
+
* @type {number}
|
|
81
|
+
* @default 0
|
|
82
|
+
*/
|
|
20
83
|
this.rotation = 0;
|
|
21
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Specifies whether size of the sprite is attenuated by the camera depth (perspective camera only).
|
|
87
|
+
*
|
|
88
|
+
* @type {boolean}
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
22
91
|
this.sizeAttenuation = true;
|
|
23
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Overwritten since sprite materials are transparent
|
|
95
|
+
* by default.
|
|
96
|
+
*
|
|
97
|
+
* @type {boolean}
|
|
98
|
+
* @default true
|
|
99
|
+
*/
|
|
24
100
|
this.transparent = true;
|
|
25
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Whether the material is affected by fog or not.
|
|
104
|
+
*
|
|
105
|
+
* @type {boolean}
|
|
106
|
+
* @default true
|
|
107
|
+
*/
|
|
26
108
|
this.fog = true;
|
|
27
109
|
|
|
28
110
|
this.setValues( parameters );
|
|
@@ -33,7 +33,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
33
33
|
/**
|
|
34
34
|
* Constructs a new node material for wide line rendering.
|
|
35
35
|
*
|
|
36
|
-
* @param {
|
|
36
|
+
* @param {Object} [parameters={}] - The configuration parameter.
|
|
37
37
|
*/
|
|
38
38
|
constructor( parameters = {} ) {
|
|
39
39
|
|
|
@@ -5,7 +5,7 @@ import { LineBasicMaterial } from '../LineBasicMaterial.js';
|
|
|
5
5
|
const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* Node material version of
|
|
8
|
+
* Node material version of {@link LineBasicMaterial}.
|
|
9
9
|
*
|
|
10
10
|
* @augments NodeMaterial
|
|
11
11
|
*/
|
|
@@ -20,7 +20,7 @@ class LineBasicNodeMaterial extends NodeMaterial {
|
|
|
20
20
|
/**
|
|
21
21
|
* Constructs a new line basic node material.
|
|
22
22
|
*
|
|
23
|
-
* @param {
|
|
23
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
24
24
|
*/
|
|
25
25
|
constructor( parameters ) {
|
|
26
26
|
|
|
@@ -9,7 +9,7 @@ import { LineDashedMaterial } from '../LineDashedMaterial.js';
|
|
|
9
9
|
const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* Node material version of
|
|
12
|
+
* Node material version of {@link LineDashedMaterial}.
|
|
13
13
|
*
|
|
14
14
|
* @augments NodeMaterial
|
|
15
15
|
*/
|
|
@@ -24,7 +24,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
|
|
|
24
24
|
/**
|
|
25
25
|
* Constructs a new line dashed node material.
|
|
26
26
|
*
|
|
27
|
-
* @param {
|
|
27
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
28
28
|
*/
|
|
29
29
|
constructor( parameters ) {
|
|
30
30
|
|
|
@@ -11,7 +11,7 @@ import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
|
|
|
11
11
|
const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Node material version of
|
|
14
|
+
* Node material version of {@link MeshBasicMaterial}.
|
|
15
15
|
*
|
|
16
16
|
* @augments NodeMaterial
|
|
17
17
|
*/
|
|
@@ -26,7 +26,7 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
26
26
|
/**
|
|
27
27
|
* Constructs a new mesh basic node material.
|
|
28
28
|
*
|
|
29
|
-
* @param {
|
|
29
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
30
30
|
*/
|
|
31
31
|
constructor( parameters ) {
|
|
32
32
|
|
|
@@ -7,7 +7,7 @@ import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
|
|
|
7
7
|
const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Node material version of
|
|
10
|
+
* Node material version of {@link MeshLambertMaterial}.
|
|
11
11
|
*
|
|
12
12
|
* @augments NodeMaterial
|
|
13
13
|
*/
|
|
@@ -22,7 +22,7 @@ class MeshLambertNodeMaterial extends NodeMaterial {
|
|
|
22
22
|
/**
|
|
23
23
|
* Constructs a new mesh lambert node material.
|
|
24
24
|
*
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {Object} [parameters] - The configuration parameter.
|
|
26
26
|
*/
|
|
27
27
|
constructor( parameters ) {
|
|
28
28
|
|