super-three 0.184.0 → 0.185.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 +1260 -927
- package/build/three.core.js +1104 -829
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +156 -98
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +11 -4
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +7538 -3367
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +7538 -3366
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +3 -0
- package/examples/jsm/controls/ArcballControls.js +6 -2
- package/examples/jsm/controls/FirstPersonControls.js +79 -42
- package/examples/jsm/controls/TransformControls.js +68 -15
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +4 -1
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/GLTFExporter.js +114 -12
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +347 -112
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/ViewHelper.js +16 -6
- package/examples/jsm/inspector/Inspector.js +53 -15
- package/examples/jsm/inspector/RendererInspector.js +152 -36
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -1
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -1
- package/examples/jsm/inspector/tabs/Console.js +200 -18
- package/examples/jsm/inspector/tabs/Memory.js +8 -0
- package/examples/jsm/inspector/tabs/Parameters.js +64 -4
- package/examples/jsm/inspector/tabs/Performance.js +21 -6
- package/examples/jsm/inspector/tabs/Settings.js +51 -9
- package/examples/jsm/inspector/tabs/Timeline.js +178 -93
- package/examples/jsm/inspector/tabs/Viewer.js +628 -16
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +1 -1
- package/examples/jsm/inspector/ui/Profiler.js +90 -45
- package/examples/jsm/inspector/ui/Style.js +1788 -1401
- package/examples/jsm/inspector/ui/Tab.js +5 -3
- package/examples/jsm/inspector/ui/Values.js +71 -6
- package/examples/jsm/inspector/ui/utils.js +130 -10
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/LightProbeGrid.js +106 -76
- package/examples/jsm/lines/LineMaterial.js +38 -15
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +46 -13
- package/examples/jsm/loaders/EXRLoader.js +27 -55
- package/examples/jsm/loaders/HDRLoader.js +6 -28
- package/examples/jsm/loaders/KTX2Loader.js +31 -12
- package/examples/jsm/loaders/LDrawLoader.js +8 -8
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +4 -0
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +3 -3
- package/examples/jsm/loaders/PCDLoader.js +7 -7
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +547 -495
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +33 -9
- package/examples/jsm/loaders/VRMLLoader.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +93 -20
- package/examples/jsm/loaders/usd/USDCParser.js +1 -1
- package/examples/jsm/loaders/usd/USDComposer.js +52 -19
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/Reflector.js +2 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/physics/AmmoPhysics.js +15 -8
- package/examples/jsm/physics/RapierPhysics.js +27 -2
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/GLSLDecoder.js +6 -6
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +59 -19
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +2 -2
- package/examples/jsm/tsl/display/FXAANode.js +11 -12
- package/examples/jsm/tsl/display/GTAONode.js +34 -13
- package/examples/jsm/tsl/display/GodraysNode.js +1 -1
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +13 -25
- package/examples/jsm/tsl/display/SSGINode.js +89 -39
- package/examples/jsm/tsl/display/SSRNode.js +829 -132
- package/examples/jsm/tsl/display/SSSNode.js +2 -2
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +1 -1
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +126 -59
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/package.json +7 -7
- package/src/Three.TSL.js +10 -3
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationAction.js +15 -11
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/KeyframeTrack.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +1 -1
- package/src/core/BufferGeometry.js +29 -7
- package/src/core/Object3D.js +17 -7
- package/src/core/Raycaster.js +1 -1
- package/src/core/RenderTarget.js +15 -2
- package/src/extras/PMREMGenerator.js +6 -4
- package/src/extras/TextureUtils.js +1 -1
- package/src/extras/core/ShapePath.js +149 -160
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/helpers/DirectionalLightHelper.js +2 -0
- package/src/helpers/HemisphereLightHelper.js +2 -0
- package/src/helpers/PointLightHelper.js +2 -0
- package/src/helpers/SpotLightHelper.js +1 -1
- package/src/loaders/DataTextureLoader.js +69 -38
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +36 -266
- package/src/loaders/ObjectLoader.js +3 -1
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +196 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +40 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +40 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +34 -1
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +86 -0
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +378 -322
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +0 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +0 -11
- package/src/materials/nodes/NodeMaterial.js +115 -71
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +49 -20
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/MathUtils.js +2 -2
- package/src/math/Matrix3.js +11 -0
- package/src/math/Matrix4.js +28 -3
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +2 -2
- package/src/math/Vector4.js +2 -2
- package/src/math/interpolants/BezierInterpolant.js +4 -6
- package/src/nodes/Nodes.js +2 -5
- package/src/nodes/TSL.js +8 -6
- package/src/nodes/accessors/Arrays.js +4 -4
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +2 -2
- package/src/nodes/accessors/BufferAttributeNode.js +13 -2
- package/src/nodes/accessors/Camera.js +7 -7
- package/src/nodes/accessors/ClippingNode.js +1 -1
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +18 -2
- package/src/nodes/accessors/MaterialProperties.js +4 -3
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +13 -13
- package/src/nodes/accessors/Position.js +5 -1
- package/src/nodes/accessors/ReferenceNode.js +1 -0
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneProperties.js +1 -1
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +2 -2
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +39 -7
- package/src/nodes/accessors/Tangent.js +4 -4
- package/src/nodes/accessors/TextureNode.js +60 -5
- package/src/nodes/code/FunctionNode.js +2 -16
- package/src/nodes/core/MRTNode.js +7 -2
- package/src/nodes/core/Node.js +39 -2
- package/src/nodes/core/NodeBuilder.js +201 -41
- package/src/nodes/core/NodeUtils.js +13 -13
- package/src/nodes/core/OutputStructNode.js +1 -1
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/PropertyNode.js +51 -5
- package/src/nodes/core/StackNode.js +56 -34
- package/src/nodes/core/StructNode.js +4 -6
- package/src/nodes/core/StructTypeNode.js +6 -6
- package/src/nodes/core/VarNode.js +8 -0
- package/src/nodes/core/VaryingNode.js +12 -2
- package/src/nodes/display/BlendModes.js +1 -41
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +10 -9
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +35 -43
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +12 -3
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +1 -1
- package/src/nodes/lighting/EnvironmentNode.js +2 -2
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +90 -37
- package/src/nodes/lighting/PointShadowNode.js +6 -1
- package/src/nodes/lighting/ShadowFilterNode.js +21 -52
- package/src/nodes/lighting/ShadowNode.js +34 -14
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/ConditionalNode.js +3 -3
- package/src/nodes/math/MathNode.js +39 -11
- package/src/nodes/math/OperatorNode.js +23 -23
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +33 -2
- package/src/nodes/tsl/TSLCore.js +63 -18
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
- package/src/nodes/utils/Packing.js +35 -4
- package/src/nodes/utils/RTTNode.js +40 -24
- package/src/nodes/utils/ReflectorNode.js +1 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/objects/BatchedMesh.js +22 -14
- package/src/objects/InstancedMesh.js +0 -11
- package/src/objects/Skeleton.js +0 -9
- package/src/renderers/WebGLRenderer.js +19 -15
- package/src/renderers/common/Backend.js +49 -5
- package/src/renderers/common/Bindings.js +114 -45
- package/src/renderers/common/Buffer.js +9 -0
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/Info.js +63 -22
- package/src/renderers/common/Lighting.js +53 -5
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderObject.js +73 -13
- package/src/renderers/common/Renderer.js +281 -108
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/Textures.js +32 -5
- package/src/renderers/common/TimestampQueryPool.js +1 -1
- package/src/renderers/common/UniformsGroup.js +31 -9
- package/src/renderers/common/XRManager.js +340 -22
- package/src/renderers/common/extras/PMREMGenerator.js +15 -38
- package/src/renderers/common/nodes/NodeBuilderState.js +9 -1
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/NodeManager.js +63 -14
- package/src/renderers/common/nodes/NodeUniformBuffer.js +13 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/distance.glsl.js +1 -1
- package/src/renderers/webgl/WebGLOutput.js +2 -1
- package/src/renderers/webgl/WebGLProgram.js +5 -4
- package/src/renderers/webgl/WebGLPrograms.js +12 -5
- package/src/renderers/webgl/WebGLRenderLists.js +9 -1
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLTextures.js +20 -7
- package/src/renderers/webgl/WebGLUniformsGroups.js +66 -38
- package/src/renderers/webgl-fallback/WebGLBackend.js +84 -25
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +138 -8
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +1 -1
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +52 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +4 -2
- package/src/renderers/webgpu/WebGPUBackend.js +480 -169
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +164 -7
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +98 -38
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +72 -68
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +164 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +158 -95
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +297 -141
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +33 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +38 -3
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/inspector/extensions/extensions.json +0 -6
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -293
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -349
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SkinningNode.js +0 -328
|
@@ -9,6 +9,15 @@ const _BlurDirectionY = /*@__PURE__*/ new Vector2( 0.0, 1.0 );
|
|
|
9
9
|
|
|
10
10
|
let _rendererState;
|
|
11
11
|
|
|
12
|
+
const luminosityHighPass = Fn( ( { input, threshold, smoothWidth } ) => {
|
|
13
|
+
|
|
14
|
+
const v = luminance( input.rgb );
|
|
15
|
+
const alpha = smoothstep( threshold, threshold.add( smoothWidth ), v );
|
|
16
|
+
|
|
17
|
+
return mix( vec4( 0 ), input, alpha );
|
|
18
|
+
|
|
19
|
+
} );
|
|
20
|
+
|
|
12
21
|
/**
|
|
13
22
|
* Post processing node for creating a bloom effect.
|
|
14
23
|
* ```js
|
|
@@ -74,21 +83,21 @@ class BloomNode extends TempNode {
|
|
|
74
83
|
*
|
|
75
84
|
* @type {UniformNode<float>}
|
|
76
85
|
*/
|
|
77
|
-
this.strength = uniform( strength );
|
|
86
|
+
this.strength = strength.isNode ? strength : uniform( strength );
|
|
78
87
|
|
|
79
88
|
/**
|
|
80
89
|
* The radius of the bloom. Must be in the range `[0,1]`.
|
|
81
90
|
*
|
|
82
91
|
* @type {UniformNode<float>}
|
|
83
92
|
*/
|
|
84
|
-
this.radius = uniform( radius );
|
|
93
|
+
this.radius = radius.isNode ? radius : uniform( radius );
|
|
85
94
|
|
|
86
95
|
/**
|
|
87
96
|
* The luminance threshold limits which bright areas contribute to the bloom effect.
|
|
88
97
|
*
|
|
89
98
|
* @type {UniformNode<float>}
|
|
90
99
|
*/
|
|
91
|
-
this.threshold = uniform( threshold );
|
|
100
|
+
this.threshold = threshold.isNode ? threshold : uniform( threshold );
|
|
92
101
|
|
|
93
102
|
/**
|
|
94
103
|
* Can be used to tweak the extracted luminance from the scene.
|
|
@@ -97,6 +106,22 @@ class BloomNode extends TempNode {
|
|
|
97
106
|
*/
|
|
98
107
|
this.smoothWidth = uniform( 0.01 );
|
|
99
108
|
|
|
109
|
+
/**
|
|
110
|
+
* Scale factor for the internal render targets.
|
|
111
|
+
*
|
|
112
|
+
* @private
|
|
113
|
+
* @type {number}
|
|
114
|
+
* @default 0.5
|
|
115
|
+
*/
|
|
116
|
+
this._resolutionScale = 0.5;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Can be used to inject a custom high pass filter (e.g., for anamorphic effects).
|
|
120
|
+
*
|
|
121
|
+
* @type {Function}
|
|
122
|
+
*/
|
|
123
|
+
this.highPassFn = luminosityHighPass;
|
|
124
|
+
|
|
100
125
|
/**
|
|
101
126
|
* An array that holds the render targets for the horizontal blur passes.
|
|
102
127
|
*
|
|
@@ -253,6 +278,32 @@ class BloomNode extends TempNode {
|
|
|
253
278
|
|
|
254
279
|
}
|
|
255
280
|
|
|
281
|
+
/**
|
|
282
|
+
* Sets the resolution scale for the pass.
|
|
283
|
+
* The resolution scale is a factor that is multiplied with the renderer's width and height.
|
|
284
|
+
*
|
|
285
|
+
* @param {number} resolutionScale - The resolution scale to set. A value of `1` means full resolution.
|
|
286
|
+
* @return {BloomNode} A reference to this node.
|
|
287
|
+
*/
|
|
288
|
+
setResolutionScale( resolutionScale ) {
|
|
289
|
+
|
|
290
|
+
this._resolutionScale = resolutionScale;
|
|
291
|
+
|
|
292
|
+
return this;
|
|
293
|
+
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Gets the current resolution scale of the pass.
|
|
298
|
+
*
|
|
299
|
+
* @return {number} The current resolution scale. A value of `1` means full resolution.
|
|
300
|
+
*/
|
|
301
|
+
getResolutionScale() {
|
|
302
|
+
|
|
303
|
+
return this._resolutionScale;
|
|
304
|
+
|
|
305
|
+
}
|
|
306
|
+
|
|
256
307
|
/**
|
|
257
308
|
* Sets the size of the effect.
|
|
258
309
|
*
|
|
@@ -261,8 +312,8 @@ class BloomNode extends TempNode {
|
|
|
261
312
|
*/
|
|
262
313
|
setSize( width, height ) {
|
|
263
314
|
|
|
264
|
-
let resx = Math.
|
|
265
|
-
let resy = Math.
|
|
315
|
+
let resx = Math.floor( width * this._resolutionScale );
|
|
316
|
+
let resy = Math.floor( height * this._resolutionScale );
|
|
266
317
|
|
|
267
318
|
this._renderTargetBright.setSize( resx, resy );
|
|
268
319
|
|
|
@@ -273,8 +324,8 @@ class BloomNode extends TempNode {
|
|
|
273
324
|
|
|
274
325
|
this._separableBlurMaterials[ i ].invSize.value.set( 1 / resx, 1 / resy );
|
|
275
326
|
|
|
276
|
-
resx = Math.
|
|
277
|
-
resy = Math.
|
|
327
|
+
resx = Math.floor( resx / 2 );
|
|
328
|
+
resy = Math.floor( resy / 2 );
|
|
278
329
|
|
|
279
330
|
}
|
|
280
331
|
|
|
@@ -350,19 +401,8 @@ class BloomNode extends TempNode {
|
|
|
350
401
|
|
|
351
402
|
// luminosity high pass material
|
|
352
403
|
|
|
353
|
-
const luminosityHighPass = Fn( () => {
|
|
354
|
-
|
|
355
|
-
const texel = this.inputNode;
|
|
356
|
-
const v = luminance( texel.rgb );
|
|
357
|
-
|
|
358
|
-
const alpha = smoothstep( this.threshold, this.threshold.add( this.smoothWidth ), v );
|
|
359
|
-
|
|
360
|
-
return mix( vec4( 0 ), texel, alpha );
|
|
361
|
-
|
|
362
|
-
} );
|
|
363
|
-
|
|
364
404
|
this._highPassFilterMaterial = this._highPassFilterMaterial || new NodeMaterial();
|
|
365
|
-
this._highPassFilterMaterial.fragmentNode =
|
|
405
|
+
this._highPassFilterMaterial.fragmentNode = this.highPassFn( { input: this.inputNode, threshold: this.threshold, smoothWidth: this.smoothWidth } ).context( builder.getSharedContext() );
|
|
366
406
|
this._highPassFilterMaterial.name = 'Bloom_highPass';
|
|
367
407
|
this._highPassFilterMaterial.needsUpdate = true;
|
|
368
408
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TempNode, NodeMaterial, NodeUpdateType, RenderTarget, Vector2, HalfFloatType, RedFormat, QuadMesh, RendererUtils } from 'three/webgpu';
|
|
2
|
-
import { convertToTexture, nodeObject, Fn, uniform, smoothstep, step, texture, max, uniformArray, outputStruct, property, vec4, vec3, uv, Loop, min, mix } from 'three/tsl';
|
|
2
|
+
import { convertToTexture, nodeObject, Fn, uniform, smoothstep, step, texture, max, uniformArray, outputStruct, property, vec4, vec3, uv, Loop, min, mix, float } from 'three/tsl';
|
|
3
3
|
import { gaussianBlur } from './GaussianBlurNode.js';
|
|
4
4
|
|
|
5
5
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
@@ -368,7 +368,7 @@ class DepthOfFieldNode extends TempNode {
|
|
|
368
368
|
nearField.assign( step( signedDist, 0 ).mul( CoC ) );
|
|
369
369
|
farField.assign( step( 0, signedDist ).mul( CoC ) );
|
|
370
370
|
|
|
371
|
-
return
|
|
371
|
+
return float( 0 );
|
|
372
372
|
|
|
373
373
|
} );
|
|
374
374
|
|
|
@@ -304,26 +304,25 @@ class FXAANode extends TempNode {
|
|
|
304
304
|
const ApplyFXAA = Fn( ( [ uv, texSize ] ) => {
|
|
305
305
|
|
|
306
306
|
const luminance = SampleLuminanceNeighborhood( texSize, uv );
|
|
307
|
-
|
|
307
|
+
const finalUv = vec2( uv ).toVar();
|
|
308
308
|
|
|
309
|
-
|
|
309
|
+
If( ShouldSkipPixel( luminance ).not(), () => {
|
|
310
310
|
|
|
311
|
-
|
|
311
|
+
const pixelBlend = DeterminePixelBlendFactor( luminance );
|
|
312
|
+
const edge = DetermineEdge( texSize, luminance );
|
|
313
|
+
const edgeBlend = DetermineEdgeBlendFactor( texSize, luminance, edge, uv );
|
|
312
314
|
|
|
313
|
-
|
|
314
|
-
const edge = DetermineEdge( texSize, luminance );
|
|
315
|
-
const edgeBlend = DetermineEdgeBlendFactor( texSize, luminance, edge, uv );
|
|
315
|
+
const finalBlend = max( pixelBlend, edgeBlend );
|
|
316
316
|
|
|
317
|
-
|
|
318
|
-
const finalUv = uv.toVar();
|
|
317
|
+
If( edge.isHorizontal, () => {
|
|
319
318
|
|
|
320
|
-
|
|
319
|
+
finalUv.y.addAssign( edge.pixelStep.mul( finalBlend ) );
|
|
321
320
|
|
|
322
|
-
|
|
321
|
+
} ).Else( () => {
|
|
323
322
|
|
|
324
|
-
|
|
323
|
+
finalUv.x.addAssign( edge.pixelStep.mul( finalBlend ) );
|
|
325
324
|
|
|
326
|
-
|
|
325
|
+
} );
|
|
327
326
|
|
|
328
327
|
} );
|
|
329
328
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataTexture, RenderTarget, RepeatWrapping, Vector2, Vector3, TempNode, QuadMesh, NodeMaterial, RendererUtils, RedFormat } from 'three/webgpu';
|
|
2
|
-
import { reference, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getNormalFromDepth, getScreenPosition, getViewPosition, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, vec2, vec3, vec4, int, dot, max, pow, abs, If, textureSize, sin, cos, PI, texture, passTexture, mat3, add, normalize, mul, cross, div, mix,
|
|
2
|
+
import { reference, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getNormalFromDepth, getScreenPosition, getViewPosition, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, vec2, vec3, vec4, int, dot, max, pow, abs, If, textureSize, sin, cos, PI, texture, passTexture, mat3, add, normalize, mul, cross, div, mix, acos, clamp } from 'three/tsl';
|
|
3
3
|
|
|
4
4
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
5
5
|
const _size = /*@__PURE__*/ new Vector2();
|
|
@@ -375,10 +375,22 @@ class GTAONode extends TempNode {
|
|
|
375
375
|
|
|
376
376
|
const viewDir = normalize( viewPosition.xyz.negate() ).toVar();
|
|
377
377
|
const sliceBitangent = normalize( cross( sampleDir.xyz, viewDir ) ).toVar();
|
|
378
|
-
const sliceTangent = cross( sliceBitangent, viewDir );
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
378
|
+
const sliceTangent = cross( sliceBitangent, viewDir ).toVar();
|
|
379
|
+
|
|
380
|
+
// Project the view normal onto the slice plane (remove component along sliceBitangent).
|
|
381
|
+
// The unnormalized length is the foreshortening weight applied at slice integration.
|
|
382
|
+
// (Activision GTAO paper, Section 3.2 "Per-pixel sampling".)
|
|
383
|
+
const projNRaw = viewNormal.sub( sliceBitangent.mul( dot( viewNormal, sliceBitangent ) ) ).toVar();
|
|
384
|
+
const projNLen = projNRaw.length().toVar();
|
|
385
|
+
const projN = projNRaw.div( max( projNLen, float( 0.0001 ) ) ).toVar();
|
|
386
|
+
|
|
387
|
+
// γ — angle of projN within the slice plane, signed by the tangent direction.
|
|
388
|
+
const nSin = dot( projN, sliceTangent ).toVar();
|
|
389
|
+
const nCos = clamp( dot( projN, viewDir ), 0, 1 ).toVar();
|
|
390
|
+
const signNSin = nSin.greaterThanEqual( 0 ).select( float( 1 ), float( - 1 ) );
|
|
391
|
+
const angleN = signNSin.mul( acos( nCos ) ).toVar();
|
|
392
|
+
|
|
393
|
+
const tangentToNormalInSlice = cross( projN, sliceBitangent ).toVar();
|
|
382
394
|
const cosHorizons = vec2( dot( viewDir, tangentToNormalInSlice ), dot( viewDir, tangentToNormalInSlice.negate() ) ).toVar();
|
|
383
395
|
|
|
384
396
|
// For each slice, the inner loop performs ray marching to find the horizons.
|
|
@@ -419,15 +431,24 @@ class GTAONode extends TempNode {
|
|
|
419
431
|
|
|
420
432
|
} );
|
|
421
433
|
|
|
422
|
-
//
|
|
434
|
+
// Cosine-weighted inner integral, closed-form (Activision GTAO paper, Eq. 7).
|
|
435
|
+
// Per horizon h_i: term_i = −cos( 2 h_i − γ ) + cos( γ ) + 2 h_i sin( γ )
|
|
436
|
+
// The 0.25 factor is ½ (integral normalization) × ½ (averaging the two horizons).
|
|
437
|
+
//
|
|
438
|
+
// In this slice setup `sliceTangent = cross( sliceBitangent, viewDir )` works out
|
|
439
|
+
// opposite to `sampleDir`, so the +sampleDir samples (cosHorizons.x) live on the
|
|
440
|
+
// −T side of the slice and −sampleDir samples (cosHorizons.y) on the +T side.
|
|
441
|
+
// γ is signed by +T (sliceTangent), so hPos must read from cosHorizons.y.
|
|
442
|
+
|
|
443
|
+
const hPos = acos( cosHorizons.y ).toVar();
|
|
444
|
+
const hNeg = acos( cosHorizons.x ).negate().toVar();
|
|
445
|
+
|
|
446
|
+
const termPos = cos( hPos.mul( 2 ).sub( angleN ) ).negate().add( nCos ).add( hPos.mul( 2 ).mul( nSin ) );
|
|
447
|
+
const termNeg = cos( hNeg.mul( 2 ).sub( angleN ) ).negate().add( nCos ).add( hNeg.mul( 2 ).mul( nSin ) );
|
|
448
|
+
const a = termPos.add( termNeg ).mul( 0.25 );
|
|
423
449
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
const ny = dot( normalInSlice, viewDir );
|
|
427
|
-
const nxb = mul( 0.5, acos( cosHorizons.y ).sub( acos( cosHorizons.x ) ).add( sinHorizons.x.mul( cosHorizons.x ).sub( sinHorizons.y.mul( cosHorizons.y ) ) ) );
|
|
428
|
-
const nyb = mul( 0.5, sub( 2.0, cosHorizons.x.mul( cosHorizons.x ) ).sub( cosHorizons.y.mul( cosHorizons.y ) ) );
|
|
429
|
-
const occlusion = nx.mul( nxb ).add( ny.mul( nyb ) );
|
|
430
|
-
ao.addAssign( occlusion );
|
|
450
|
+
// |projN| is the foreshortening weight from the per-slice normal projection.
|
|
451
|
+
ao.addAssign( projNLen.mul( a ) );
|
|
431
452
|
|
|
432
453
|
} );
|
|
433
454
|
|