@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
|
@@ -26,9 +26,8 @@ class AtomicFunctionNode extends TempNode {
|
|
|
26
26
|
* @param {string} method - The signature of the atomic function to construct.
|
|
27
27
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
28
28
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
29
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
30
29
|
*/
|
|
31
|
-
constructor( method, pointerNode, valueNode
|
|
30
|
+
constructor( method, pointerNode, valueNode ) {
|
|
32
31
|
|
|
33
32
|
super( 'uint' );
|
|
34
33
|
|
|
@@ -53,14 +52,6 @@ class AtomicFunctionNode extends TempNode {
|
|
|
53
52
|
*/
|
|
54
53
|
this.valueNode = valueNode;
|
|
55
54
|
|
|
56
|
-
/**
|
|
57
|
-
* A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
58
|
-
*
|
|
59
|
-
* @type {?Node}
|
|
60
|
-
* @default null
|
|
61
|
-
*/
|
|
62
|
-
this.storeNode = storeNode;
|
|
63
|
-
|
|
64
55
|
}
|
|
65
56
|
|
|
66
57
|
/**
|
|
@@ -109,20 +100,16 @@ class AtomicFunctionNode extends TempNode {
|
|
|
109
100
|
|
|
110
101
|
}
|
|
111
102
|
|
|
112
|
-
const methodSnippet = `${ builder.getMethod( method, type ) }( ${params.join( ', ' )} )`;
|
|
113
|
-
|
|
114
|
-
if ( this.storeNode !== null ) {
|
|
103
|
+
const methodSnippet = `${ builder.getMethod( method, type ) }( ${ params.join( ', ' ) } )`;
|
|
115
104
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
builder.addLineFlowCode( `${varSnippet} = ${methodSnippet}`, this );
|
|
119
|
-
|
|
120
|
-
} else {
|
|
105
|
+
if ( b !== null ) {
|
|
121
106
|
|
|
122
107
|
builder.addLineFlowCode( methodSnippet, this );
|
|
123
108
|
|
|
124
109
|
}
|
|
125
110
|
|
|
111
|
+
return methodSnippet;
|
|
112
|
+
|
|
126
113
|
}
|
|
127
114
|
|
|
128
115
|
}
|
|
@@ -147,7 +134,6 @@ export default AtomicFunctionNode;
|
|
|
147
134
|
* @param {string} method - The signature of the atomic function to construct.
|
|
148
135
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
149
136
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
150
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
151
137
|
* @returns {AtomicFunctionNode}
|
|
152
138
|
*/
|
|
153
139
|
const atomicNode = nodeProxy( AtomicFunctionNode );
|
|
@@ -160,12 +146,11 @@ const atomicNode = nodeProxy( AtomicFunctionNode );
|
|
|
160
146
|
* @param {string} method - The signature of the atomic function to construct.
|
|
161
147
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
162
148
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
163
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
164
149
|
* @returns {AtomicFunctionNode}
|
|
165
150
|
*/
|
|
166
|
-
export const atomicFunc = ( method, pointerNode, valueNode
|
|
151
|
+
export const atomicFunc = ( method, pointerNode, valueNode ) => {
|
|
167
152
|
|
|
168
|
-
const node = atomicNode( method, pointerNode, valueNode
|
|
153
|
+
const node = atomicNode( method, pointerNode, valueNode );
|
|
169
154
|
node.append();
|
|
170
155
|
|
|
171
156
|
return node;
|
|
@@ -178,10 +163,9 @@ export const atomicFunc = ( method, pointerNode, valueNode, storeNode = null ) =
|
|
|
178
163
|
* @tsl
|
|
179
164
|
* @function
|
|
180
165
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
181
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
182
166
|
* @returns {AtomicFunctionNode}
|
|
183
167
|
*/
|
|
184
|
-
export const atomicLoad = ( pointerNode
|
|
168
|
+
export const atomicLoad = ( pointerNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_LOAD, pointerNode, null );
|
|
185
169
|
|
|
186
170
|
/**
|
|
187
171
|
* Stores a value in the atomic variable.
|
|
@@ -190,10 +174,9 @@ export const atomicLoad = ( pointerNode, storeNode = null ) => atomicFunc( Atomi
|
|
|
190
174
|
* @function
|
|
191
175
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
192
176
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
193
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
194
177
|
* @returns {AtomicFunctionNode}
|
|
195
178
|
*/
|
|
196
|
-
export const atomicStore = ( pointerNode, valueNode
|
|
179
|
+
export const atomicStore = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_STORE, pointerNode, valueNode );
|
|
197
180
|
|
|
198
181
|
/**
|
|
199
182
|
* Increments the value stored in the atomic variable.
|
|
@@ -202,10 +185,9 @@ export const atomicStore = ( pointerNode, valueNode, storeNode = null ) => atomi
|
|
|
202
185
|
* @function
|
|
203
186
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
204
187
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
205
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
206
188
|
* @returns {AtomicFunctionNode}
|
|
207
189
|
*/
|
|
208
|
-
export const atomicAdd = ( pointerNode, valueNode
|
|
190
|
+
export const atomicAdd = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_ADD, pointerNode, valueNode );
|
|
209
191
|
|
|
210
192
|
/**
|
|
211
193
|
* Decrements the value stored in the atomic variable.
|
|
@@ -214,10 +196,9 @@ export const atomicAdd = ( pointerNode, valueNode, storeNode = null ) => atomicF
|
|
|
214
196
|
* @function
|
|
215
197
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
216
198
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
217
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
218
199
|
* @returns {AtomicFunctionNode}
|
|
219
200
|
*/
|
|
220
|
-
export const atomicSub = ( pointerNode, valueNode
|
|
201
|
+
export const atomicSub = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_SUB, pointerNode, valueNode );
|
|
221
202
|
|
|
222
203
|
/**
|
|
223
204
|
* Stores in an atomic variable the maximum between its current value and a parameter.
|
|
@@ -226,10 +207,9 @@ export const atomicSub = ( pointerNode, valueNode, storeNode = null ) => atomicF
|
|
|
226
207
|
* @function
|
|
227
208
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
228
209
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
229
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
230
210
|
* @returns {AtomicFunctionNode}
|
|
231
211
|
*/
|
|
232
|
-
export const atomicMax = ( pointerNode, valueNode
|
|
212
|
+
export const atomicMax = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_MAX, pointerNode, valueNode );
|
|
233
213
|
|
|
234
214
|
/**
|
|
235
215
|
* Stores in an atomic variable the minimum between its current value and a parameter.
|
|
@@ -238,10 +218,9 @@ export const atomicMax = ( pointerNode, valueNode, storeNode = null ) => atomicF
|
|
|
238
218
|
* @function
|
|
239
219
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
240
220
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
241
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
242
221
|
* @returns {AtomicFunctionNode}
|
|
243
222
|
*/
|
|
244
|
-
export const atomicMin = ( pointerNode, valueNode
|
|
223
|
+
export const atomicMin = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_MIN, pointerNode, valueNode );
|
|
245
224
|
|
|
246
225
|
/**
|
|
247
226
|
* Stores in an atomic variable the bitwise AND of its value with a parameter.
|
|
@@ -250,10 +229,9 @@ export const atomicMin = ( pointerNode, valueNode, storeNode = null ) => atomicF
|
|
|
250
229
|
* @function
|
|
251
230
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
252
231
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
253
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
254
232
|
* @returns {AtomicFunctionNode}
|
|
255
233
|
*/
|
|
256
|
-
export const atomicAnd = ( pointerNode, valueNode
|
|
234
|
+
export const atomicAnd = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_AND, pointerNode, valueNode );
|
|
257
235
|
|
|
258
236
|
/**
|
|
259
237
|
* Stores in an atomic variable the bitwise OR of its value with a parameter.
|
|
@@ -262,10 +240,9 @@ export const atomicAnd = ( pointerNode, valueNode, storeNode = null ) => atomicF
|
|
|
262
240
|
* @function
|
|
263
241
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
264
242
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
265
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
266
243
|
* @returns {AtomicFunctionNode}
|
|
267
244
|
*/
|
|
268
|
-
export const atomicOr = ( pointerNode, valueNode
|
|
245
|
+
export const atomicOr = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_OR, pointerNode, valueNode );
|
|
269
246
|
|
|
270
247
|
/**
|
|
271
248
|
* Stores in an atomic variable the bitwise XOR of its value with a parameter.
|
|
@@ -274,7 +251,6 @@ export const atomicOr = ( pointerNode, valueNode, storeNode = null ) => atomicFu
|
|
|
274
251
|
* @function
|
|
275
252
|
* @param {Node} pointerNode - An atomic variable or element of an atomic buffer.
|
|
276
253
|
* @param {Node} valueNode - The value that mutates the atomic variable.
|
|
277
|
-
* @param {?Node} [storeNode=null] - A variable storing the return value of an atomic operation, typically the value of the atomic variable before the operation.
|
|
278
254
|
* @returns {AtomicFunctionNode}
|
|
279
255
|
*/
|
|
280
|
-
export const atomicXor = ( pointerNode, valueNode
|
|
256
|
+
export const atomicXor = ( pointerNode, valueNode ) => atomicFunc( AtomicFunctionNode.ATOMIC_XOR, pointerNode, valueNode );
|
|
@@ -181,7 +181,7 @@ export const numWorkgroups = /*@__PURE__*/ computeBuiltin( 'numWorkgroups', 'uve
|
|
|
181
181
|
* // Execute 12 compute threads with a workgroup size of 3.
|
|
182
182
|
* const computeFn = Fn( () => {
|
|
183
183
|
*
|
|
184
|
-
* If( workgroupId.x.
|
|
184
|
+
* If( workgroupId.x.mod( 2 ).equal( 0 ), () => {
|
|
185
185
|
*
|
|
186
186
|
* storageBuffer.element( instanceIndex ).assign( instanceIndex );
|
|
187
187
|
*
|
|
@@ -91,7 +91,7 @@ class ComputeNode extends Node {
|
|
|
91
91
|
/**
|
|
92
92
|
* TODO
|
|
93
93
|
*
|
|
94
|
-
* @type {Function}
|
|
94
|
+
* @type {?Function}
|
|
95
95
|
*/
|
|
96
96
|
this.onInitFunction = null;
|
|
97
97
|
|
|
@@ -163,7 +163,24 @@ class ComputeNode extends Node {
|
|
|
163
163
|
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
setup( builder ) {
|
|
167
|
+
|
|
168
|
+
const result = this.computeNode.setup( builder );
|
|
169
|
+
|
|
170
|
+
if ( result ) {
|
|
171
|
+
|
|
172
|
+
const properties = builder.getNodeProperties( this );
|
|
173
|
+
properties.outputComputeNode = result.outputNode;
|
|
174
|
+
|
|
175
|
+
result.outputNode = null;
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return result;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
generate( builder, output ) {
|
|
167
184
|
|
|
168
185
|
const { shaderStage } = builder;
|
|
169
186
|
|
|
@@ -177,6 +194,17 @@ class ComputeNode extends Node {
|
|
|
177
194
|
|
|
178
195
|
}
|
|
179
196
|
|
|
197
|
+
} else {
|
|
198
|
+
|
|
199
|
+
const properties = builder.getNodeProperties( this );
|
|
200
|
+
const outputComputeNode = properties.outputComputeNode;
|
|
201
|
+
|
|
202
|
+
if ( outputComputeNode ) {
|
|
203
|
+
|
|
204
|
+
return outputComputeNode.build( builder, output );
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
|
|
180
208
|
}
|
|
181
209
|
|
|
182
210
|
}
|
|
@@ -128,9 +128,17 @@ class AnalyticLightNode extends LightingNode {
|
|
|
128
128
|
*
|
|
129
129
|
* @abstract
|
|
130
130
|
* @param {NodeBuilder} builder - The builder object used for setting up the light.
|
|
131
|
+
* @return {Object|undefined} The direct light data (color and direction).
|
|
131
132
|
*/
|
|
132
133
|
setupDirect( /*builder*/ ) { }
|
|
133
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Sets up the direct rect area lighting for the analytic light node.
|
|
137
|
+
*
|
|
138
|
+
* @abstract
|
|
139
|
+
* @param {NodeBuilder} builder - The builder object used for setting up the light.
|
|
140
|
+
* @return {Object|undefined} The direct rect area light data.
|
|
141
|
+
*/
|
|
134
142
|
setupDirectRectArea( /*builder*/ ) { }
|
|
135
143
|
|
|
136
144
|
/**
|
|
@@ -172,7 +180,7 @@ class AnalyticLightNode extends LightingNode {
|
|
|
172
180
|
|
|
173
181
|
} else {
|
|
174
182
|
|
|
175
|
-
shadowNode = this.setupShadowNode(
|
|
183
|
+
shadowNode = this.setupShadowNode();
|
|
176
184
|
|
|
177
185
|
}
|
|
178
186
|
|
|
@@ -53,21 +53,21 @@ class LightsNode extends Node {
|
|
|
53
53
|
*
|
|
54
54
|
* @type {Node<vec3>}
|
|
55
55
|
*/
|
|
56
|
-
this.totalDiffuseNode = vec3().toVar(
|
|
56
|
+
this.totalDiffuseNode = vec3().toVar();
|
|
57
57
|
|
|
58
58
|
/**
|
|
59
59
|
* A node representing the total specular light.
|
|
60
60
|
*
|
|
61
61
|
* @type {Node<vec3>}
|
|
62
62
|
*/
|
|
63
|
-
this.totalSpecularNode = vec3().toVar(
|
|
63
|
+
this.totalSpecularNode = vec3().toVar();
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
66
|
* A node representing the outgoing light.
|
|
67
67
|
*
|
|
68
68
|
* @type {Node<vec3>}
|
|
69
69
|
*/
|
|
70
|
-
this.outgoingLightNode = vec3().toVar(
|
|
70
|
+
this.outgoingLightNode = vec3().toVar();
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
73
|
* An array representing the lights in the scene.
|
|
@@ -806,7 +806,7 @@ export default ShadowNode;
|
|
|
806
806
|
* @tsl
|
|
807
807
|
* @function
|
|
808
808
|
* @param {Light} light - The shadow casting light.
|
|
809
|
-
* @param {LightShadow} shadow - The light shadow.
|
|
809
|
+
* @param {?LightShadow} [shadow] - The light shadow.
|
|
810
810
|
* @return {ShadowNode} The created shadow node.
|
|
811
811
|
*/
|
|
812
812
|
export const shadow = ( light, shadow ) => nodeObject( new ShadowNode( light, shadow ) );
|
|
@@ -133,6 +133,7 @@ class ConditionalNode extends Node {
|
|
|
133
133
|
|
|
134
134
|
const { condNode, ifNode, elseNode } = builder.getNodeProperties( this );
|
|
135
135
|
|
|
136
|
+
const functionNode = builder.currentFunctionNode;
|
|
136
137
|
const needsOutput = output !== 'void';
|
|
137
138
|
const nodeProperty = needsOutput ? property( type ).build( builder ) : '';
|
|
138
139
|
|
|
@@ -154,6 +155,14 @@ class ConditionalNode extends Node {
|
|
|
154
155
|
|
|
155
156
|
ifSnippet = 'return ' + ifSnippet + ';';
|
|
156
157
|
|
|
158
|
+
if ( functionNode === null ) {
|
|
159
|
+
|
|
160
|
+
console.warn( 'THREE.TSL: Return statement used in an inline \'Fn()\'. Define a layout struct to allow return values.' );
|
|
161
|
+
|
|
162
|
+
ifSnippet = '// ' + ifSnippet;
|
|
163
|
+
|
|
164
|
+
}
|
|
165
|
+
|
|
157
166
|
}
|
|
158
167
|
|
|
159
168
|
}
|
|
@@ -176,6 +185,14 @@ class ConditionalNode extends Node {
|
|
|
176
185
|
|
|
177
186
|
elseSnippet = 'return ' + elseSnippet + ';';
|
|
178
187
|
|
|
188
|
+
if ( functionNode === null ) {
|
|
189
|
+
|
|
190
|
+
console.warn( 'THREE.TSL: Return statement used in an inline \'Fn()\'. Define a layout struct to allow return values.' );
|
|
191
|
+
|
|
192
|
+
elseSnippet = '// ' + elseSnippet;
|
|
193
|
+
|
|
194
|
+
}
|
|
195
|
+
|
|
179
196
|
}
|
|
180
197
|
|
|
181
198
|
}
|
|
@@ -206,7 +223,7 @@ export default ConditionalNode;
|
|
|
206
223
|
* @param {?Node} [elseNode=null] - The node that is evaluate when the condition ends up `false`.
|
|
207
224
|
* @returns {ConditionalNode}
|
|
208
225
|
*/
|
|
209
|
-
export const select = /*@__PURE__*/ nodeProxy( ConditionalNode );
|
|
226
|
+
export const select = /*@__PURE__*/ nodeProxy( ConditionalNode ).setParameterLength( 2, 3 );
|
|
210
227
|
|
|
211
228
|
addMethodChaining( 'select', select );
|
|
212
229
|
|
|
@@ -217,12 +234,12 @@ addMethodChaining( 'select', select );
|
|
|
217
234
|
* @function
|
|
218
235
|
* @deprecated since r168. Use {@link select} instead.
|
|
219
236
|
*
|
|
220
|
-
* @param
|
|
237
|
+
* @param {...any} params
|
|
221
238
|
* @returns {ConditionalNode}
|
|
222
239
|
*/
|
|
223
240
|
export const cond = ( ...params ) => { // @deprecated, r168
|
|
224
241
|
|
|
225
|
-
console.warn( 'TSL
|
|
242
|
+
console.warn( 'THREE.TSL: cond() has been renamed to select().' );
|
|
226
243
|
return select( ...params );
|
|
227
244
|
|
|
228
245
|
};
|