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
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { AdditiveBlending, Color, Vector2,
|
|
1
|
+
import { AdditiveBlending, Color, Vector2, PassNode, QuadMesh, NodeMaterial } from 'three/webgpu';
|
|
2
2
|
import { uniform, mrt, texture, getTextureIndex, unpremultiplyAlpha } from 'three/tsl';
|
|
3
3
|
|
|
4
4
|
const _size = /*@__PURE__*/ new Vector2();
|
|
5
|
-
|
|
6
|
-
let _rendererState;
|
|
5
|
+
const _clearColor = /*@__PURE__*/ new Color();
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* A special render pass node that renders the scene with SSAA (Supersampling Anti-Aliasing).
|
|
@@ -61,22 +60,6 @@ class SSAAPassNode extends PassNode {
|
|
|
61
60
|
*/
|
|
62
61
|
this.unbiased = true;
|
|
63
62
|
|
|
64
|
-
/**
|
|
65
|
-
* The clear color of the pass.
|
|
66
|
-
*
|
|
67
|
-
* @type {Color}
|
|
68
|
-
* @default 0x000000
|
|
69
|
-
*/
|
|
70
|
-
this.clearColor = new Color( 0x000000 );
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* The clear alpha of the pass.
|
|
74
|
-
*
|
|
75
|
-
* @type {number}
|
|
76
|
-
* @default 0
|
|
77
|
-
*/
|
|
78
|
-
this.clearAlpha = 0;
|
|
79
|
-
|
|
80
63
|
/**
|
|
81
64
|
* A uniform node representing the sample weight.
|
|
82
65
|
*
|
|
@@ -114,8 +97,6 @@ class SSAAPassNode extends PassNode {
|
|
|
114
97
|
const { renderer } = frame;
|
|
115
98
|
const { scene, camera } = this;
|
|
116
99
|
|
|
117
|
-
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
118
|
-
|
|
119
100
|
//
|
|
120
101
|
|
|
121
102
|
this._pixelRatio = renderer.getPixelRatio();
|
|
@@ -130,6 +111,12 @@ class SSAAPassNode extends PassNode {
|
|
|
130
111
|
this._cameraNear.value = camera.near;
|
|
131
112
|
this._cameraFar.value = camera.far;
|
|
132
113
|
|
|
114
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
|
115
|
+
const currentMRT = renderer.getMRT();
|
|
116
|
+
const currentAutoClear = renderer.autoClear;
|
|
117
|
+
const currentClearColor = renderer.getClearColor( _clearColor );
|
|
118
|
+
const currentClearAlpha = renderer.getClearAlpha();
|
|
119
|
+
|
|
133
120
|
renderer.setMRT( this.getMRT() );
|
|
134
121
|
renderer.autoClear = false;
|
|
135
122
|
|
|
@@ -186,7 +173,6 @@ class SSAAPassNode extends PassNode {
|
|
|
186
173
|
|
|
187
174
|
}
|
|
188
175
|
|
|
189
|
-
renderer.setClearColor( this.clearColor, this.clearAlpha );
|
|
190
176
|
renderer.setRenderTarget( this._sampleRenderTarget );
|
|
191
177
|
renderer.clear();
|
|
192
178
|
renderer.render( scene, camera );
|
|
@@ -200,6 +186,8 @@ class SSAAPassNode extends PassNode {
|
|
|
200
186
|
renderer.setClearColor( 0x000000, 0.0 );
|
|
201
187
|
renderer.clear();
|
|
202
188
|
|
|
189
|
+
renderer.setClearColor( currentClearColor, currentClearAlpha );
|
|
190
|
+
|
|
203
191
|
}
|
|
204
192
|
|
|
205
193
|
this._quadMesh.render( renderer );
|
|
@@ -228,9 +216,9 @@ class SSAAPassNode extends PassNode {
|
|
|
228
216
|
|
|
229
217
|
}
|
|
230
218
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
219
|
+
renderer.setRenderTarget( currentRenderTarget );
|
|
220
|
+
renderer.setMRT( currentMRT );
|
|
221
|
+
renderer.autoClear = currentAutoClear;
|
|
234
222
|
|
|
235
223
|
}
|
|
236
224
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial, RendererUtils, MathUtils } from 'three/webgpu';
|
|
2
|
-
import { clamp, normalize, reference, Fn, NodeUpdateType, uniform, vec4, passTexture, uv, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getViewPosition, screenCoordinate, float, sub, fract, dot, vec2, rand, vec3, Loop, mul, PI, cos, sin, uint, cross, acos, sign, pow, luminance, If, max, abs, Break, sqrt, HALF_PI, div, ceil, shiftRight, convertToTexture, bool, getNormalFromDepth, countOneBits, interleavedGradientNoise } from 'three/tsl';
|
|
1
|
+
import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial, RendererUtils, MathUtils, RGBFormat, RedFormat, UnsignedInt101111Type, UnsignedByteType } from 'three/webgpu';
|
|
2
|
+
import { clamp, normalize, reference, Fn, NodeUpdateType, uniform, vec4, passTexture, uv, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getViewPosition, screenCoordinate, float, sub, fract, dot, vec2, rand, vec3, Loop, mul, PI, cos, sin, uint, cross, acos, sign, pow, luminance, If, max, abs, Break, sqrt, HALF_PI, div, ceil, shiftRight, convertToTexture, bool, getNormalFromDepth, countOneBits, interleavedGradientNoise, property, outputStruct } from 'three/tsl';
|
|
3
3
|
|
|
4
4
|
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
5
5
|
const _size = /*@__PURE__*/ new Vector2();
|
|
@@ -139,7 +139,7 @@ class SSGINode extends TempNode {
|
|
|
139
139
|
* Makes the sample distance in screen space instead of world-space (helps having more detail up close).
|
|
140
140
|
*
|
|
141
141
|
* @type {UniformNode<bool>}
|
|
142
|
-
* @default
|
|
142
|
+
* @default true
|
|
143
143
|
*/
|
|
144
144
|
this.useScreenSpaceSampling = uniform( true, 'bool' );
|
|
145
145
|
|
|
@@ -267,13 +267,23 @@ class SSGINode extends TempNode {
|
|
|
267
267
|
this._camera = camera;
|
|
268
268
|
|
|
269
269
|
/**
|
|
270
|
-
* The render target the
|
|
270
|
+
* The render target the effect is rendered into. The first texture holds the GI,
|
|
271
|
+
* the second one the AO.
|
|
271
272
|
*
|
|
272
273
|
* @private
|
|
273
274
|
* @type {RenderTarget}
|
|
274
275
|
*/
|
|
275
|
-
this._ssgiRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false } );
|
|
276
|
-
|
|
276
|
+
this._ssgiRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, count: 2 } );
|
|
277
|
+
|
|
278
|
+
const aoTexture = this._ssgiRenderTarget.textures[ 0 ];
|
|
279
|
+
aoTexture.name = 'SSGI.AO';
|
|
280
|
+
aoTexture.type = UnsignedByteType;
|
|
281
|
+
aoTexture.format = RedFormat;
|
|
282
|
+
|
|
283
|
+
const giTexture = this._ssgiRenderTarget.textures[ 1 ];
|
|
284
|
+
giTexture.name = 'SSGI.GI';
|
|
285
|
+
giTexture.type = UnsignedInt101111Type;
|
|
286
|
+
giTexture.format = RGBFormat;
|
|
277
287
|
|
|
278
288
|
/**
|
|
279
289
|
* The material that is used to render the effect.
|
|
@@ -285,23 +295,42 @@ class SSGINode extends TempNode {
|
|
|
285
295
|
this._material.name = 'SSGI';
|
|
286
296
|
|
|
287
297
|
/**
|
|
288
|
-
* The result of the effect is represented as a separate texture node.
|
|
298
|
+
* The AO result of the effect is represented as a separate texture node.
|
|
289
299
|
*
|
|
290
300
|
* @private
|
|
291
301
|
* @type {PassTextureNode}
|
|
292
302
|
*/
|
|
293
|
-
this.
|
|
303
|
+
this._aoNode = passTexture( this, this._ssgiRenderTarget.textures[ 0 ] );
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* The GI result of the effect is represented as a separate texture node.
|
|
307
|
+
*
|
|
308
|
+
* @private
|
|
309
|
+
* @type {PassTextureNode}
|
|
310
|
+
*/
|
|
311
|
+
this._giNode = passTexture( this, this._ssgiRenderTarget.textures[ 1 ] );
|
|
312
|
+
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Returns the AO result of the effect as a texture node.
|
|
317
|
+
*
|
|
318
|
+
* @return {PassTextureNode} A texture node that represents the AO result of the effect.
|
|
319
|
+
*/
|
|
320
|
+
getAONode() {
|
|
321
|
+
|
|
322
|
+
return this._aoNode;
|
|
294
323
|
|
|
295
324
|
}
|
|
296
325
|
|
|
297
326
|
/**
|
|
298
|
-
* Returns the result of the effect as a texture node.
|
|
327
|
+
* Returns the GI result of the effect as a texture node.
|
|
299
328
|
*
|
|
300
|
-
* @return {PassTextureNode} A texture node that represents the result of the effect.
|
|
329
|
+
* @return {PassTextureNode} A texture node that represents the GI result of the effect.
|
|
301
330
|
*/
|
|
302
|
-
|
|
331
|
+
getGINode() {
|
|
303
332
|
|
|
304
|
-
return this.
|
|
333
|
+
return this._giNode;
|
|
305
334
|
|
|
306
335
|
}
|
|
307
336
|
|
|
@@ -357,9 +386,9 @@ class SSGINode extends TempNode {
|
|
|
357
386
|
_quadMesh.material = this._material;
|
|
358
387
|
_quadMesh.name = 'SSGI';
|
|
359
388
|
|
|
360
|
-
// clear
|
|
389
|
+
// clear (white for the AO attachement)
|
|
361
390
|
|
|
362
|
-
renderer.setClearColor(
|
|
391
|
+
renderer.setClearColor( 0xffffff, 1 );
|
|
363
392
|
|
|
364
393
|
// gi
|
|
365
394
|
|
|
@@ -380,6 +409,14 @@ class SSGINode extends TempNode {
|
|
|
380
409
|
*/
|
|
381
410
|
setup( builder ) {
|
|
382
411
|
|
|
412
|
+
const renderer = builder.renderer;
|
|
413
|
+
|
|
414
|
+
if ( renderer.backend.isWebGPUBackend === true && renderer.hasFeature( 'rg11b10ufloat-renderable' ) === false ) {
|
|
415
|
+
|
|
416
|
+
console.error( 'THREE.SSGINode: The device does not support the "rg11b10ufloat-renderable" feature which is required for SSGI.' );
|
|
417
|
+
|
|
418
|
+
}
|
|
419
|
+
|
|
383
420
|
const uvNode = uv();
|
|
384
421
|
const MAX_RAY = uint( 32 );
|
|
385
422
|
const globalOccludedBitfield = uint( 0 );
|
|
@@ -435,29 +472,15 @@ class SSGINode extends TempNode {
|
|
|
435
472
|
]
|
|
436
473
|
} );
|
|
437
474
|
|
|
438
|
-
const horizonSampling = Fn( ( [ directionIsRight,
|
|
475
|
+
const horizonSampling = Fn( ( [ directionIsRight, stepRadius, radiusVS, viewPosition, slideDirTexelSize, initialRayStep, uvNode, viewDir, viewNormal, n ] ) => {
|
|
439
476
|
|
|
440
477
|
const STEP_COUNT = this.stepCount.toConst();
|
|
441
478
|
const EXP_FACTOR = this.expFactor.toConst();
|
|
442
479
|
const THICKNESS = this.thickness.toConst();
|
|
443
480
|
const BACKFACE_LIGHTING = this.backfaceLighting.toConst();
|
|
444
481
|
|
|
445
|
-
const
|
|
446
|
-
|
|
447
|
-
If( this.useScreenSpaceSampling.equal( true ), () => {
|
|
448
|
-
|
|
449
|
-
stepRadius.assign( RADIUS.mul( this._resolution.x.div( 2 ) ).div( float( 16 ) ) ); // SSRT3 has a bug where stepRadius is divided by STEP_COUNT twice; fix here
|
|
450
|
-
|
|
451
|
-
} ).Else( () => {
|
|
452
|
-
|
|
453
|
-
stepRadius.assign( max( RADIUS.mul( this._halfProjScale ).div( viewPosition.z.negate() ), float( STEP_COUNT ) ) ); // Port note: viewZ is negative so a negate is required
|
|
454
|
-
|
|
455
|
-
} );
|
|
456
|
-
|
|
457
|
-
stepRadius.divAssign( float( STEP_COUNT ).add( 1 ) );
|
|
458
|
-
const radiusVS = max( 1, float( STEP_COUNT.sub( 1 ) ) ).mul( stepRadius );
|
|
459
|
-
const uvDirection = directionIsRight.equal( true ).select( vec2( 1, - 1 ), vec2( - 1, 1 ) ); // Port note: Because of different uv conventions, uv-y has a different sign
|
|
460
|
-
const samplingDirection = directionIsRight.equal( true ).select( 1, - 1 );
|
|
482
|
+
const uvDirection = directionIsRight.select( vec2( 1, - 1 ), vec2( - 1, 1 ) ); // Port note: Because of different uv conventions, uv-y has a different sign
|
|
483
|
+
const samplingDirection = directionIsRight.select( 1, - 1 );
|
|
461
484
|
|
|
462
485
|
const color = vec3( 0 );
|
|
463
486
|
|
|
@@ -475,13 +498,13 @@ class SSGINode extends TempNode {
|
|
|
475
498
|
|
|
476
499
|
const sampleViewPosition = getViewPosition( sampleUV, sampleDepth( sampleUV ), this._cameraProjectionMatrixInverse ).toConst();
|
|
477
500
|
const pixelToSample = sampleViewPosition.sub( viewPosition ).normalize().toConst();
|
|
478
|
-
const linearThicknessMultiplier = this.useLinearThickness.
|
|
501
|
+
const linearThicknessMultiplier = this.useLinearThickness.select( sampleViewPosition.z.negate().div( this._cameraFar ).clamp().mul( 100 ), float( 1 ) );
|
|
479
502
|
const pixelToSampleBackface = normalize( sampleViewPosition.sub( linearThicknessMultiplier.mul( viewDir ).mul( THICKNESS ) ).sub( viewPosition ) );
|
|
480
503
|
|
|
481
504
|
let frontBackHorizon = vec2( dot( pixelToSample, viewDir ), dot( pixelToSampleBackface, viewDir ) );
|
|
482
505
|
frontBackHorizon = GTAOFastAcos( clamp( frontBackHorizon, - 1, 1 ) );
|
|
483
506
|
frontBackHorizon = clamp( div( mul( samplingDirection, frontBackHorizon.negate() ).sub( n.sub( HALF_PI ) ), PI ) ); // Port note: subtract half pi instead of adding it
|
|
484
|
-
frontBackHorizon = directionIsRight.
|
|
507
|
+
frontBackHorizon = directionIsRight.select( frontBackHorizon.yx, frontBackHorizon.xy ); // Front/Back get inverted depending on angle
|
|
485
508
|
|
|
486
509
|
// inline ComputeOccludedBitfield() for easier debugging
|
|
487
510
|
|
|
@@ -529,10 +552,15 @@ class SSGINode extends TempNode {
|
|
|
529
552
|
|
|
530
553
|
} );
|
|
531
554
|
|
|
532
|
-
return
|
|
555
|
+
return color;
|
|
533
556
|
|
|
534
557
|
} );
|
|
535
558
|
|
|
559
|
+
const aoField = property( 'float' );
|
|
560
|
+
const giField = property( 'vec3' );
|
|
561
|
+
|
|
562
|
+
const outputNode = outputStruct( aoField, giField );
|
|
563
|
+
|
|
536
564
|
const gi = Fn( () => {
|
|
537
565
|
|
|
538
566
|
const depth = sampleDepth( uvNode ).toVar();
|
|
@@ -554,10 +582,28 @@ class SSGINode extends TempNode {
|
|
|
554
582
|
const color = vec3( 0 );
|
|
555
583
|
|
|
556
584
|
const ROTATION_COUNT = this.sliceCount.toConst();
|
|
585
|
+
const STEP_COUNT = this.stepCount.toConst();
|
|
557
586
|
const AO_INTENSITY = this.aoIntensity.toConst();
|
|
558
587
|
const GI_INTENSITY = this.giIntensity.toConst();
|
|
559
588
|
const RADIUS = this.radius.toConst();
|
|
560
589
|
|
|
590
|
+
const stepRadius = float( 0 ).toVar();
|
|
591
|
+
|
|
592
|
+
If( this.useScreenSpaceSampling, () => {
|
|
593
|
+
|
|
594
|
+
stepRadius.assign( RADIUS.mul( this._resolution.x.div( 2 ) ).div( float( 16 ) ) ); // SSRT3 has a bug where stepRadius is divided by STEP_COUNT twice; fix here
|
|
595
|
+
|
|
596
|
+
} ).Else( () => {
|
|
597
|
+
|
|
598
|
+
stepRadius.assign( max( RADIUS.mul( this._halfProjScale ).div( viewPosition.z.negate() ), float( STEP_COUNT ) ) ); // Port note: viewZ is negative so a negate is required
|
|
599
|
+
|
|
600
|
+
} );
|
|
601
|
+
|
|
602
|
+
stepRadius.divAssign( float( STEP_COUNT ).add( 1 ) );
|
|
603
|
+
const radiusVS = max( 1, float( STEP_COUNT.sub( 1 ) ) ).mul( stepRadius ).toConst();
|
|
604
|
+
|
|
605
|
+
//
|
|
606
|
+
|
|
561
607
|
Loop( { start: uint( 0 ), end: ROTATION_COUNT, type: 'uint', condition: '<' }, ( { i } ) => {
|
|
562
608
|
|
|
563
609
|
const rotationAngle = mul( float( i ).add( noiseDirection ).add( this._temporalDirection ), PI.div( float( ROTATION_COUNT ) ) ).toConst();
|
|
@@ -574,8 +620,8 @@ class SSGINode extends TempNode {
|
|
|
574
620
|
|
|
575
621
|
globalOccludedBitfield.assign( 0 );
|
|
576
622
|
|
|
577
|
-
color.addAssign( horizonSampling( bool( true ),
|
|
578
|
-
color.addAssign( horizonSampling( bool( false ),
|
|
623
|
+
color.addAssign( horizonSampling( bool( true ), stepRadius, radiusVS, viewPosition, slideDirTexelSize, initialRayStep, uvNode, viewDir, viewNormal, n ) );
|
|
624
|
+
color.addAssign( horizonSampling( bool( false ), stepRadius, radiusVS, viewPosition, slideDirTexelSize, initialRayStep, uvNode, viewDir, viewNormal, n ) );
|
|
579
625
|
|
|
580
626
|
ao.addAssign( float( countOneBits( globalOccludedBitfield ) ).div( float( MAX_RAY ) ) );
|
|
581
627
|
|
|
@@ -595,16 +641,20 @@ class SSGINode extends TempNode {
|
|
|
595
641
|
const scale = currentLuminance.greaterThan( maxLuminance ).select( maxLuminance.div( currentLuminance ), float( 1 ) );
|
|
596
642
|
color.mulAssign( scale );
|
|
597
643
|
|
|
598
|
-
|
|
644
|
+
aoField.assign( ao );
|
|
645
|
+
giField.assign( color );
|
|
646
|
+
|
|
647
|
+
return vec4( 0 );
|
|
599
648
|
|
|
600
649
|
} );
|
|
601
650
|
|
|
602
|
-
this._material.
|
|
651
|
+
this._material.colorNode = gi().context( builder.getSharedContext() );
|
|
652
|
+
this._material.outputNode = outputNode;
|
|
603
653
|
this._material.needsUpdate = true;
|
|
604
654
|
|
|
605
655
|
//
|
|
606
656
|
|
|
607
|
-
return this.
|
|
657
|
+
return this._aoNode;
|
|
608
658
|
|
|
609
659
|
}
|
|
610
660
|
|