super-three 0.177.0 → 0.181.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/README.md +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -13,6 +13,7 @@ import { Vector4 } from '../../math/Vector4.js';
|
|
|
13
13
|
import { Matrix4 } from '../../math/Matrix4.js';
|
|
14
14
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
15
15
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
16
|
+
import { warnOnce } from '../../utils.js';
|
|
16
17
|
|
|
17
18
|
const _reflectorPlane = new Plane();
|
|
18
19
|
const _normal = new Vector3();
|
|
@@ -61,10 +62,11 @@ class ReflectorNode extends TextureNode {
|
|
|
61
62
|
*
|
|
62
63
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
63
64
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
64
|
-
* @param {number} [parameters.
|
|
65
|
+
* @param {number} [parameters.resolutionScale=1] - The resolution scale.
|
|
65
66
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
66
67
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
67
68
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
69
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
68
70
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
69
71
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
70
72
|
*/
|
|
@@ -154,10 +156,18 @@ class ReflectorNode extends TextureNode {
|
|
|
154
156
|
|
|
155
157
|
clone() {
|
|
156
158
|
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
+
const newNode = new this.constructor( this.reflectorNode );
|
|
160
|
+
newNode.uvNode = this.uvNode;
|
|
161
|
+
newNode.levelNode = this.levelNode;
|
|
162
|
+
newNode.biasNode = this.biasNode;
|
|
163
|
+
newNode.sampler = this.sampler;
|
|
164
|
+
newNode.depthNode = this.depthNode;
|
|
165
|
+
newNode.compareNode = this.compareNode;
|
|
166
|
+
newNode.gradNode = this.gradNode;
|
|
167
|
+
newNode.offsetNode = this.offsetNode;
|
|
168
|
+
newNode._reflectorBaseNode = this._reflectorBaseNode;
|
|
159
169
|
|
|
160
|
-
return
|
|
170
|
+
return newNode;
|
|
161
171
|
|
|
162
172
|
}
|
|
163
173
|
|
|
@@ -197,10 +207,11 @@ class ReflectorBaseNode extends Node {
|
|
|
197
207
|
* @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
|
|
198
208
|
* @param {Object} [parameters={}] - An object holding configuration parameters.
|
|
199
209
|
* @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
|
|
200
|
-
* @param {number} [parameters.
|
|
210
|
+
* @param {number} [parameters.resolutionScale=1] - The resolution scale.
|
|
201
211
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
202
212
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
203
213
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
214
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
204
215
|
*/
|
|
205
216
|
constructor( textureNode, parameters = {} ) {
|
|
206
217
|
|
|
@@ -208,10 +219,11 @@ class ReflectorBaseNode extends Node {
|
|
|
208
219
|
|
|
209
220
|
const {
|
|
210
221
|
target = new Object3D(),
|
|
211
|
-
|
|
222
|
+
resolutionScale = 1,
|
|
212
223
|
generateMipmaps = false,
|
|
213
224
|
bounces = true,
|
|
214
|
-
depth = false
|
|
225
|
+
depth = false,
|
|
226
|
+
samples = 0
|
|
215
227
|
} = parameters;
|
|
216
228
|
|
|
217
229
|
/**
|
|
@@ -235,7 +247,15 @@ class ReflectorBaseNode extends Node {
|
|
|
235
247
|
* @type {number}
|
|
236
248
|
* @default {1}
|
|
237
249
|
*/
|
|
238
|
-
this.
|
|
250
|
+
this.resolutionScale = resolutionScale;
|
|
251
|
+
|
|
252
|
+
if ( parameters.resolution !== undefined ) {
|
|
253
|
+
|
|
254
|
+
warnOnce( 'ReflectorNode: The "resolution" parameter has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
255
|
+
|
|
256
|
+
this.resolutionScale = parameters.resolution;
|
|
257
|
+
|
|
258
|
+
}
|
|
239
259
|
|
|
240
260
|
/**
|
|
241
261
|
* Whether mipmaps should be generated or not.
|
|
@@ -261,6 +281,14 @@ class ReflectorBaseNode extends Node {
|
|
|
261
281
|
*/
|
|
262
282
|
this.depth = depth;
|
|
263
283
|
|
|
284
|
+
/**
|
|
285
|
+
* The number of anti-aliasing samples for the render-target
|
|
286
|
+
*
|
|
287
|
+
* @type {number}
|
|
288
|
+
* @default {0}
|
|
289
|
+
*/
|
|
290
|
+
this.samples = samples;
|
|
291
|
+
|
|
264
292
|
/**
|
|
265
293
|
* The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
|
|
266
294
|
* is `true`. Otherwise it's `NodeUpdateType.FRAME`.
|
|
@@ -314,7 +342,7 @@ class ReflectorBaseNode extends Node {
|
|
|
314
342
|
*/
|
|
315
343
|
_updateResolution( renderTarget, renderer ) {
|
|
316
344
|
|
|
317
|
-
const resolution = this.
|
|
345
|
+
const resolution = this.resolutionScale;
|
|
318
346
|
|
|
319
347
|
renderer.getDrawingBufferSize( _size );
|
|
320
348
|
|
|
@@ -381,7 +409,7 @@ class ReflectorBaseNode extends Node {
|
|
|
381
409
|
|
|
382
410
|
if ( renderTarget === undefined ) {
|
|
383
411
|
|
|
384
|
-
renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType } );
|
|
412
|
+
renderTarget = new RenderTarget( 0, 0, { type: HalfFloatType, samples: this.samples } );
|
|
385
413
|
|
|
386
414
|
if ( this.generateMipmaps === true ) {
|
|
387
415
|
|
|
@@ -524,6 +552,10 @@ class ReflectorBaseNode extends Node {
|
|
|
524
552
|
renderer.setRenderTarget( renderTarget );
|
|
525
553
|
renderer.autoClear = true;
|
|
526
554
|
|
|
555
|
+
const previousName = scene.name;
|
|
556
|
+
|
|
557
|
+
scene.name = ( scene.name || 'Scene' ) + ' [ Reflector ]'; // TODO: Add bounce index
|
|
558
|
+
|
|
527
559
|
if ( needsClear ) {
|
|
528
560
|
|
|
529
561
|
renderer.clear();
|
|
@@ -538,6 +570,8 @@ class ReflectorBaseNode extends Node {
|
|
|
538
570
|
|
|
539
571
|
}
|
|
540
572
|
|
|
573
|
+
scene.name = previousName;
|
|
574
|
+
|
|
541
575
|
renderer.setMRT( currentMRT );
|
|
542
576
|
renderer.setRenderTarget( currentRenderTarget );
|
|
543
577
|
renderer.autoClear = currentAutoClear;
|
|
@@ -550,6 +584,29 @@ class ReflectorBaseNode extends Node {
|
|
|
550
584
|
|
|
551
585
|
}
|
|
552
586
|
|
|
587
|
+
/**
|
|
588
|
+
* The resolution scale.
|
|
589
|
+
*
|
|
590
|
+
* @deprecated
|
|
591
|
+
* @type {number}
|
|
592
|
+
* @default {1}
|
|
593
|
+
*/
|
|
594
|
+
get resolution() {
|
|
595
|
+
|
|
596
|
+
warnOnce( 'ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
597
|
+
|
|
598
|
+
return this.resolutionScale;
|
|
599
|
+
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
set resolution( value ) {
|
|
603
|
+
|
|
604
|
+
warnOnce( 'ReflectorNode: The "resolution" property has been renamed to "resolutionScale".' ); // @deprecated r180
|
|
605
|
+
|
|
606
|
+
this.resolutionScale = value;
|
|
607
|
+
|
|
608
|
+
}
|
|
609
|
+
|
|
553
610
|
}
|
|
554
611
|
|
|
555
612
|
/**
|
|
@@ -563,6 +620,7 @@ class ReflectorBaseNode extends Node {
|
|
|
563
620
|
* @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
|
|
564
621
|
* @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
|
|
565
622
|
* @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
|
|
623
|
+
* @param {number} [parameters.samples] - Anti-Aliasing samples of the internal render-target.
|
|
566
624
|
* @param {TextureNode} [parameters.defaultTexture] - The default texture node.
|
|
567
625
|
* @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
|
|
568
626
|
* @returns {ReflectorNode}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { uv } from '../accessors/UV.js';
|
|
3
|
+
import { nodeObject } from '../tsl/TSLCore.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Class representing a node that samples a value using a provided callback function.
|
|
7
|
+
*
|
|
8
|
+
* @extends Node
|
|
9
|
+
*/
|
|
10
|
+
class SampleNode extends Node {
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Returns the type of the node.
|
|
14
|
+
*
|
|
15
|
+
* @type {string}
|
|
16
|
+
* @readonly
|
|
17
|
+
* @static
|
|
18
|
+
*/
|
|
19
|
+
static get type() {
|
|
20
|
+
|
|
21
|
+
return 'SampleNode';
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates an instance of SampleNode.
|
|
27
|
+
*
|
|
28
|
+
* @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
|
|
29
|
+
* @param {?Node<vec2>} [uvNode=null] - The UV node to be used in the texture sampling.
|
|
30
|
+
*/
|
|
31
|
+
constructor( callback, uvNode = null ) {
|
|
32
|
+
|
|
33
|
+
super();
|
|
34
|
+
|
|
35
|
+
this.callback = callback;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Represents the texture coordinates.
|
|
39
|
+
*
|
|
40
|
+
* @type {?Node<vec2|vec3>}
|
|
41
|
+
* @default null
|
|
42
|
+
*/
|
|
43
|
+
this.uvNode = uvNode;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* This flag can be used for type testing.
|
|
47
|
+
*
|
|
48
|
+
* @type {boolean}
|
|
49
|
+
* @readonly
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
this.isSampleNode = true;
|
|
53
|
+
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Sets up the node by sampling with the default UV accessor.
|
|
58
|
+
*
|
|
59
|
+
* @returns {Node} The result of the callback function when called with the UV node.
|
|
60
|
+
*/
|
|
61
|
+
setup() {
|
|
62
|
+
|
|
63
|
+
return this.sample( uv() );
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Calls the callback function with the provided UV node.
|
|
69
|
+
*
|
|
70
|
+
* @param {Node<vec2>} uv - The UV node or value to be passed to the callback.
|
|
71
|
+
* @returns {Node} The result of the callback function.
|
|
72
|
+
*/
|
|
73
|
+
sample( uv ) {
|
|
74
|
+
|
|
75
|
+
return this.callback( uv );
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default SampleNode;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Helper function to create a SampleNode wrapped as a node object.
|
|
85
|
+
*
|
|
86
|
+
* @function
|
|
87
|
+
* @param {Function} callback - The function to be called when sampling. Should accept a UV node and return a value.
|
|
88
|
+
* @param {?Node<vec2>} [uv=null] - The UV node to be used in the texture sampling.
|
|
89
|
+
* @returns {SampleNode} The created SampleNode instance wrapped as a node object.
|
|
90
|
+
*/
|
|
91
|
+
export const sample = ( callback, uv = null ) => nodeObject( new SampleNode( callback, nodeObject( uv ) ) );
|
|
@@ -100,6 +100,17 @@ class SplitNode extends Node {
|
|
|
100
100
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Returns the scope of the node.
|
|
105
|
+
*
|
|
106
|
+
* @return {Node} The scope of the node.
|
|
107
|
+
*/
|
|
108
|
+
getScope() {
|
|
109
|
+
|
|
110
|
+
return this.node.getScope();
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
103
114
|
generate( builder, output ) {
|
|
104
115
|
|
|
105
116
|
const node = this.node;
|
package/src/nodes/utils/Timer.js
CHANGED
|
@@ -24,50 +24,3 @@ export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRe
|
|
|
24
24
|
* @type {UniformNode<uint>}
|
|
25
25
|
*/
|
|
26
26
|
export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.frameId );
|
|
27
|
-
|
|
28
|
-
// Deprecated
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* @tsl
|
|
32
|
-
* @function
|
|
33
|
-
* @deprecated since r170. Use {@link time} instead.
|
|
34
|
-
*
|
|
35
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
36
|
-
* @returns {UniformNode<float>}
|
|
37
|
-
*/
|
|
38
|
-
export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
39
|
-
|
|
40
|
-
console.warn( 'TSL: timerLocal() is deprecated. Use "time" instead.' );
|
|
41
|
-
return time.mul( timeScale );
|
|
42
|
-
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @tsl
|
|
47
|
-
* @function
|
|
48
|
-
* @deprecated since r170. Use {@link time} instead.
|
|
49
|
-
*
|
|
50
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
51
|
-
* @returns {UniformNode<float>}
|
|
52
|
-
*/
|
|
53
|
-
export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
|
|
54
|
-
|
|
55
|
-
console.warn( 'TSL: timerGlobal() is deprecated. Use "time" instead.' );
|
|
56
|
-
return time.mul( timeScale );
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @tsl
|
|
62
|
-
* @function
|
|
63
|
-
* @deprecated since r170. Use {@link deltaTime} instead.
|
|
64
|
-
*
|
|
65
|
-
* @param {number} [timeScale=1] - The time scale.
|
|
66
|
-
* @returns {UniformNode<float>}
|
|
67
|
-
*/
|
|
68
|
-
export const timerDelta = ( timeScale = 1 ) => { // @deprecated, r170
|
|
69
|
-
|
|
70
|
-
console.warn( 'TSL: timerDelta() is deprecated. Use "deltaTime" instead.' );
|
|
71
|
-
return deltaTime.mul( timeScale );
|
|
72
|
-
|
|
73
|
-
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { add } from '../math/OperatorNode.js';
|
|
2
|
+
import { normalLocal } from '../accessors/Normal.js';
|
|
3
|
+
import { positionLocal } from '../accessors/Position.js';
|
|
4
|
+
import { texture } from '../accessors/TextureNode.js';
|
|
5
|
+
import { float, vec3, Fn } from '../tsl/TSLBase.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* TSL function for creating a triplanar textures node.
|
|
9
|
+
*
|
|
10
|
+
* Can be used for triplanar texture mapping.
|
|
11
|
+
*
|
|
12
|
+
* ```js
|
|
13
|
+
* material.colorNode = triplanarTexture( texture( diffuseMap ) );
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @tsl
|
|
17
|
+
* @function
|
|
18
|
+
* @param {Node} textureXNode - First texture node.
|
|
19
|
+
* @param {?Node} [textureYNode=null] - Second texture node. When not set, the shader will sample from `textureXNode` instead.
|
|
20
|
+
* @param {?Node} [textureZNode=null] - Third texture node. When not set, the shader will sample from `textureXNode` instead.
|
|
21
|
+
* @param {?Node<float>} [scaleNode=float(1)] - The scale node.
|
|
22
|
+
* @param {?Node<vec3>} [positionNode=positionLocal] - Vertex positions in local space.
|
|
23
|
+
* @param {?Node<vec3>} [normalNode=normalLocal] - Normals in local space.
|
|
24
|
+
* @returns {Node<vec4>}
|
|
25
|
+
*/
|
|
26
|
+
export const triplanarTextures = /*@__PURE__*/ Fn( ( [ textureXNode, textureYNode = null, textureZNode = null, scaleNode = float( 1 ), positionNode = positionLocal, normalNode = normalLocal ] ) => {
|
|
27
|
+
|
|
28
|
+
// Reference: https://github.com/keijiro/StandardTriplanar
|
|
29
|
+
|
|
30
|
+
// Blending factor of triplanar mapping
|
|
31
|
+
let bf = normalNode.abs().normalize();
|
|
32
|
+
bf = bf.div( bf.dot( vec3( 1.0 ) ) );
|
|
33
|
+
|
|
34
|
+
// Triplanar mapping
|
|
35
|
+
const tx = positionNode.yz.mul( scaleNode );
|
|
36
|
+
const ty = positionNode.zx.mul( scaleNode );
|
|
37
|
+
const tz = positionNode.xy.mul( scaleNode );
|
|
38
|
+
|
|
39
|
+
// Base color
|
|
40
|
+
const textureX = textureXNode.value;
|
|
41
|
+
const textureY = textureYNode !== null ? textureYNode.value : textureX;
|
|
42
|
+
const textureZ = textureZNode !== null ? textureZNode.value : textureX;
|
|
43
|
+
|
|
44
|
+
const cx = texture( textureX, tx ).mul( bf.x );
|
|
45
|
+
const cy = texture( textureY, ty ).mul( bf.y );
|
|
46
|
+
const cz = texture( textureZ, tz ).mul( bf.z );
|
|
47
|
+
|
|
48
|
+
return add( cx, cy, cz );
|
|
49
|
+
|
|
50
|
+
} );
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* TSL function for creating a triplanar textures node.
|
|
54
|
+
*
|
|
55
|
+
* @tsl
|
|
56
|
+
* @function
|
|
57
|
+
* @param {Node} textureXNode - First texture node.
|
|
58
|
+
* @param {?Node} [textureYNode=null] - Second texture node. When not set, the shader will sample from `textureXNode` instead.
|
|
59
|
+
* @param {?Node} [textureZNode=null] - Third texture node. When not set, the shader will sample from `textureXNode` instead.
|
|
60
|
+
* @param {?Node<float>} [scaleNode=float(1)] - The scale node.
|
|
61
|
+
* @param {?Node<vec3>} [positionNode=positionLocal] - Vertex positions in local space.
|
|
62
|
+
* @param {?Node<vec3>} [normalNode=normalLocal] - Normals in local space.
|
|
63
|
+
* @returns {Node<vec4>}
|
|
64
|
+
*/
|
|
65
|
+
export const triplanarTexture = ( ...params ) => triplanarTextures( ...params );
|
|
@@ -971,7 +971,7 @@ class BatchedMesh extends Mesh {
|
|
|
971
971
|
*
|
|
972
972
|
* @param {number} geometryId - The ID of the geometry to return the bounding box for.
|
|
973
973
|
* @param {Box3} target - The target object that is used to store the method's result.
|
|
974
|
-
* @return {Box3
|
|
974
|
+
* @return {?Box3} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.
|
|
975
975
|
*/
|
|
976
976
|
getBoundingBoxAt( geometryId, target ) {
|
|
977
977
|
|
|
@@ -1016,7 +1016,7 @@ class BatchedMesh extends Mesh {
|
|
|
1016
1016
|
*
|
|
1017
1017
|
* @param {number} geometryId - The ID of the geometry to return the bounding sphere for.
|
|
1018
1018
|
* @param {Sphere} target - The target object that is used to store the method's result.
|
|
1019
|
-
* @return {Sphere
|
|
1019
|
+
* @return {?Sphere} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.
|
|
1020
1020
|
*/
|
|
1021
1021
|
getBoundingSphereAt( geometryId, target ) {
|
|
1022
1022
|
|
|
@@ -1251,7 +1251,7 @@ class BatchedMesh extends Mesh {
|
|
|
1251
1251
|
const availableInstanceIds = this._availableInstanceIds;
|
|
1252
1252
|
const instanceInfo = this._instanceInfo;
|
|
1253
1253
|
availableInstanceIds.sort( ascIdSort );
|
|
1254
|
-
while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) {
|
|
1254
|
+
while ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length - 1 ) {
|
|
1255
1255
|
|
|
1256
1256
|
instanceInfo.pop();
|
|
1257
1257
|
availableInstanceIds.pop();
|
|
@@ -1529,9 +1529,11 @@ class BatchedMesh extends Mesh {
|
|
|
1529
1529
|
_matrix
|
|
1530
1530
|
.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )
|
|
1531
1531
|
.multiply( this.matrixWorld );
|
|
1532
|
+
|
|
1532
1533
|
_frustum.setFromProjectionMatrix(
|
|
1533
1534
|
_matrix,
|
|
1534
|
-
|
|
1535
|
+
camera.coordinateSystem,
|
|
1536
|
+
camera.reversedDepth
|
|
1535
1537
|
);
|
|
1536
1538
|
|
|
1537
1539
|
}
|
package/src/objects/LOD.js
CHANGED
|
@@ -183,7 +183,7 @@ class LOD extends Object3D {
|
|
|
183
183
|
* the given distance.
|
|
184
184
|
*
|
|
185
185
|
* @param {number} distance - The LOD distance.
|
|
186
|
-
* @return {Object3D
|
|
186
|
+
* @return {?Object3D} The found 3D object. `null` if no 3D object has been found.
|
|
187
187
|
*/
|
|
188
188
|
getObjectForDistance( distance ) {
|
|
189
189
|
|
package/src/objects/Line.js
CHANGED
|
@@ -6,6 +6,7 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
6
6
|
import { LineBasicMaterial } from '../materials/LineBasicMaterial.js';
|
|
7
7
|
import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
8
8
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
9
|
+
import { warn } from '../utils.js';
|
|
9
10
|
|
|
10
11
|
const _vStart = /*@__PURE__*/ new Vector3();
|
|
11
12
|
const _vEnd = /*@__PURE__*/ new Vector3();
|
|
@@ -142,7 +143,7 @@ class Line extends Object3D {
|
|
|
142
143
|
|
|
143
144
|
} else {
|
|
144
145
|
|
|
145
|
-
|
|
146
|
+
warn( 'Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
|
|
146
147
|
|
|
147
148
|
}
|
|
148
149
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Line } from './Line.js';
|
|
2
2
|
import { Vector3 } from '../math/Vector3.js';
|
|
3
3
|
import { Float32BufferAttribute } from '../core/BufferAttribute.js';
|
|
4
|
+
import { warn } from '../utils.js';
|
|
4
5
|
|
|
5
6
|
const _start = /*@__PURE__*/ new Vector3();
|
|
6
7
|
const _end = /*@__PURE__*/ new Vector3();
|
|
@@ -60,7 +61,7 @@ class LineSegments extends Line {
|
|
|
60
61
|
|
|
61
62
|
} else {
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
warn( 'LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
|
|
64
65
|
|
|
65
66
|
}
|
|
66
67
|
|
package/src/objects/Skeleton.js
CHANGED
|
@@ -6,6 +6,7 @@ import { Bone } from './Bone.js';
|
|
|
6
6
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
7
7
|
import { DataTexture } from '../textures/DataTexture.js';
|
|
8
8
|
import { generateUUID } from '../math/MathUtils.js';
|
|
9
|
+
import { warn } from '../utils.js';
|
|
9
10
|
|
|
10
11
|
const _offsetMatrix = /*@__PURE__*/ new Matrix4();
|
|
11
12
|
const _identityMatrix = /*@__PURE__*/ new Matrix4();
|
|
@@ -106,7 +107,7 @@ class Skeleton {
|
|
|
106
107
|
|
|
107
108
|
if ( bones.length !== boneInverses.length ) {
|
|
108
109
|
|
|
109
|
-
|
|
110
|
+
warn( 'Skeleton: Number of inverse bone matrices does not match amount of bones.' );
|
|
110
111
|
|
|
111
112
|
this.boneInverses = [];
|
|
112
113
|
|
|
@@ -324,7 +325,7 @@ class Skeleton {
|
|
|
324
325
|
|
|
325
326
|
if ( bone === undefined ) {
|
|
326
327
|
|
|
327
|
-
|
|
328
|
+
warn( 'Skeleton: No bone found with UUID:', uuid );
|
|
328
329
|
bone = new Bone();
|
|
329
330
|
|
|
330
331
|
}
|
|
@@ -6,6 +6,7 @@ import { Vector3 } from '../math/Vector3.js';
|
|
|
6
6
|
import { Vector4 } from '../math/Vector4.js';
|
|
7
7
|
import { Ray } from '../math/Ray.js';
|
|
8
8
|
import { AttachedBindMode, DetachedBindMode } from '../constants.js';
|
|
9
|
+
import { warn } from '../utils.js';
|
|
9
10
|
|
|
10
11
|
const _basePosition = /*@__PURE__*/ new Vector3();
|
|
11
12
|
|
|
@@ -32,6 +33,7 @@ const _ray = /*@__PURE__*/ new Ray();
|
|
|
32
33
|
* or {@link FBXLoader } import respective models.
|
|
33
34
|
*
|
|
34
35
|
* @augments Mesh
|
|
36
|
+
* @demo scenes/bones-browser.html
|
|
35
37
|
*/
|
|
36
38
|
class SkinnedMesh extends Mesh {
|
|
37
39
|
|
|
@@ -299,7 +301,7 @@ class SkinnedMesh extends Mesh {
|
|
|
299
301
|
|
|
300
302
|
} else {
|
|
301
303
|
|
|
302
|
-
|
|
304
|
+
warn( 'SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );
|
|
303
305
|
|
|
304
306
|
}
|
|
305
307
|
|
package/src/objects/Sprite.js
CHANGED
|
@@ -7,6 +7,7 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
|
|
|
7
7
|
import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
|
|
8
8
|
import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.js';
|
|
9
9
|
import { SpriteMaterial } from '../materials/SpriteMaterial.js';
|
|
10
|
+
import { error } from '../utils.js';
|
|
10
11
|
|
|
11
12
|
let _geometry;
|
|
12
13
|
|
|
@@ -48,7 +49,7 @@ class Sprite extends Object3D {
|
|
|
48
49
|
/**
|
|
49
50
|
* Constructs a new sprite.
|
|
50
51
|
*
|
|
51
|
-
* @param {SpriteMaterial} [material] - The sprite material.
|
|
52
|
+
* @param {(SpriteMaterial|SpriteNodeMaterial)} [material] - The sprite material.
|
|
52
53
|
*/
|
|
53
54
|
constructor( material = new SpriteMaterial() ) {
|
|
54
55
|
|
|
@@ -94,7 +95,7 @@ class Sprite extends Object3D {
|
|
|
94
95
|
/**
|
|
95
96
|
* The sprite material.
|
|
96
97
|
*
|
|
97
|
-
* @type {SpriteMaterial}
|
|
98
|
+
* @type {(SpriteMaterial|SpriteNodeMaterial)}
|
|
98
99
|
*/
|
|
99
100
|
this.material = material;
|
|
100
101
|
|
|
@@ -129,7 +130,7 @@ class Sprite extends Object3D {
|
|
|
129
130
|
|
|
130
131
|
if ( raycaster.camera === null ) {
|
|
131
132
|
|
|
132
|
-
|
|
133
|
+
error( 'Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' );
|
|
133
134
|
|
|
134
135
|
}
|
|
135
136
|
|