@plastic-software/three 0.179.0 → 0.181.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +1108 -591
- package/build/three.core.js +616 -345
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +488 -250
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +37 -6
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6576 -2152
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6575 -2151
- 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 +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +8 -8
- 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 +1 -1
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- 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 +9 -2
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- 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 +6 -10
- 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/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 +3 -3
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- 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 +22 -5
- 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 +4 -4
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- 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/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +1 -1
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- 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 +1 -1
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
- package/examples/jsm/transpiler/TSLEncoder.js +9 -10
- package/examples/jsm/transpiler/WGSLEncoder.js +24 -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 +7 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
- 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 +49 -35
- package/examples/jsm/tsl/display/OutlineNode.js +13 -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 +124 -7
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- 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 +4 -2
- package/src/Three.TSL.js +36 -5
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +2 -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 +7 -6
- package/src/animation/PropertyBinding.js +12 -11
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +11 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +3 -2
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- 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 +268 -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/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 +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 +3 -2
- package/src/loaders/ImageBitmapLoader.js +5 -4
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +3 -3
- package/src/loaders/LoadingManager.js +25 -3
- 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 +1 -0
- 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 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/NodeMaterial.js +62 -22
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
- 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/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +7 -7
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +68 -66
- package/src/math/Spherical.js +1 -1
- package/src/nodes/Nodes.js +4 -1
- package/src/nodes/TSL.js +4 -1
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +133 -7
- 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 +5 -4
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +18 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +3 -2
- package/src/nodes/accessors/SceneNode.js +2 -1
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureNode.js +130 -44
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +1 -0
- package/src/nodes/core/AssignNode.js +4 -3
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +29 -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} +40 -7
- package/src/nodes/core/Node.js +152 -31
- package/src/nodes/core/NodeBuilder.js +183 -35
- 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 -91
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +43 -16
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformNode.js +18 -10
- package/src/nodes/core/VarNode.js +70 -33
- package/src/nodes/core/VaryingNode.js +3 -2
- package/src/nodes/display/BlendModes.js +5 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +2 -1
- package/src/nodes/display/PassNode.js +52 -11
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -14
- 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 +42 -12
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +3 -2
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +17 -5
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +6 -6
- package/src/nodes/lighting/LightsNode.js +3 -4
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ShadowFilterNode.js +2 -0
- package/src/nodes/lighting/ShadowNode.js +75 -8
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +24 -7
- package/src/nodes/math/MathNode.js +25 -19
- package/src/nodes/math/OperatorNode.js +7 -5
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +5 -2
- package/src/nodes/tsl/TSLCore.js +460 -159
- package/src/nodes/utils/DebugNode.js +2 -1
- package/src/nodes/utils/EventNode.js +36 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +13 -3
- package/src/nodes/utils/ReflectorNode.js +58 -7
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/objects/BatchedMesh.js +2 -2
- 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 +48 -41
- 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 +2 -1
- package/src/renderers/common/Bindings.js +58 -2
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.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 +6 -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 +16 -2
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +473 -245
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +50 -12
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +121 -45
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +42 -22
- package/src/renderers/common/extras/PMREMGenerator.js +160 -65
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- 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 +7 -15
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLCapabilities.js +2 -1
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +15 -14
- package/src/renderers/webgl/WebGLPrograms.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +15 -14
- package/src/renderers/webgl/WebGLTextures.js +19 -14
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -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 +153 -123
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
- package/src/renderers/webxr/WebXRManager.js +42 -26
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/Source.js +3 -2
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { error } from '../../utils.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* This renderer module provides a series of statistical information
|
|
3
5
|
* about the GPU memory and the rendering process. Useful for debugging
|
|
@@ -52,7 +54,7 @@ class Info {
|
|
|
52
54
|
* @property {number} triangles - The number of rendered triangle primitives of the current frame.
|
|
53
55
|
* @property {number} points - The number of rendered point primitives of the current frame.
|
|
54
56
|
* @property {number} lines - The number of rendered line primitives of the current frame.
|
|
55
|
-
* @property {number} timestamp - The timestamp of the frame
|
|
57
|
+
* @property {number} timestamp - The timestamp of the frame.
|
|
56
58
|
*/
|
|
57
59
|
this.render = {
|
|
58
60
|
calls: 0,
|
|
@@ -123,7 +125,7 @@ class Info {
|
|
|
123
125
|
|
|
124
126
|
} else {
|
|
125
127
|
|
|
126
|
-
|
|
128
|
+
error( 'WebGPUInfo: Unknown object type.' );
|
|
127
129
|
|
|
128
130
|
}
|
|
129
131
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InspectorBase is the base class for all inspectors.
|
|
3
|
+
*
|
|
4
|
+
* @class InspectorBase
|
|
5
|
+
*/
|
|
6
|
+
class InspectorBase {
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Creates a new InspectorBase.
|
|
10
|
+
*/
|
|
11
|
+
constructor() {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* The renderer associated with this inspector.
|
|
15
|
+
*
|
|
16
|
+
* @type {WebGLRenderer}
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
this._renderer = null;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The current frame being processed.
|
|
23
|
+
*
|
|
24
|
+
* @type {Object}
|
|
25
|
+
*/
|
|
26
|
+
this.currentFrame = null;
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Returns the node frame for the current renderer.
|
|
32
|
+
*
|
|
33
|
+
* @return {Object} The node frame.
|
|
34
|
+
*/
|
|
35
|
+
get nodeFrame() {
|
|
36
|
+
|
|
37
|
+
return this._renderer._nodes.nodeFrame;
|
|
38
|
+
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Sets the renderer for this inspector.
|
|
43
|
+
*
|
|
44
|
+
* @param {WebGLRenderer} renderer - The renderer to associate with this inspector.
|
|
45
|
+
* @return {InspectorBase} This inspector instance.
|
|
46
|
+
*/
|
|
47
|
+
setRenderer( renderer ) {
|
|
48
|
+
|
|
49
|
+
this._renderer = renderer;
|
|
50
|
+
|
|
51
|
+
return this;
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Returns the renderer associated with this inspector.
|
|
57
|
+
*
|
|
58
|
+
* @return {WebGLRenderer} The associated renderer.
|
|
59
|
+
*/
|
|
60
|
+
getRenderer() {
|
|
61
|
+
|
|
62
|
+
return this._renderer;
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Initializes the inspector.
|
|
68
|
+
*/
|
|
69
|
+
init() { }
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Called when a frame begins.
|
|
73
|
+
*/
|
|
74
|
+
begin() { }
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Called when a frame ends.
|
|
78
|
+
*/
|
|
79
|
+
finish() { }
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Inspects a node.
|
|
83
|
+
*
|
|
84
|
+
* @param {Node} node - The node to inspect.
|
|
85
|
+
*/
|
|
86
|
+
inspect( /*node*/ ) { }
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* When a compute operation is performed.
|
|
90
|
+
*
|
|
91
|
+
* @param {ComputeNode} computeNode - The compute node being executed.
|
|
92
|
+
* @param {number|Array<number>} dispatchSizeOrCount - The dispatch size or count.
|
|
93
|
+
*/
|
|
94
|
+
computeAsync( /*computeNode, dispatchSizeOrCount*/ ) { }
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Called when a compute operation begins.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} uid - A unique identifier for the render context.
|
|
100
|
+
* @param {ComputeNode} computeNode - The compute node being executed.
|
|
101
|
+
*/
|
|
102
|
+
beginCompute( /*uid, computeNode*/ ) { }
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Called when a compute operation ends.
|
|
106
|
+
*
|
|
107
|
+
* @param {string} uid - A unique identifier for the render context.
|
|
108
|
+
* @param {ComputeNode} computeNode - The compute node being executed.
|
|
109
|
+
*/
|
|
110
|
+
finishCompute( /*uid*/ ) { }
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Called when a render operation begins.
|
|
114
|
+
*
|
|
115
|
+
* @param {string} uid - A unique identifier for the render context.
|
|
116
|
+
* @param {Scene} scene - The scene being rendered.
|
|
117
|
+
* @param {Camera} camera - The camera being used for rendering.
|
|
118
|
+
* @param {?WebGLRenderTarget} renderTarget - The render target, if any.
|
|
119
|
+
*/
|
|
120
|
+
beginRender( /*uid, scene, camera, renderTarget*/ ) { }
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Called when an animation loop ends.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} uid - A unique identifier for the render context.
|
|
126
|
+
*/
|
|
127
|
+
finishRender( /*uid*/ ) { }
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Called when a texture copy operation is performed.
|
|
131
|
+
*
|
|
132
|
+
* @param {Texture} srcTexture - The source texture.
|
|
133
|
+
* @param {Texture} dstTexture - The destination texture.
|
|
134
|
+
*/
|
|
135
|
+
copyTextureToTexture( /*srcTexture, dstTexture*/ ) { }
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Called when a framebuffer copy operation is performed.
|
|
139
|
+
*
|
|
140
|
+
* @param {Texture} framebufferTexture - The texture associated with the framebuffer.
|
|
141
|
+
*/
|
|
142
|
+
copyFramebufferToTexture( /*framebufferTexture*/ ) { }
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export default InspectorBase;
|
|
@@ -58,7 +58,7 @@ class Pipelines extends DataMap {
|
|
|
58
58
|
* fragment and compute) the programmable stage objects which
|
|
59
59
|
* represent the actual shader code.
|
|
60
60
|
*
|
|
61
|
-
* @type {Object<string,Map
|
|
61
|
+
* @type {Object<string,Map<string, ProgrammableStage>>}
|
|
62
62
|
*/
|
|
63
63
|
this.programs = {
|
|
64
64
|
vertex: new Map(),
|
|
@@ -3,6 +3,7 @@ import { ColorManagement } from '../../math/ColorManagement.js';
|
|
|
3
3
|
import { vec4, renderOutput } from '../../nodes/TSL.js';
|
|
4
4
|
import { NoToneMapping } from '../../constants.js';
|
|
5
5
|
import QuadMesh from '../../renderers/common/QuadMesh.js';
|
|
6
|
+
import { warnOnce } from '../../utils.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* This module is responsible to manage the post processing setups in apps.
|
|
@@ -82,6 +83,7 @@ class PostProcessing {
|
|
|
82
83
|
* @type {QuadMesh}
|
|
83
84
|
*/
|
|
84
85
|
this._quadMesh = new QuadMesh( material );
|
|
86
|
+
this._quadMesh.name = 'Post-Processing';
|
|
85
87
|
|
|
86
88
|
/**
|
|
87
89
|
* The context of the post processing stack.
|
|
@@ -206,37 +208,16 @@ class PostProcessing {
|
|
|
206
208
|
* its animation loop (not the one from the renderer).
|
|
207
209
|
*
|
|
208
210
|
* @async
|
|
211
|
+
* @deprecated
|
|
209
212
|
* @return {Promise} A Promise that resolves when the render has been finished.
|
|
210
213
|
*/
|
|
211
214
|
async renderAsync() {
|
|
212
215
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
if ( this._context.onBeforePostProcessing !== null ) this._context.onBeforePostProcessing();
|
|
216
|
-
|
|
217
|
-
const renderer = this.renderer;
|
|
218
|
-
|
|
219
|
-
const toneMapping = renderer.toneMapping;
|
|
220
|
-
const outputColorSpace = renderer.outputColorSpace;
|
|
221
|
-
|
|
222
|
-
renderer.toneMapping = NoToneMapping;
|
|
223
|
-
renderer.outputColorSpace = ColorManagement.workingColorSpace;
|
|
224
|
-
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
const currentXR = renderer.xr.enabled;
|
|
228
|
-
renderer.xr.enabled = false;
|
|
229
|
-
|
|
230
|
-
await this._quadMesh.renderAsync( renderer );
|
|
231
|
-
|
|
232
|
-
renderer.xr.enabled = currentXR;
|
|
233
|
-
|
|
234
|
-
//
|
|
216
|
+
warnOnce( 'PostProcessing: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
|
|
235
217
|
|
|
236
|
-
renderer.
|
|
237
|
-
renderer.outputColorSpace = outputColorSpace;
|
|
218
|
+
await this.renderer.init();
|
|
238
219
|
|
|
239
|
-
|
|
220
|
+
this.render();
|
|
240
221
|
|
|
241
222
|
}
|
|
242
223
|
|
|
@@ -2,6 +2,7 @@ import { BufferGeometry } from '../../core/BufferGeometry.js';
|
|
|
2
2
|
import { Float32BufferAttribute } from '../../core/BufferAttribute.js';
|
|
3
3
|
import { Mesh } from '../../objects/Mesh.js';
|
|
4
4
|
import { OrthographicCamera } from '../../cameras/OrthographicCamera.js';
|
|
5
|
+
import { warnOnce } from '../../utils.js';
|
|
5
6
|
|
|
6
7
|
const _camera = /*@__PURE__*/ new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
7
8
|
|
|
@@ -81,12 +82,17 @@ class QuadMesh extends Mesh {
|
|
|
81
82
|
* Async version of `render()`.
|
|
82
83
|
*
|
|
83
84
|
* @async
|
|
85
|
+
* @deprecated
|
|
84
86
|
* @param {Renderer} renderer - The renderer.
|
|
85
87
|
* @return {Promise} A Promise that resolves when the render has been finished.
|
|
86
88
|
*/
|
|
87
89
|
async renderAsync( renderer ) {
|
|
88
90
|
|
|
89
|
-
|
|
91
|
+
warnOnce( 'QuadMesh: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
|
|
92
|
+
|
|
93
|
+
await renderer.init();
|
|
94
|
+
|
|
95
|
+
renderer.render( this, _camera );
|
|
90
96
|
|
|
91
97
|
}
|
|
92
98
|
|
|
@@ -248,9 +248,9 @@ class RenderContext {
|
|
|
248
248
|
*/
|
|
249
249
|
export function getCacheKey( renderContext ) {
|
|
250
250
|
|
|
251
|
-
const { textures, activeCubeFace } = renderContext;
|
|
251
|
+
const { textures, activeCubeFace, activeMipmapLevel } = renderContext;
|
|
252
252
|
|
|
253
|
-
const values = [ activeCubeFace ];
|
|
253
|
+
const values = [ activeCubeFace, activeMipmapLevel ];
|
|
254
254
|
|
|
255
255
|
for ( const texture of textures ) {
|
|
256
256
|
|
|
@@ -72,7 +72,7 @@ function reversePainterSortStable( a, b ) {
|
|
|
72
72
|
*/
|
|
73
73
|
function needsDoublePass( material ) {
|
|
74
74
|
|
|
75
|
-
const hasTransmission = material.transmission > 0 || material.transmissionNode;
|
|
75
|
+
const hasTransmission = material.transmission > 0 || ( material.transmissionNode && material.transmissionNode.isNode );
|
|
76
76
|
|
|
77
77
|
return hasTransmission && material.side === DoubleSide && material.forceSinglePass === false;
|
|
78
78
|
|
|
@@ -283,7 +283,9 @@ class RenderList {
|
|
|
283
283
|
|
|
284
284
|
if ( object.occlusionTest === true ) this.occlusionQueryCount ++;
|
|
285
285
|
|
|
286
|
-
if ( material.transparent === true || material.transmission > 0
|
|
286
|
+
if ( material.transparent === true || material.transmission > 0 ||
|
|
287
|
+
( material.transmissionNode && material.transmissionNode.isNode ) ||
|
|
288
|
+
( material.backdropNode && material.backdropNode.isNode ) ) {
|
|
287
289
|
|
|
288
290
|
if ( needsDoublePass( material ) ) this.transparentDoublePass.push( renderItem );
|
|
289
291
|
|
|
@@ -313,7 +315,9 @@ class RenderList {
|
|
|
313
315
|
|
|
314
316
|
const renderItem = this.getNextRenderItem( object, geometry, material, groupOrder, z, group, clippingContext );
|
|
315
317
|
|
|
316
|
-
if ( material.transparent === true || material.transmission > 0
|
|
318
|
+
if ( material.transparent === true || material.transmission > 0 ||
|
|
319
|
+
( material.transmissionNode && material.transmissionNode.isNode ) ||
|
|
320
|
+
( material.backdropNode && material.backdropNode.isNode ) ) {
|
|
317
321
|
|
|
318
322
|
if ( needsDoublePass( material ) ) this.transparentDoublePass.unshift( renderItem );
|
|
319
323
|
|
|
@@ -682,7 +682,7 @@ class RenderObject {
|
|
|
682
682
|
*/
|
|
683
683
|
getMaterialCacheKey() {
|
|
684
684
|
|
|
685
|
-
const { object, material } = this;
|
|
685
|
+
const { object, material, renderer } = this;
|
|
686
686
|
|
|
687
687
|
let cacheKey = material.customProgramCacheKey();
|
|
688
688
|
|
|
@@ -712,6 +712,18 @@ class RenderObject {
|
|
|
712
712
|
|
|
713
713
|
valueKey += value.mapping;
|
|
714
714
|
|
|
715
|
+
// WebGPU must honor the sampler data because they are part of the bindings
|
|
716
|
+
|
|
717
|
+
if ( renderer.backend.isWebGPUBackend === true ) {
|
|
718
|
+
|
|
719
|
+
valueKey += value.magFilter;
|
|
720
|
+
valueKey += value.minFilter;
|
|
721
|
+
valueKey += value.wrapS;
|
|
722
|
+
valueKey += value.wrapT;
|
|
723
|
+
valueKey += value.wrapR;
|
|
724
|
+
|
|
725
|
+
}
|
|
726
|
+
|
|
715
727
|
}
|
|
716
728
|
|
|
717
729
|
valueKey += '}';
|
|
@@ -758,7 +770,7 @@ class RenderObject {
|
|
|
758
770
|
|
|
759
771
|
}
|
|
760
772
|
|
|
761
|
-
if ( object.count > 1 ) {
|
|
773
|
+
if ( object.isInstancedMesh || object.count > 1 || Array.isArray( object.morphTargetInfluences ) ) {
|
|
762
774
|
|
|
763
775
|
// TODO: https://github.com/mrdoob/three.js/pull/29066#issuecomment-2269400850
|
|
764
776
|
|
|
@@ -857,6 +869,8 @@ class RenderObject {
|
|
|
857
869
|
|
|
858
870
|
}
|
|
859
871
|
|
|
872
|
+
cacheKey = hash( cacheKey, this.camera.id );
|
|
873
|
+
|
|
860
874
|
return cacheKey;
|
|
861
875
|
|
|
862
876
|
}
|
|
@@ -185,7 +185,7 @@ class RenderObjects {
|
|
|
185
185
|
renderObject.onDispose = () => {
|
|
186
186
|
|
|
187
187
|
this.pipelines.delete( renderObject );
|
|
188
|
-
this.bindings.
|
|
188
|
+
this.bindings.deleteForRender( renderObject );
|
|
189
189
|
this.nodes.delete( renderObject );
|
|
190
190
|
|
|
191
191
|
chainMap.delete( renderObject.getChainArray() );
|