super-three 0.177.0 → 0.181.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -153,6 +153,40 @@ class Bindings extends DataMap {
|
|
|
153
153
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
+
/**
|
|
157
|
+
* Deletes the bindings for the given compute node.
|
|
158
|
+
*
|
|
159
|
+
* @param {Node} computeNode - The compute node.
|
|
160
|
+
*/
|
|
161
|
+
deleteForCompute( computeNode ) {
|
|
162
|
+
|
|
163
|
+
const bindings = this.nodes.getForCompute( computeNode ).bindings;
|
|
164
|
+
|
|
165
|
+
for ( const bindGroup of bindings ) {
|
|
166
|
+
|
|
167
|
+
this.delete( bindGroup );
|
|
168
|
+
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Deletes the bindings for the given renderObject node.
|
|
175
|
+
*
|
|
176
|
+
* @param {RenderObject} renderObject - The renderObject.
|
|
177
|
+
*/
|
|
178
|
+
deleteForRender( renderObject ) {
|
|
179
|
+
|
|
180
|
+
const bindings = renderObject.getBindings();
|
|
181
|
+
|
|
182
|
+
for ( const bindGroup of bindings ) {
|
|
183
|
+
|
|
184
|
+
this.delete( bindGroup );
|
|
185
|
+
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
|
|
156
190
|
/**
|
|
157
191
|
* Updates the given array of bindings.
|
|
158
192
|
*
|
|
@@ -181,6 +215,10 @@ class Bindings extends DataMap {
|
|
|
181
215
|
|
|
182
216
|
this.textures.updateTexture( binding.texture );
|
|
183
217
|
|
|
218
|
+
} else if ( binding.isSampler ) {
|
|
219
|
+
|
|
220
|
+
this.textures.updateSampler( binding.texture );
|
|
221
|
+
|
|
184
222
|
} else if ( binding.isStorageBuffer ) {
|
|
185
223
|
|
|
186
224
|
const attribute = binding.attribute;
|
|
@@ -244,24 +282,33 @@ class Bindings extends DataMap {
|
|
|
244
282
|
|
|
245
283
|
}
|
|
246
284
|
|
|
247
|
-
} else if ( binding.isSampler ) {
|
|
248
|
-
|
|
249
|
-
binding.update();
|
|
250
|
-
|
|
251
285
|
} else if ( binding.isSampledTexture ) {
|
|
252
286
|
|
|
253
|
-
const texturesTextureData = this.textures.get( binding.texture );
|
|
254
|
-
|
|
255
|
-
if ( binding.needsBindingsUpdate( texturesTextureData.generation ) ) needsBindingsUpdate = true;
|
|
256
|
-
|
|
257
287
|
const updated = binding.update();
|
|
258
288
|
|
|
289
|
+
// get the texture data after the update, to sync the texture reference from node
|
|
290
|
+
|
|
259
291
|
const texture = binding.texture;
|
|
292
|
+
const texturesTextureData = this.textures.get( texture );
|
|
260
293
|
|
|
261
294
|
if ( updated ) {
|
|
262
295
|
|
|
296
|
+
// version: update the texture data or create a new one
|
|
297
|
+
|
|
263
298
|
this.textures.updateTexture( texture );
|
|
264
299
|
|
|
300
|
+
// generation: update the bindings if a new texture has been created
|
|
301
|
+
|
|
302
|
+
if ( binding.generation !== texturesTextureData.generation ) {
|
|
303
|
+
|
|
304
|
+
binding.generation = texturesTextureData.generation;
|
|
305
|
+
|
|
306
|
+
needsBindingsUpdate = true;
|
|
307
|
+
|
|
308
|
+
cacheBindings = false;
|
|
309
|
+
|
|
310
|
+
}
|
|
311
|
+
|
|
265
312
|
}
|
|
266
313
|
|
|
267
314
|
const textureData = backend.get( texture );
|
|
@@ -277,17 +324,7 @@ class Bindings extends DataMap {
|
|
|
277
324
|
|
|
278
325
|
}
|
|
279
326
|
|
|
280
|
-
if (
|
|
281
|
-
|
|
282
|
-
// TODO: Remove this once we found why updated === false isn't bound to a texture in the WebGPU backend
|
|
283
|
-
console.error( 'Bindings._update: binding should be available:', binding, updated, texture, binding.textureNode.value, needsBindingsUpdate );
|
|
284
|
-
|
|
285
|
-
this.textures.updateTexture( texture );
|
|
286
|
-
needsBindingsUpdate = true;
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
if ( texture.isStorageTexture === true ) {
|
|
327
|
+
if ( texture.isStorageTexture === true && texture.mipmapsAutoUpdate === true ) {
|
|
291
328
|
|
|
292
329
|
const textureData = this.get( texture );
|
|
293
330
|
|
|
@@ -305,6 +342,26 @@ class Bindings extends DataMap {
|
|
|
305
342
|
|
|
306
343
|
}
|
|
307
344
|
|
|
345
|
+
} else if ( binding.isSampler ) {
|
|
346
|
+
|
|
347
|
+
const updated = binding.update();
|
|
348
|
+
|
|
349
|
+
if ( updated ) {
|
|
350
|
+
|
|
351
|
+
const samplerKey = this.textures.updateSampler( binding.texture );
|
|
352
|
+
|
|
353
|
+
if ( binding.samplerKey !== samplerKey ) {
|
|
354
|
+
|
|
355
|
+
binding.samplerKey = samplerKey;
|
|
356
|
+
|
|
357
|
+
needsBindingsUpdate = true;
|
|
358
|
+
|
|
359
|
+
cacheBindings = false;
|
|
360
|
+
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
}
|
|
364
|
+
|
|
308
365
|
}
|
|
309
366
|
|
|
310
367
|
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
2
|
+
import { Vector4 } from '../../math/Vector4.js';
|
|
3
|
+
import { FramebufferTexture } from '../../textures/FramebufferTexture.js';
|
|
4
|
+
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* CanvasTarget is a class that represents the final output destination of the renderer.
|
|
8
|
+
*
|
|
9
|
+
* @augments EventDispatcher
|
|
10
|
+
*/
|
|
11
|
+
class CanvasTarget extends EventDispatcher {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Constructs a new CanvasTarget.
|
|
15
|
+
*
|
|
16
|
+
* @param {HTMLCanvasElement|OffscreenCanvas} domElement - The canvas element to render to.
|
|
17
|
+
*/
|
|
18
|
+
constructor( domElement ) {
|
|
19
|
+
|
|
20
|
+
super();
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* A reference to the canvas element the renderer is drawing to.
|
|
24
|
+
* This value of this property will automatically be created by
|
|
25
|
+
* the renderer.
|
|
26
|
+
*
|
|
27
|
+
* @type {HTMLCanvasElement|OffscreenCanvas}
|
|
28
|
+
*/
|
|
29
|
+
this.domElement = domElement;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The renderer's pixel ratio.
|
|
33
|
+
*
|
|
34
|
+
* @private
|
|
35
|
+
* @type {number}
|
|
36
|
+
* @default 1
|
|
37
|
+
*/
|
|
38
|
+
this._pixelRatio = 1;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The width of the renderer's default framebuffer in logical pixel unit.
|
|
42
|
+
*
|
|
43
|
+
* @private
|
|
44
|
+
* @type {number}
|
|
45
|
+
*/
|
|
46
|
+
this._width = this.domElement.width;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The height of the renderer's default framebuffer in logical pixel unit.
|
|
50
|
+
*
|
|
51
|
+
* @private
|
|
52
|
+
* @type {number}
|
|
53
|
+
*/
|
|
54
|
+
this._height = this.domElement.height;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The viewport of the renderer in logical pixel unit.
|
|
58
|
+
*
|
|
59
|
+
* @private
|
|
60
|
+
* @type {Vector4}
|
|
61
|
+
*/
|
|
62
|
+
this._viewport = new Vector4( 0, 0, this._width, this._height );
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The scissor rectangle of the renderer in logical pixel unit.
|
|
66
|
+
*
|
|
67
|
+
* @private
|
|
68
|
+
* @type {Vector4}
|
|
69
|
+
*/
|
|
70
|
+
this._scissor = new Vector4( 0, 0, this._width, this._height );
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Whether the scissor test should be enabled or not.
|
|
74
|
+
*
|
|
75
|
+
* @private
|
|
76
|
+
* @type {boolean}
|
|
77
|
+
*/
|
|
78
|
+
this._scissorTest = false;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The color texture of the default framebuffer.
|
|
82
|
+
*
|
|
83
|
+
* @type {FramebufferTexture}
|
|
84
|
+
*/
|
|
85
|
+
this.colorTexture = new FramebufferTexture();
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The depth texture of the default framebuffer.
|
|
89
|
+
*
|
|
90
|
+
* @type {DepthTexture}
|
|
91
|
+
*/
|
|
92
|
+
this.depthTexture = new DepthTexture();
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Returns the pixel ratio.
|
|
98
|
+
*
|
|
99
|
+
* @return {number} The pixel ratio.
|
|
100
|
+
*/
|
|
101
|
+
getPixelRatio() {
|
|
102
|
+
|
|
103
|
+
return this._pixelRatio;
|
|
104
|
+
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
|
|
109
|
+
*
|
|
110
|
+
* @param {Vector2} target - The method writes the result in this target object.
|
|
111
|
+
* @return {Vector2} The drawing buffer size.
|
|
112
|
+
*/
|
|
113
|
+
getDrawingBufferSize( target ) {
|
|
114
|
+
|
|
115
|
+
return target.set( this._width * this._pixelRatio, this._height * this._pixelRatio ).floor();
|
|
116
|
+
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
|
|
121
|
+
*
|
|
122
|
+
* @param {Vector2} target - The method writes the result in this target object.
|
|
123
|
+
* @return {Vector2} The renderer's size in logical pixels.
|
|
124
|
+
*/
|
|
125
|
+
getSize( target ) {
|
|
126
|
+
|
|
127
|
+
return target.set( this._width, this._height );
|
|
128
|
+
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Sets the given pixel ratio and resizes the canvas if necessary.
|
|
133
|
+
*
|
|
134
|
+
* @param {number} [value=1] - The pixel ratio.
|
|
135
|
+
*/
|
|
136
|
+
setPixelRatio( value = 1 ) {
|
|
137
|
+
|
|
138
|
+
if ( this._pixelRatio === value ) return;
|
|
139
|
+
|
|
140
|
+
this._pixelRatio = value;
|
|
141
|
+
|
|
142
|
+
this.setSize( this._width, this._height, false );
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* This method allows to define the drawing buffer size by specifying
|
|
148
|
+
* width, height and pixel ratio all at once. The size of the drawing
|
|
149
|
+
* buffer is computed with this formula:
|
|
150
|
+
* ```js
|
|
151
|
+
* size.x = width * pixelRatio;
|
|
152
|
+
* size.y = height * pixelRatio;
|
|
153
|
+
* ```
|
|
154
|
+
*
|
|
155
|
+
* @param {number} width - The width in logical pixels.
|
|
156
|
+
* @param {number} height - The height in logical pixels.
|
|
157
|
+
* @param {number} pixelRatio - The pixel ratio.
|
|
158
|
+
*/
|
|
159
|
+
setDrawingBufferSize( width, height, pixelRatio ) {
|
|
160
|
+
|
|
161
|
+
// Renderer can't be resized while presenting in XR.
|
|
162
|
+
if ( this.xr && this.xr.isPresenting ) return;
|
|
163
|
+
|
|
164
|
+
this._width = width;
|
|
165
|
+
this._height = height;
|
|
166
|
+
|
|
167
|
+
this._pixelRatio = pixelRatio;
|
|
168
|
+
|
|
169
|
+
this.domElement.width = Math.floor( width * pixelRatio );
|
|
170
|
+
this.domElement.height = Math.floor( height * pixelRatio );
|
|
171
|
+
|
|
172
|
+
this.setViewport( 0, 0, width, height );
|
|
173
|
+
|
|
174
|
+
this._dispatchResize();
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Sets the size of the renderer.
|
|
180
|
+
*
|
|
181
|
+
* @param {number} width - The width in logical pixels.
|
|
182
|
+
* @param {number} height - The height in logical pixels.
|
|
183
|
+
* @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
|
|
184
|
+
*/
|
|
185
|
+
setSize( width, height, updateStyle = true ) {
|
|
186
|
+
|
|
187
|
+
// Renderer can't be resized while presenting in XR.
|
|
188
|
+
if ( this.xr && this.xr.isPresenting ) return;
|
|
189
|
+
|
|
190
|
+
this._width = width;
|
|
191
|
+
this._height = height;
|
|
192
|
+
|
|
193
|
+
this.domElement.width = Math.floor( width * this._pixelRatio );
|
|
194
|
+
this.domElement.height = Math.floor( height * this._pixelRatio );
|
|
195
|
+
|
|
196
|
+
if ( updateStyle === true ) {
|
|
197
|
+
|
|
198
|
+
this.domElement.style.width = width + 'px';
|
|
199
|
+
this.domElement.style.height = height + 'px';
|
|
200
|
+
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
this.setViewport( 0, 0, width, height );
|
|
204
|
+
|
|
205
|
+
this._dispatchResize();
|
|
206
|
+
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Returns the scissor rectangle.
|
|
211
|
+
*
|
|
212
|
+
* @param {Vector4} target - The method writes the result in this target object.
|
|
213
|
+
* @return {Vector4} The scissor rectangle.
|
|
214
|
+
*/
|
|
215
|
+
getScissor( target ) {
|
|
216
|
+
|
|
217
|
+
const scissor = this._scissor;
|
|
218
|
+
|
|
219
|
+
target.x = scissor.x;
|
|
220
|
+
target.y = scissor.y;
|
|
221
|
+
target.width = scissor.width;
|
|
222
|
+
target.height = scissor.height;
|
|
223
|
+
|
|
224
|
+
return target;
|
|
225
|
+
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Defines the scissor rectangle.
|
|
230
|
+
*
|
|
231
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the box in logical pixel unit.
|
|
232
|
+
* Instead of passing four arguments, the method also works with a single four-dimensional vector.
|
|
233
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the box in logical pixel unit.
|
|
234
|
+
* @param {number} width - The width of the scissor box in logical pixel unit.
|
|
235
|
+
* @param {number} height - The height of the scissor box in logical pixel unit.
|
|
236
|
+
*/
|
|
237
|
+
setScissor( x, y, width, height ) {
|
|
238
|
+
|
|
239
|
+
const scissor = this._scissor;
|
|
240
|
+
|
|
241
|
+
if ( x.isVector4 ) {
|
|
242
|
+
|
|
243
|
+
scissor.copy( x );
|
|
244
|
+
|
|
245
|
+
} else {
|
|
246
|
+
|
|
247
|
+
scissor.set( x, y, width, height );
|
|
248
|
+
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Returns the scissor test value.
|
|
255
|
+
*
|
|
256
|
+
* @return {boolean} Whether the scissor test should be enabled or not.
|
|
257
|
+
*/
|
|
258
|
+
getScissorTest() {
|
|
259
|
+
|
|
260
|
+
return this._scissorTest;
|
|
261
|
+
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Defines the scissor test.
|
|
266
|
+
*
|
|
267
|
+
* @param {boolean} boolean - Whether the scissor test should be enabled or not.
|
|
268
|
+
*/
|
|
269
|
+
setScissorTest( boolean ) {
|
|
270
|
+
|
|
271
|
+
this._scissorTest = boolean;
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Returns the viewport definition.
|
|
277
|
+
*
|
|
278
|
+
* @param {Vector4} target - The method writes the result in this target object.
|
|
279
|
+
* @return {Vector4} The viewport definition.
|
|
280
|
+
*/
|
|
281
|
+
getViewport( target ) {
|
|
282
|
+
|
|
283
|
+
return target.copy( this._viewport );
|
|
284
|
+
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Defines the viewport.
|
|
289
|
+
*
|
|
290
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
291
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
292
|
+
* @param {number} width - The width of the viewport in logical pixel unit.
|
|
293
|
+
* @param {number} height - The height of the viewport in logical pixel unit.
|
|
294
|
+
* @param {number} minDepth - The minimum depth value of the viewport. WebGPU only.
|
|
295
|
+
* @param {number} maxDepth - The maximum depth value of the viewport. WebGPU only.
|
|
296
|
+
*/
|
|
297
|
+
setViewport( x, y, width, height, minDepth = 0, maxDepth = 1 ) {
|
|
298
|
+
|
|
299
|
+
const viewport = this._viewport;
|
|
300
|
+
|
|
301
|
+
if ( x.isVector4 ) {
|
|
302
|
+
|
|
303
|
+
viewport.copy( x );
|
|
304
|
+
|
|
305
|
+
} else {
|
|
306
|
+
|
|
307
|
+
viewport.set( x, y, width, height );
|
|
308
|
+
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
viewport.minDepth = minDepth;
|
|
312
|
+
viewport.maxDepth = maxDepth;
|
|
313
|
+
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Dispatches the resize event.
|
|
318
|
+
*
|
|
319
|
+
* @private
|
|
320
|
+
*/
|
|
321
|
+
_dispatchResize() {
|
|
322
|
+
|
|
323
|
+
this.dispatchEvent( { type: 'resize' } );
|
|
324
|
+
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
329
|
+
* method whenever this instance is no longer used in your app.
|
|
330
|
+
*
|
|
331
|
+
* @fires RenderTarget#dispose
|
|
332
|
+
*/
|
|
333
|
+
dispose() {
|
|
334
|
+
|
|
335
|
+
this.dispatchEvent( { type: 'dispose' } );
|
|
336
|
+
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
export default CanvasTarget;
|
|
@@ -34,8 +34,8 @@ class Color4 extends Color {
|
|
|
34
34
|
* string argument to this method.
|
|
35
35
|
*
|
|
36
36
|
* @param {number|string|Color} r - The red value.
|
|
37
|
-
* @param {number} g - The green value.
|
|
38
|
-
* @param {number} b - The blue value.
|
|
37
|
+
* @param {number} [g] - The green value.
|
|
38
|
+
* @param {number} [b] - The blue value.
|
|
39
39
|
* @param {number} [a=1] - The alpha value.
|
|
40
40
|
* @return {Color4} A reference to this object.
|
|
41
41
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { equirectUV } from '../../nodes/utils/
|
|
1
|
+
import { equirectUV } from '../../nodes/utils/EquirectUV.js';
|
|
2
2
|
import { texture as TSL_Texture } from '../../nodes/accessors/TextureNode.js';
|
|
3
3
|
import { positionWorldDirection } from '../../nodes/accessors/Position.js';
|
|
4
4
|
import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
|
|
@@ -117,6 +117,14 @@ class Geometries extends DataMap {
|
|
|
117
117
|
*/
|
|
118
118
|
this.attributeCall = new WeakMap();
|
|
119
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Stores the event listeners attached to geometries.
|
|
122
|
+
*
|
|
123
|
+
* @private
|
|
124
|
+
* @type {Map<BufferGeometry,Function>}
|
|
125
|
+
*/
|
|
126
|
+
this._geometryDisposeListeners = new Map();
|
|
127
|
+
|
|
120
128
|
}
|
|
121
129
|
|
|
122
130
|
/**
|
|
@@ -189,10 +197,16 @@ class Geometries extends DataMap {
|
|
|
189
197
|
|
|
190
198
|
geometry.removeEventListener( 'dispose', onDispose );
|
|
191
199
|
|
|
200
|
+
this._geometryDisposeListeners.delete( geometry );
|
|
201
|
+
|
|
192
202
|
};
|
|
193
203
|
|
|
194
204
|
geometry.addEventListener( 'dispose', onDispose );
|
|
195
205
|
|
|
206
|
+
// see #31798 why tracking separate remove listeners is required right now
|
|
207
|
+
// TODO: Re-evaluate how onDispose() is managed in this component
|
|
208
|
+
this._geometryDisposeListeners.set( geometry, onDispose );
|
|
209
|
+
|
|
196
210
|
}
|
|
197
211
|
|
|
198
212
|
/**
|
|
@@ -339,6 +353,18 @@ class Geometries extends DataMap {
|
|
|
339
353
|
|
|
340
354
|
}
|
|
341
355
|
|
|
356
|
+
dispose() {
|
|
357
|
+
|
|
358
|
+
for ( const [ geometry, onDispose ] of this._geometryDisposeListeners.entries() ) {
|
|
359
|
+
|
|
360
|
+
geometry.removeEventListener( 'dispose', onDispose );
|
|
361
|
+
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
this._geometryDisposeListeners.clear();
|
|
365
|
+
|
|
366
|
+
}
|
|
367
|
+
|
|
342
368
|
}
|
|
343
369
|
|
|
344
370
|
export default Geometries;
|
|
@@ -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
|
|