@plastic-software/three 0.174.0 → 0.175.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +10744 -1476
- package/build/three.core.js +9633 -1096
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +918 -189
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1432 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +58 -1
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
- package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
- package/src/renderers/shaders/ShaderChunk.js +2 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
- package/src/renderers/shaders/UniformsLib.js +6 -5
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLProgram.js +25 -5
- package/src/renderers/webgl/WebGLPrograms.js +21 -7
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -2,11 +2,23 @@ import {
|
|
|
2
2
|
Matrix4,
|
|
3
3
|
Vector2
|
|
4
4
|
} from 'three';
|
|
5
|
+
|
|
6
|
+
|
|
5
7
|
/**
|
|
8
|
+
* A collection of shaders used for SSR.
|
|
9
|
+
*
|
|
6
10
|
* References:
|
|
7
|
-
* https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html
|
|
11
|
+
* - [3D Game Shaders For Beginners, Screen Space Reflection (SSR)]{@link https://lettier.github.io/3d-game-shaders-for-beginners/screen-space-reflection.html}.
|
|
12
|
+
*
|
|
13
|
+
* @module SSRShader
|
|
8
14
|
*/
|
|
9
15
|
|
|
16
|
+
/**
|
|
17
|
+
* SSR shader.
|
|
18
|
+
*
|
|
19
|
+
* @constant
|
|
20
|
+
* @type {ShaderMaterial~Shader}
|
|
21
|
+
*/
|
|
10
22
|
const SSRShader = {
|
|
11
23
|
|
|
12
24
|
name: 'SSRShader',
|
|
@@ -233,6 +245,12 @@ const SSRShader = {
|
|
|
233
245
|
|
|
234
246
|
};
|
|
235
247
|
|
|
248
|
+
/**
|
|
249
|
+
* SSR Depth shader.
|
|
250
|
+
*
|
|
251
|
+
* @constant
|
|
252
|
+
* @type {ShaderMaterial~Shader}
|
|
253
|
+
*/
|
|
236
254
|
const SSRDepthShader = {
|
|
237
255
|
|
|
238
256
|
name: 'SSRDepthShader',
|
|
@@ -302,6 +320,12 @@ const SSRDepthShader = {
|
|
|
302
320
|
|
|
303
321
|
};
|
|
304
322
|
|
|
323
|
+
/**
|
|
324
|
+
* SSR Blur shader.
|
|
325
|
+
*
|
|
326
|
+
* @constant
|
|
327
|
+
* @type {ShaderMaterial~Shader}
|
|
328
|
+
*/
|
|
305
329
|
const SSRBlurShader = {
|
|
306
330
|
|
|
307
331
|
name: 'SSRBlurShader',
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/** @module SepiaShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Sepia tone shader
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Sepia tone shader based on [glfx.js sepia shader]{@link https://github.com/evanw/glfx.js}.
|
|
5
|
+
*
|
|
6
|
+
* @constant
|
|
7
|
+
* @type {ShaderMaterial~Shader}
|
|
5
8
|
*/
|
|
6
|
-
|
|
7
9
|
const SepiaShader = {
|
|
8
10
|
|
|
9
11
|
name: 'SepiaShader',
|
|
@@ -2,13 +2,16 @@ import {
|
|
|
2
2
|
Vector2
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/** @module SobelOperatorShader */
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
* Sobel Edge Detection (see https://youtu.be/uihBwtPIBxM)
|
|
8
|
+
* Sobel Edge Detection (see {@link https://youtu.be/uihBwtPIBxM}).
|
|
7
9
|
*
|
|
8
10
|
* As mentioned in the video the Sobel operator expects a grayscale image as input.
|
|
9
11
|
*
|
|
12
|
+
* @constant
|
|
13
|
+
* @type {ShaderMaterial~Shader}
|
|
10
14
|
*/
|
|
11
|
-
|
|
12
15
|
const SobelOperatorShader = {
|
|
13
16
|
|
|
14
17
|
name: 'SobelOperatorShader',
|
|
@@ -5,14 +5,6 @@ import {
|
|
|
5
5
|
UniformsUtils
|
|
6
6
|
} from 'three';
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* ------------------------------------------------------------------------------------------
|
|
10
|
-
* Subsurface Scattering shader
|
|
11
|
-
* Based on GDC 2011 – Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look
|
|
12
|
-
* https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/
|
|
13
|
-
*------------------------------------------------------------------------------------------
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
8
|
function replaceAll( string, find, replace ) {
|
|
17
9
|
|
|
18
10
|
return string.split( find ).join( replace );
|
|
@@ -22,6 +14,16 @@ function replaceAll( string, find, replace ) {
|
|
|
22
14
|
const meshphong_frag_head = ShaderChunk[ 'meshphong_frag' ].slice( 0, ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );
|
|
23
15
|
const meshphong_frag_body = ShaderChunk[ 'meshphong_frag' ].slice( ShaderChunk[ 'meshphong_frag' ].indexOf( 'void main() {' ) );
|
|
24
16
|
|
|
17
|
+
/** @module SubsurfaceScatteringShader */
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Subsurface Scattering shader.
|
|
21
|
+
*
|
|
22
|
+
* Based on GDC 2011 – [Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look]{@link https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/}
|
|
23
|
+
*
|
|
24
|
+
* @constant
|
|
25
|
+
* @type {ShaderMaterial~Shader}
|
|
26
|
+
*/
|
|
25
27
|
const SubsurfaceScatteringShader = {
|
|
26
28
|
|
|
27
29
|
name: 'SubsurfaceScatteringShader',
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
/** @module TriangleBlurShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Technicolor Shader
|
|
3
4
|
* Simulates the look of the two-strip technicolor process popular in early 20th century films.
|
|
4
|
-
* More historical info here: http://www.widescreenmuseum.com/oldcolor/technicolor1.htm
|
|
5
|
-
* Demo here: http://charliehoey.com/technicolor_shader/shader_test.html
|
|
5
|
+
* More historical info here: {@link http://www.widescreenmuseum.com/oldcolor/technicolor1.htm}
|
|
6
|
+
* Demo here: {@link http://charliehoey.com/technicolor_shader/shader_test.html}
|
|
7
|
+
*
|
|
8
|
+
* @constant
|
|
9
|
+
* @type {ShaderMaterial~Shader}
|
|
6
10
|
*/
|
|
7
|
-
|
|
8
11
|
const TechnicolorShader = {
|
|
9
12
|
|
|
10
13
|
name: 'TechnicolorShader',
|
|
@@ -4,16 +4,21 @@ import {
|
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Collection of toon shaders.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* hatching
|
|
12
|
-
* dotted
|
|
13
|
-
*/
|
|
9
|
+
* @module TriangleBlurShader
|
|
10
|
+
* */
|
|
14
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Toon1 shader.
|
|
14
|
+
*
|
|
15
|
+
* @constant
|
|
16
|
+
* @type {ShaderMaterial~Shader}
|
|
17
|
+
*/
|
|
15
18
|
const ToonShader1 = {
|
|
16
19
|
|
|
20
|
+
name: 'ToonShader1',
|
|
21
|
+
|
|
17
22
|
uniforms: {
|
|
18
23
|
|
|
19
24
|
'uDirLightPos': { value: new Vector3() },
|
|
@@ -85,7 +90,12 @@ const ToonShader1 = {
|
|
|
85
90
|
}`
|
|
86
91
|
|
|
87
92
|
};
|
|
88
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Toon2 shader.
|
|
95
|
+
*
|
|
96
|
+
* @constant
|
|
97
|
+
* @type {Object}
|
|
98
|
+
*/
|
|
89
99
|
const ToonShader2 = {
|
|
90
100
|
|
|
91
101
|
uniforms: {
|
|
@@ -154,6 +164,12 @@ const ToonShader2 = {
|
|
|
154
164
|
|
|
155
165
|
};
|
|
156
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Toon Hatching shader.
|
|
169
|
+
*
|
|
170
|
+
* @constant
|
|
171
|
+
* @type {Object}
|
|
172
|
+
*/
|
|
157
173
|
const ToonShaderHatching = {
|
|
158
174
|
|
|
159
175
|
uniforms: {
|
|
@@ -250,6 +266,12 @@ const ToonShaderHatching = {
|
|
|
250
266
|
|
|
251
267
|
};
|
|
252
268
|
|
|
269
|
+
/**
|
|
270
|
+
* Toon Dotted shader.
|
|
271
|
+
*
|
|
272
|
+
* @constant
|
|
273
|
+
* @type {Object}
|
|
274
|
+
*/
|
|
253
275
|
const ToonShaderDotted = {
|
|
254
276
|
|
|
255
277
|
uniforms: {
|
|
@@ -2,16 +2,18 @@ import {
|
|
|
2
2
|
Vector2
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/** @module TriangleBlurShader */
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
* Triangle blur shader
|
|
7
|
-
* based on glfx.js triangle blur shader
|
|
8
|
-
* https://github.com/evanw/glfx.js
|
|
8
|
+
* Triangle blur shader based on [glfx.js triangle blur shader]{@link https://github.com/evanw/glfx.js}.
|
|
9
9
|
*
|
|
10
10
|
* A basic blur filter, which convolves the image with a
|
|
11
11
|
* pyramid filter. The pyramid filter is separable and is applied as two
|
|
12
12
|
* perpendicular triangle filters.
|
|
13
|
+
*
|
|
14
|
+
* @constant
|
|
15
|
+
* @type {ShaderMaterial~Shader}
|
|
13
16
|
*/
|
|
14
|
-
|
|
15
17
|
const TriangleBlurShader = {
|
|
16
18
|
|
|
17
19
|
name: 'TriangleBlurShader',
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
/** @module UnpackDepthRGBAShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Unpack RGBA depth shader
|
|
3
|
-
*
|
|
4
|
+
* Unpack RGBA depth shader that shows RGBA encoded depth as monochrome color.
|
|
5
|
+
*
|
|
6
|
+
* @constant
|
|
7
|
+
* @type {ShaderMaterial~Shader}
|
|
4
8
|
*/
|
|
5
|
-
|
|
6
9
|
const UnpackDepthRGBAShader = {
|
|
7
10
|
|
|
8
11
|
name: 'UnpackDepthRGBAShader',
|
|
@@ -4,10 +4,14 @@ import {
|
|
|
4
4
|
Matrix4
|
|
5
5
|
} from 'three';
|
|
6
6
|
|
|
7
|
+
/** @module VelocityShader */
|
|
8
|
+
|
|
7
9
|
/**
|
|
8
|
-
* Mesh
|
|
10
|
+
* Mesh velocity shader by @bhouston.
|
|
11
|
+
*
|
|
12
|
+
* @constant
|
|
13
|
+
* @type {ShaderMaterial~Shader}
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
15
|
const VelocityShader = {
|
|
12
16
|
|
|
13
17
|
name: 'VelocityShader',
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
/** @module VerticalBlurShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Two pass Gaussian blur filter (horizontal and vertical blur shaders)
|
|
3
|
-
* - see http://www.cake23.de/traveling-wavefronts-lit-up.html
|
|
5
|
+
* - see {@link http://www.cake23.de/traveling-wavefronts-lit-up.html}
|
|
4
6
|
*
|
|
5
7
|
* - 9 samples per pass
|
|
6
8
|
* - standard deviation 2.7
|
|
7
9
|
* - "h" and "v" parameters should be set to "1 / width" and "1 / height"
|
|
10
|
+
*
|
|
11
|
+
* @constant
|
|
12
|
+
* @type {ShaderMaterial~Shader}
|
|
8
13
|
*/
|
|
9
|
-
|
|
10
14
|
const VerticalBlurShader = {
|
|
11
15
|
|
|
12
16
|
name: 'VerticalBlurShader',
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @module VerticalTiltShiftShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position
|
|
3
5
|
*
|
|
@@ -5,8 +7,10 @@
|
|
|
5
7
|
* - standard deviation 2.7
|
|
6
8
|
* - "h" and "v" parameters should be set to "1 / width" and "1 / height"
|
|
7
9
|
* - "r" parameter control where "focused" horizontal line lies
|
|
10
|
+
*
|
|
11
|
+
* @constant
|
|
12
|
+
* @type {ShaderMaterial~Shader}
|
|
8
13
|
*/
|
|
9
|
-
|
|
10
14
|
const VerticalTiltShiftShader = {
|
|
11
15
|
|
|
12
16
|
name: 'VerticalTiltShiftShader',
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
/** @module VignetteShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
4
|
+
* Based on [PaintEffect postprocess from ro.me]{@link http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js}.
|
|
5
|
+
*
|
|
6
|
+
* @constant
|
|
7
|
+
* @type {ShaderMaterial~Shader}
|
|
5
8
|
*/
|
|
6
|
-
|
|
7
9
|
const VignetteShader = {
|
|
8
10
|
|
|
9
11
|
name: 'VignetteShader',
|
|
@@ -3,14 +3,20 @@ import {
|
|
|
3
3
|
Vector3
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/** @module VolumeShader */
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* Shaders to render 3D volumes using raycasting.
|
|
8
10
|
* The applied techniques are based on similar implementations in the Visvis and Vispy projects.
|
|
9
11
|
* This is not the only approach, therefore it's marked 1.
|
|
12
|
+
*
|
|
13
|
+
* @constant
|
|
14
|
+
* @type {ShaderMaterial~Shader}
|
|
10
15
|
*/
|
|
11
|
-
|
|
12
16
|
const VolumeRenderShader1 = {
|
|
13
17
|
|
|
18
|
+
name: 'VolumeRenderShader1',
|
|
19
|
+
|
|
14
20
|
uniforms: {
|
|
15
21
|
'u_size': { value: new Vector3( 1, 1, 1 ) },
|
|
16
22
|
'u_renderstyle': { value: 0 },
|
|
@@ -1,5 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class for generating a flakes texture image. This image might be used
|
|
3
|
+
* as a normal map to produce a car paint like effect.
|
|
4
|
+
*/
|
|
1
5
|
class FlakesTexture {
|
|
2
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Generates a new flakes texture image. The result is a canvas
|
|
9
|
+
* that can be used as an input for {@link CanvasTexture}.
|
|
10
|
+
*
|
|
11
|
+
* @param {number} [width=512] - The width of the image.
|
|
12
|
+
* @param {number} [height=512] - The height of the image.
|
|
13
|
+
* @return {HTMLCanvasElement} The generated image.
|
|
14
|
+
*/
|
|
3
15
|
constructor( width = 512, height = 512 ) {
|
|
4
16
|
|
|
5
17
|
const canvas = document.createElement( 'canvas' );
|
|
@@ -1,12 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class that transpiles shader code from one language into another.
|
|
3
|
+
*
|
|
4
|
+
* `Transpiler` can only be used to convert GLSL into TSL right now. It is intended
|
|
5
|
+
* to support developers when they want to migrate their custom materials from the
|
|
6
|
+
* current to the new node-based material system.
|
|
7
|
+
*/
|
|
1
8
|
class Transpiler {
|
|
2
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Constructs a new transpiler.
|
|
12
|
+
*
|
|
13
|
+
* @param {GLSLDecoder} decoder - The GLSL decoder.
|
|
14
|
+
* @param {TSLEncoder} encoder - The TSL encoder.
|
|
15
|
+
*/
|
|
3
16
|
constructor( decoder, encoder ) {
|
|
4
17
|
|
|
18
|
+
/**
|
|
19
|
+
* The GLSL decoder. This component parse GLSL and produces
|
|
20
|
+
* a language-independent AST for further processing.
|
|
21
|
+
*
|
|
22
|
+
* @type {GLSLDecoder}
|
|
23
|
+
*/
|
|
5
24
|
this.decoder = decoder;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The TSL encoder. It takes the AST and emits TSL code.
|
|
28
|
+
*
|
|
29
|
+
* @type {TSLEncoder}
|
|
30
|
+
*/
|
|
6
31
|
this.encoder = encoder;
|
|
7
32
|
|
|
8
33
|
}
|
|
9
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Parses the given GLSL source and returns TSL syntax.
|
|
37
|
+
*
|
|
38
|
+
* @param {string} source - The GLSL source.
|
|
39
|
+
* @return {string} The TSL code.
|
|
40
|
+
*/
|
|
10
41
|
parse( source ) {
|
|
11
42
|
|
|
12
43
|
return this.encoder.emit( this.decoder.parse( source ) );
|
|
@@ -457,7 +457,7 @@ class BloomNode extends TempNode {
|
|
|
457
457
|
|
|
458
458
|
//
|
|
459
459
|
|
|
460
|
-
const colorTexture = texture();
|
|
460
|
+
const colorTexture = texture( null );
|
|
461
461
|
const gaussianCoefficients = uniformArray( coefficients );
|
|
462
462
|
const invSize = uniform( new Vector2() );
|
|
463
463
|
const direction = uniform( new Vector2( 0.5, 0.5 ) );
|
|
@@ -234,8 +234,8 @@ class PixelationPassNode extends PassNode {
|
|
|
234
234
|
* @param {Scene} scene - The scene to render.
|
|
235
235
|
* @param {Camera} camera - The camera to render the scene with.
|
|
236
236
|
* @param {Node<float> | number} [pixelSize=6] - The pixel size.
|
|
237
|
-
* @param {Node<float> | number} [normalEdgeStrength=
|
|
238
|
-
* @param {Node<float> | number} [depthEdgeStrength=
|
|
237
|
+
* @param {Node<float> | number} [normalEdgeStrength=0.3] - The normal edge strength.
|
|
238
|
+
* @param {Node<float> | number} [depthEdgeStrength=0.4] - The depth edge strength.
|
|
239
239
|
*/
|
|
240
240
|
constructor( scene, camera, pixelSize = 6, normalEdgeStrength = 0.3, depthEdgeStrength = 0.4 ) {
|
|
241
241
|
|
|
@@ -324,8 +324,8 @@ class PixelationPassNode extends PassNode {
|
|
|
324
324
|
* @param {Scene} scene - The scene to render.
|
|
325
325
|
* @param {Camera} camera - The camera to render the scene with.
|
|
326
326
|
* @param {Node<float> | number} [pixelSize=6] - The pixel size.
|
|
327
|
-
* @param {Node<float> | number} [normalEdgeStrength=
|
|
328
|
-
* @param {Node<float> | number} [depthEdgeStrength=
|
|
327
|
+
* @param {Node<float> | number} [normalEdgeStrength=0.3] - The normal edge strength.
|
|
328
|
+
* @param {Node<float> | number} [depthEdgeStrength=0.4] - The depth edge strength.
|
|
329
329
|
* @returns {PixelationPassNode}
|
|
330
330
|
*/
|
|
331
331
|
export const pixelationPass = ( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) => nodeObject( new PixelationPassNode( scene, camera, pixelSize, normalEdgeStrength, depthEdgeStrength ) );
|
|
@@ -34,6 +34,13 @@ export const circleIntersectsAABB = /*@__PURE__*/ Fn( ( [ circleCenter, radius,
|
|
|
34
34
|
const _vector3 = /*@__PURE__*/ new Vector3();
|
|
35
35
|
const _size = /*@__PURE__*/ new Vector2();
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* A custom version of `LightsNode` implementing tiled lighting. This node is used in
|
|
39
|
+
* {@link TiledLighting} to overwrite the renderer's default lighting with
|
|
40
|
+
* a custom implementation.
|
|
41
|
+
*
|
|
42
|
+
* @augments LightsNode
|
|
43
|
+
*/
|
|
37
44
|
class TiledLightsNode extends LightsNode {
|
|
38
45
|
|
|
39
46
|
static get type() {
|
|
@@ -42,6 +49,12 @@ class TiledLightsNode extends LightsNode {
|
|
|
42
49
|
|
|
43
50
|
}
|
|
44
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Constructs a new tiled lights node.
|
|
54
|
+
*
|
|
55
|
+
* @param {number} [maxLights=1024] - The maximum number of lights.
|
|
56
|
+
* @param {number} [tileSize=32] - The tile size.
|
|
57
|
+
*/
|
|
45
58
|
constructor( maxLights = 1024, tileSize = 32 ) {
|
|
46
59
|
|
|
47
60
|
super();
|
|
@@ -49,7 +62,20 @@ class TiledLightsNode extends LightsNode {
|
|
|
49
62
|
this.materialLights = [];
|
|
50
63
|
this.tiledLights = [];
|
|
51
64
|
|
|
65
|
+
/**
|
|
66
|
+
* The maximum number of lights.
|
|
67
|
+
*
|
|
68
|
+
* @type {number}
|
|
69
|
+
* @default 1024
|
|
70
|
+
*/
|
|
52
71
|
this.maxLights = maxLights;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The tile size.
|
|
75
|
+
*
|
|
76
|
+
* @type {number}
|
|
77
|
+
* @default 32
|
|
78
|
+
*/
|
|
53
79
|
this.tileSize = tileSize;
|
|
54
80
|
|
|
55
81
|
this._bufferSize = null;
|
|
@@ -171,7 +197,7 @@ class TiledLightsNode extends LightsNode {
|
|
|
171
197
|
const tileOffset = element.div( stride );
|
|
172
198
|
const tileIndex = this._screenTileIndex.mul( int( 2 ) ).add( tileOffset );
|
|
173
199
|
|
|
174
|
-
return this._lightIndexes.element( tileIndex ).element( element.
|
|
200
|
+
return this._lightIndexes.element( tileIndex ).element( element.mod( stride ) );
|
|
175
201
|
|
|
176
202
|
}
|
|
177
203
|
|
|
@@ -315,7 +341,7 @@ class TiledLightsNode extends LightsNode {
|
|
|
315
341
|
const tileOffset = elementIndex.div( stride );
|
|
316
342
|
const tileIndex = instanceIndex.mul( int( 2 ) ).add( tileOffset );
|
|
317
343
|
|
|
318
|
-
return lightIndexes.element( tileIndex ).element( elementIndex.
|
|
344
|
+
return lightIndexes.element( tileIndex ).element( elementIndex.mod( stride ) );
|
|
319
345
|
|
|
320
346
|
};
|
|
321
347
|
|
|
@@ -326,7 +352,7 @@ class TiledLightsNode extends LightsNode {
|
|
|
326
352
|
const tiledBufferSize = bufferSize.clone().divideScalar( tileSize ).floor();
|
|
327
353
|
|
|
328
354
|
const tileScreen = vec2(
|
|
329
|
-
instanceIndex.
|
|
355
|
+
instanceIndex.mod( tiledBufferSize.width ),
|
|
330
356
|
instanceIndex.div( tiledBufferSize.width )
|
|
331
357
|
).mul( tileSize ).div( screenSize );
|
|
332
358
|
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import { TextureLoader } from 'three';
|
|
2
2
|
import { Fn, int, ivec2, textureLoad } from 'three/tsl';
|
|
3
3
|
|
|
4
|
+
/** @module Bayer */
|
|
5
|
+
|
|
4
6
|
let bayer16Texture = null;
|
|
5
7
|
|
|
8
|
+
/**
|
|
9
|
+
* This TSL function can be used to sample a Bayer16 texture which is a 16x16 texture with a Bayer Matrix pattern.
|
|
10
|
+
* It can be used for dithering effects but also as an alternative to blue-noise. When used with Ray Marching
|
|
11
|
+
* specifically in {@link VolumeNodeMaterial#offsetNode}, it reduces banding problem, thus being able to use
|
|
12
|
+
* fewer steps without affecting the visuals as much.
|
|
13
|
+
*
|
|
14
|
+
* @tsl
|
|
15
|
+
* @function
|
|
16
|
+
* @param {Node<vec2>} uv - The uv to sample the bayer16 texture.
|
|
17
|
+
* @return {Node<vec4>} The sampled bayer value.
|
|
18
|
+
*/
|
|
6
19
|
export const bayer16 = Fn( ( [ uv ] ) => {
|
|
7
20
|
|
|
8
21
|
if ( bayer16Texture === null ) {
|
|
@@ -13,6 +26,6 @@ export const bayer16 = Fn( ( [ uv ] ) => {
|
|
|
13
26
|
|
|
14
27
|
}
|
|
15
28
|
|
|
16
|
-
return textureLoad( bayer16Texture, ivec2( uv ).
|
|
29
|
+
return textureLoad( bayer16Texture, ivec2( uv ).mod( int( 16 ) ) );
|
|
17
30
|
|
|
18
31
|
} );
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { varying, vec4, modelWorldMatrixInverse, cameraPosition, positionGeometry, float, Fn, Loop, max, min, vec2, vec3 } from 'three/tsl';
|
|
2
2
|
|
|
3
|
+
/** @module Raymarching */
|
|
4
|
+
|
|
3
5
|
const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
|
|
4
6
|
|
|
5
7
|
const box_min = vec3( - 0.5 );
|
|
@@ -21,7 +23,8 @@ const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
|
|
|
21
23
|
} );
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
26
|
+
* TSL function for performing raymarching in a box-area using the specified number of steps
|
|
27
|
+
* and a callback function.
|
|
25
28
|
*
|
|
26
29
|
* ```js
|
|
27
30
|
* RaymarchingBox( count, ( { positionRay } ) => {
|
|
@@ -33,7 +36,6 @@ const hitBox = /*@__PURE__*/ Fn( ( { orig, dir } ) => {
|
|
|
33
36
|
* @function
|
|
34
37
|
* @param {number|Node} steps - The number of steps for raymarching.
|
|
35
38
|
* @param {Function|FunctionNode} callback - The callback function to execute at each step.
|
|
36
|
-
* @returns {void}
|
|
37
39
|
*/
|
|
38
40
|
export const RaymarchingBox = ( steps, callback ) => {
|
|
39
41
|
|