super-three 0.171.0 → 0.173.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/LICENSE +1 -1
- package/README.md +1 -1
- package/build/three.cjs +594 -427
- package/build/three.core.js +515 -81
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +79 -350
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +20 -7
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +29362 -3427
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +29361 -3427
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -5
- package/examples/jsm/animation/CCDIKSolver.js +9 -7
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +48 -37
- package/examples/jsm/controls/OrbitControls.js +5 -4
- package/examples/jsm/csm/CSMShadowNode.js +16 -11
- package/examples/jsm/curves/NURBSCurve.js +1 -1
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +34 -29
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/PLYExporter.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/lights/LightProbeGenerator.js +3 -3
- package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
- package/examples/jsm/loaders/3MFLoader.js +6 -3
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +5 -5
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +22 -4
- package/examples/jsm/loaders/KTX2Loader.js +6 -1
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MTLLoader.js +1 -0
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +7 -7
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +1 -2
- package/examples/jsm/loaders/VRMLLoader.js +7 -7
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
- package/examples/jsm/misc/Volume.js +27 -17
- package/examples/jsm/misc/VolumeSlice.js +7 -5
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/objects/WaterMesh.js +29 -24
- package/examples/jsm/physics/JoltPhysics.js +7 -7
- package/examples/jsm/physics/RapierPhysics.js +4 -4
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +4 -4
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +2 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +5 -1
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +2 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
- package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
- package/examples/jsm/tsl/display/BleachBypass.js +10 -0
- package/examples/jsm/tsl/display/BloomNode.js +233 -26
- package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
- package/examples/jsm/tsl/display/FXAANode.js +52 -3
- package/examples/jsm/tsl/display/FilmNode.js +47 -1
- package/examples/jsm/tsl/display/GTAONode.js +210 -14
- package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
- package/examples/jsm/tsl/display/LensflareNode.js +131 -13
- package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
- package/examples/jsm/tsl/display/MotionBlur.js +12 -2
- package/examples/jsm/tsl/display/OutlineNode.js +343 -26
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
- package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
- package/examples/jsm/tsl/display/SMAANode.js +187 -46
- package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
- package/examples/jsm/tsl/display/SSRNode.js +194 -21
- package/examples/jsm/tsl/display/Sepia.js +9 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
- package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
- package/examples/jsm/tsl/display/TransitionNode.js +71 -6
- package/examples/jsm/tsl/display/hashBlur.js +14 -3
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -3
- package/src/Three.Core.js +4 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +18 -5
- package/src/Three.WebGPU.Nodes.js +2 -2
- package/src/Three.WebGPU.js +2 -2
- package/src/animation/PropertyBinding.js +2 -2
- package/src/cameras/ArrayCamera.js +1 -0
- package/src/cameras/PerspectiveCamera.js +18 -2
- package/src/constants.js +6 -1
- package/src/core/BufferAttribute.js +4 -0
- package/src/core/EventDispatcher.js +8 -6
- package/src/core/RenderTarget.js +18 -0
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Earcut.js +1 -1
- package/src/extras/ImageUtils.js +1 -11
- package/src/extras/PMREMGenerator.js +20 -0
- package/src/extras/TextureUtils.js +6 -0
- package/src/helpers/CameraHelper.js +16 -13
- package/src/loaders/nodes/NodeLoader.js +59 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/nodes/Line2NodeMaterial.js +128 -34
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
- package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
- package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +476 -23
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +121 -10
- package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
- package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
- package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
- package/src/nodes/Nodes.js +5 -6
- package/src/nodes/TSL.js +6 -3
- package/src/nodes/accessors/AccessorsUtils.js +27 -0
- package/src/nodes/accessors/Arrays.js +47 -6
- package/src/nodes/accessors/BatchNode.js +42 -6
- package/src/nodes/accessors/Bitangent.js +37 -0
- package/src/nodes/accessors/BufferAttributeNode.js +178 -5
- package/src/nodes/accessors/BufferNode.js +63 -0
- package/src/nodes/accessors/BuiltinNode.js +38 -0
- package/src/nodes/accessors/Camera.js +113 -3
- package/src/nodes/accessors/ClippingNode.js +71 -2
- package/src/nodes/accessors/CubeTextureNode.js +64 -0
- package/src/nodes/accessors/InstanceNode.js +85 -2
- package/src/nodes/accessors/InstancedMeshNode.js +28 -3
- package/src/nodes/accessors/Lights.js +50 -1
- package/src/nodes/accessors/MaterialNode.js +306 -12
- package/src/nodes/accessors/MaterialProperties.js +7 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
- package/src/nodes/accessors/ModelNode.js +100 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
- package/src/nodes/accessors/MorphNode.js +48 -4
- package/src/nodes/accessors/Normal.js +65 -5
- package/src/nodes/accessors/Object3DNode.js +101 -1
- package/src/nodes/accessors/PointUVNode.js +26 -0
- package/src/nodes/accessors/Position.js +56 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
- package/src/nodes/accessors/ReferenceNode.js +201 -2
- package/src/nodes/accessors/ReflectVector.js +24 -0
- package/src/nodes/accessors/RendererReferenceNode.js +46 -1
- package/src/nodes/accessors/SceneNode.js +54 -0
- package/src/nodes/accessors/SkinningNode.js +127 -1
- package/src/nodes/accessors/StorageBufferNode.js +209 -8
- package/src/nodes/accessors/StorageTextureNode.js +118 -0
- package/src/nodes/accessors/Tangent.js +38 -2
- package/src/nodes/accessors/Texture3DNode.js +91 -7
- package/src/nodes/accessors/TextureBicubic.js +12 -2
- package/src/nodes/accessors/TextureNode.js +316 -10
- package/src/nodes/accessors/TextureSizeNode.js +42 -0
- package/src/nodes/accessors/UV.js +10 -1
- package/src/nodes/accessors/UniformArrayNode.js +231 -25
- package/src/nodes/accessors/UserDataNode.js +46 -0
- package/src/nodes/accessors/VelocityNode.js +80 -0
- package/src/nodes/accessors/VertexColorNode.js +39 -2
- package/src/nodes/code/CodeNode.js +95 -1
- package/src/nodes/code/ExpressionNode.js +28 -0
- package/src/nodes/code/FunctionCallNode.js +37 -0
- package/src/nodes/code/FunctionNode.js +45 -0
- package/src/nodes/code/ScriptableNode.js +223 -1
- package/src/nodes/code/ScriptableValueNode.js +85 -1
- package/src/nodes/core/ArrayNode.js +125 -0
- package/src/nodes/core/AssignNode.js +48 -2
- package/src/nodes/core/AttributeNode.js +43 -0
- package/src/nodes/core/BypassNode.js +47 -2
- package/src/nodes/core/CacheNode.js +53 -2
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +65 -0
- package/src/nodes/core/IndexNode.js +68 -7
- package/src/nodes/core/InputNode.js +48 -0
- package/src/nodes/core/LightingModel.js +60 -0
- package/src/nodes/core/MRTNode.js +66 -0
- package/src/nodes/core/Node.js +350 -12
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1166 -26
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +152 -1
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +51 -10
- package/src/nodes/core/ParameterNode.js +28 -0
- package/src/nodes/core/PropertyNode.js +232 -0
- package/src/nodes/core/StackNode.js +98 -1
- package/src/nodes/core/StructNode.js +121 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +105 -6
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +82 -7
- package/src/nodes/core/UniformNode.js +66 -0
- package/src/nodes/core/VarNode.js +146 -7
- package/src/nodes/core/VaryingNode.js +100 -3
- package/src/nodes/core/constants.js +36 -0
- package/src/nodes/display/BlendModes.js +88 -1
- package/src/nodes/display/BumpMapNode.js +37 -0
- package/src/nodes/display/ColorAdjustment.js +53 -11
- package/src/nodes/display/ColorSpaceFunctions.js +16 -0
- package/src/nodes/display/ColorSpaceNode.js +82 -0
- package/src/nodes/display/FrontFacingNode.js +29 -0
- package/src/nodes/display/NormalMapNode.js +43 -0
- package/src/nodes/display/PassNode.js +300 -7
- package/src/nodes/display/PosterizeNode.js +33 -0
- package/src/nodes/display/RenderOutputNode.js +66 -1
- package/src/nodes/display/ScreenNode.js +96 -0
- package/src/nodes/display/ToneMappingFunctions.js +58 -10
- package/src/nodes/display/ToneMappingNode.js +55 -2
- package/src/nodes/display/ToonOutlinePassNode.js +73 -0
- package/src/nodes/display/ViewportDepthNode.js +122 -8
- package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
- package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
- package/src/nodes/display/ViewportTextureNode.js +57 -0
- package/src/nodes/fog/Fog.js +110 -0
- package/src/nodes/functions/BasicLightingModel.js +24 -0
- package/src/nodes/functions/PhongLightingModel.js +34 -2
- package/src/nodes/functions/PhysicalLightingModel.js +167 -8
- package/src/nodes/functions/ShadowMaskModel.js +23 -0
- package/src/nodes/functions/ToonLightingModel.js +20 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
- package/src/nodes/geometry/RangeNode.js +54 -2
- package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
- package/src/nodes/gpgpu/BarrierNode.js +47 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
- package/src/nodes/gpgpu/ComputeNode.js +106 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +97 -2
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +10 -0
- package/src/nodes/lighting/EnvironmentNode.js +18 -0
- package/src/nodes/lighting/HemisphereLightNode.js +31 -0
- package/src/nodes/lighting/IESSpotLightNode.js +11 -0
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +12 -0
- package/src/nodes/lighting/LightingContextNode.js +48 -0
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +132 -1
- package/src/nodes/lighting/PointLightNode.js +32 -1
- package/src/nodes/lighting/PointShadowNode.js +54 -1
- package/src/nodes/lighting/RectAreaLightNode.js +44 -6
- package/src/nodes/lighting/ShadowBaseNode.js +93 -0
- package/src/nodes/lighting/ShadowNode.js +241 -35
- package/src/nodes/lighting/SpotLightNode.js +43 -0
- package/src/nodes/math/ConditionalNode.js +78 -4
- package/src/nodes/math/Hash.js +9 -0
- package/src/nodes/math/MathNode.js +627 -11
- package/src/nodes/math/MathUtils.js +45 -1
- package/src/nodes/math/OperatorNode.js +329 -18
- package/src/nodes/math/TriNoise3D.js +18 -7
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +133 -0
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +9 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +3 -2
- package/src/nodes/tsl/TSLCore.js +22 -2
- package/src/nodes/utils/ArrayElementNode.js +39 -3
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +78 -0
- package/src/nodes/utils/Discard.js +16 -0
- package/src/nodes/utils/EquirectUVNode.js +31 -1
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
- package/src/nodes/utils/JoinNode.js +25 -0
- package/src/nodes/utils/LoopNode.js +82 -2
- package/src/nodes/utils/MatcapUVNode.js +17 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -0
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +33 -0
- package/src/nodes/utils/Packing.js +17 -0
- package/src/nodes/utils/PostProcessingUtils.js +28 -23
- package/src/nodes/utils/RTTNode.js +123 -2
- package/src/nodes/utils/ReflectorNode.js +174 -4
- package/src/nodes/utils/RemapNode.js +79 -0
- package/src/nodes/utils/RotateNode.js +41 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +55 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
- package/src/nodes/utils/SpriteUtils.js +17 -0
- package/src/nodes/utils/StorageArrayElementNode.js +54 -0
- package/src/nodes/utils/Timer.js +40 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
- package/src/nodes/utils/UVUtils.js +20 -0
- package/src/nodes/utils/ViewportUtils.js +13 -0
- package/src/objects/BatchedMesh.js +2 -3
- package/src/objects/ClippingGroup.js +49 -0
- package/src/objects/Line.js +6 -6
- package/src/renderers/WebGLRenderer.js +30 -4
- package/src/renderers/common/Animation.js +85 -0
- package/src/renderers/common/Attributes.js +36 -0
- package/src/renderers/common/Backend.js +502 -44
- package/src/renderers/common/Background.js +48 -1
- package/src/renderers/common/BindGroup.js +43 -0
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +93 -1
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +27 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +108 -15
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +91 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +34 -6
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +99 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +54 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +201 -2
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +178 -0
- package/src/renderers/common/RenderLists.js +40 -3
- package/src/renderers/common/RenderObject.js +400 -17
- package/src/renderers/common/RenderObjects.js +103 -7
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1170 -86
- package/src/renderers/common/RendererUtils.js +193 -0
- package/src/renderers/common/SampledTexture.js +120 -0
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +97 -7
- package/src/renderers/common/TimestampQueryPool.js +39 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +141 -2
- package/src/renderers/common/XRManager.js +1193 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +76 -10
- package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
- package/src/renderers/common/nodes/NodeLibrary.js +89 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
- package/src/renderers/common/nodes/NodeUniform.js +243 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +352 -78
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/webgl/WebGLBackground.js +4 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +578 -164
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
- package/src/renderers/webgpu/WebGPURenderer.js +36 -0
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +19 -2
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/Texture.js +4 -0
- package/src/textures/VideoFrameTexture.js +35 -0
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
- package/examples/jsm/animation/MMDPhysics.js +0 -1408
- package/examples/jsm/exporters/MMDExporter.js +0 -223
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/MMDLoader.js +0 -2298
- package/examples/jsm/objects/InstancedPoints.js +0 -19
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/renderers/common/PostProcessingUtils.js +0 -86
package/src/objects/Line.js
CHANGED
|
@@ -119,7 +119,7 @@ class Line extends Object3D {
|
|
|
119
119
|
const a = index.getX( i );
|
|
120
120
|
const b = index.getX( i + 1 );
|
|
121
121
|
|
|
122
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b );
|
|
122
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, i );
|
|
123
123
|
|
|
124
124
|
if ( intersect ) {
|
|
125
125
|
|
|
@@ -134,7 +134,7 @@ class Line extends Object3D {
|
|
|
134
134
|
const a = index.getX( end - 1 );
|
|
135
135
|
const b = index.getX( start );
|
|
136
136
|
|
|
137
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b );
|
|
137
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, a, b, end - 1 );
|
|
138
138
|
|
|
139
139
|
if ( intersect ) {
|
|
140
140
|
|
|
@@ -151,7 +151,7 @@ class Line extends Object3D {
|
|
|
151
151
|
|
|
152
152
|
for ( let i = start, l = end - 1; i < l; i += step ) {
|
|
153
153
|
|
|
154
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, i, i + 1 );
|
|
154
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, i, i + 1, i );
|
|
155
155
|
|
|
156
156
|
if ( intersect ) {
|
|
157
157
|
|
|
@@ -163,7 +163,7 @@ class Line extends Object3D {
|
|
|
163
163
|
|
|
164
164
|
if ( this.isLineLoop ) {
|
|
165
165
|
|
|
166
|
-
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, end - 1, start );
|
|
166
|
+
const intersect = checkIntersection( this, raycaster, _ray, localThresholdSq, end - 1, start, end - 1 );
|
|
167
167
|
|
|
168
168
|
if ( intersect ) {
|
|
169
169
|
|
|
@@ -210,7 +210,7 @@ class Line extends Object3D {
|
|
|
210
210
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
function checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {
|
|
213
|
+
function checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {
|
|
214
214
|
|
|
215
215
|
const positionAttribute = object.geometry.attributes.position;
|
|
216
216
|
|
|
@@ -233,7 +233,7 @@ function checkIntersection( object, raycaster, ray, thresholdSq, a, b ) {
|
|
|
233
233
|
// What do we want? intersection point on the ray or on the segment??
|
|
234
234
|
// point: raycaster.ray.at( distance ),
|
|
235
235
|
point: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),
|
|
236
|
-
index:
|
|
236
|
+
index: i,
|
|
237
237
|
face: null,
|
|
238
238
|
faceIndex: null,
|
|
239
239
|
barycoord: null,
|
|
@@ -195,6 +195,9 @@ class WebGLRenderer {
|
|
|
195
195
|
let _clippingEnabled = false;
|
|
196
196
|
let _localClippingEnabled = false;
|
|
197
197
|
|
|
198
|
+
// transmission render target scale
|
|
199
|
+
this.transmissionResolutionScale = 1.0;
|
|
200
|
+
|
|
198
201
|
// camera matrices cache
|
|
199
202
|
|
|
200
203
|
const _currentProjectionMatrix = new Matrix4();
|
|
@@ -1283,7 +1286,7 @@ class WebGLRenderer {
|
|
|
1283
1286
|
|
|
1284
1287
|
//
|
|
1285
1288
|
|
|
1286
|
-
if ( _currentRenderTarget !== null ) {
|
|
1289
|
+
if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {
|
|
1287
1290
|
|
|
1288
1291
|
// resolve multisample renderbuffers to a single-sample texture if necessary
|
|
1289
1292
|
|
|
@@ -1511,7 +1514,7 @@ class WebGLRenderer {
|
|
|
1511
1514
|
const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];
|
|
1512
1515
|
|
|
1513
1516
|
const activeViewport = camera.viewport || _currentViewport;
|
|
1514
|
-
transmissionRenderTarget.setSize( activeViewport.z, activeViewport.w );
|
|
1517
|
+
transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );
|
|
1515
1518
|
|
|
1516
1519
|
//
|
|
1517
1520
|
|
|
@@ -2329,8 +2332,16 @@ class WebGLRenderer {
|
|
|
2329
2332
|
|
|
2330
2333
|
};
|
|
2331
2334
|
|
|
2335
|
+
const _scratchFrameBuffer = _gl.createFramebuffer();
|
|
2332
2336
|
this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
2333
2337
|
|
|
2338
|
+
// Render to base layer instead of canvas in WebXR
|
|
2339
|
+
if ( renderTarget === null && this.xr.isPresenting ) {
|
|
2340
|
+
|
|
2341
|
+
renderTarget = this.xr.getRenderTarget();
|
|
2342
|
+
|
|
2343
|
+
}
|
|
2344
|
+
|
|
2334
2345
|
_currentRenderTarget = renderTarget;
|
|
2335
2346
|
_currentActiveCubeFace = activeCubeFace;
|
|
2336
2347
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
@@ -2437,6 +2448,14 @@ class WebGLRenderer {
|
|
|
2437
2448
|
|
|
2438
2449
|
}
|
|
2439
2450
|
|
|
2451
|
+
// Use a scratch frame buffer if rendering to a mip level to avoid depth buffers
|
|
2452
|
+
// being bound that are different sizes.
|
|
2453
|
+
if ( activeMipmapLevel !== 0 ) {
|
|
2454
|
+
|
|
2455
|
+
framebuffer = _scratchFrameBuffer;
|
|
2456
|
+
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2440
2459
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
2441
2460
|
|
|
2442
2461
|
if ( framebufferBound && useDefaultFramebuffer ) {
|
|
@@ -2457,8 +2476,15 @@ class WebGLRenderer {
|
|
|
2457
2476
|
} else if ( isRenderTarget3D ) {
|
|
2458
2477
|
|
|
2459
2478
|
const textureProperties = properties.get( renderTarget.texture );
|
|
2460
|
-
const layer = activeCubeFace
|
|
2461
|
-
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel
|
|
2479
|
+
const layer = activeCubeFace;
|
|
2480
|
+
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel, layer );
|
|
2481
|
+
|
|
2482
|
+
} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
|
|
2483
|
+
|
|
2484
|
+
// Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.
|
|
2485
|
+
// If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.
|
|
2486
|
+
const textureProperties = properties.get( renderTarget.texture );
|
|
2487
|
+
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );
|
|
2462
2488
|
|
|
2463
2489
|
}
|
|
2464
2490
|
|
|
@@ -1,16 +1,63 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* This module manages the internal animation loop of the renderer.
|
|
4
|
+
*
|
|
5
|
+
* @private
|
|
6
|
+
*/
|
|
1
7
|
class Animation {
|
|
2
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Constructs a new animation loop management component.
|
|
11
|
+
*
|
|
12
|
+
* @param {Nodes} nodes - Renderer component for managing nodes related logic.
|
|
13
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
14
|
+
*/
|
|
3
15
|
constructor( nodes, info ) {
|
|
4
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Renderer component for managing nodes related logic.
|
|
19
|
+
*
|
|
20
|
+
* @type {Nodes}
|
|
21
|
+
*/
|
|
5
22
|
this.nodes = nodes;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Renderer component for managing metrics and monitoring data.
|
|
26
|
+
*
|
|
27
|
+
* @type {Info}
|
|
28
|
+
*/
|
|
6
29
|
this.info = info;
|
|
7
30
|
|
|
31
|
+
/**
|
|
32
|
+
* A reference to the context from `requestAnimationFrame()` can
|
|
33
|
+
* be called (usually `window`).
|
|
34
|
+
*
|
|
35
|
+
* @type {Window|XRSession}
|
|
36
|
+
*/
|
|
8
37
|
this._context = self;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The user-defined animation loop.
|
|
41
|
+
*
|
|
42
|
+
* @type {Function?}
|
|
43
|
+
* @default null
|
|
44
|
+
*/
|
|
9
45
|
this._animationLoop = null;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The requestId which is returned from the `requestAnimationFrame()` call.
|
|
49
|
+
* Can be used to cancel the stop the animation loop.
|
|
50
|
+
*
|
|
51
|
+
* @type {Number?}
|
|
52
|
+
* @default null
|
|
53
|
+
*/
|
|
10
54
|
this._requestId = null;
|
|
11
55
|
|
|
12
56
|
}
|
|
13
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Starts the internal animation loop.
|
|
60
|
+
*/
|
|
14
61
|
start() {
|
|
15
62
|
|
|
16
63
|
const update = ( time, frame ) => {
|
|
@@ -31,6 +78,9 @@ class Animation {
|
|
|
31
78
|
|
|
32
79
|
}
|
|
33
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Stops the internal animation loop.
|
|
83
|
+
*/
|
|
34
84
|
stop() {
|
|
35
85
|
|
|
36
86
|
this._context.cancelAnimationFrame( this._requestId );
|
|
@@ -39,18 +89,53 @@ class Animation {
|
|
|
39
89
|
|
|
40
90
|
}
|
|
41
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Returns the user-level animation loop.
|
|
94
|
+
*
|
|
95
|
+
* @return {Function} The animation loop.
|
|
96
|
+
*/
|
|
97
|
+
getAnimationLoop() {
|
|
98
|
+
|
|
99
|
+
return this._animationLoop;
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Defines the user-level animation loop.
|
|
105
|
+
*
|
|
106
|
+
* @param {Function} callback - The animation loop.
|
|
107
|
+
*/
|
|
42
108
|
setAnimationLoop( callback ) {
|
|
43
109
|
|
|
44
110
|
this._animationLoop = callback;
|
|
45
111
|
|
|
46
112
|
}
|
|
47
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Returns the animation context.
|
|
116
|
+
*
|
|
117
|
+
* @return {Window|XRSession} The animation context.
|
|
118
|
+
*/
|
|
119
|
+
getContext() {
|
|
120
|
+
|
|
121
|
+
return this._context;
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Defines the context in which `requestAnimationFrame()` is executed.
|
|
127
|
+
*
|
|
128
|
+
* @param {Window|XRSession} context - The context to set.
|
|
129
|
+
*/
|
|
48
130
|
setContext( context ) {
|
|
49
131
|
|
|
50
132
|
this._context = context;
|
|
51
133
|
|
|
52
134
|
}
|
|
53
135
|
|
|
136
|
+
/**
|
|
137
|
+
* Frees all internal resources and stops the animation loop.
|
|
138
|
+
*/
|
|
54
139
|
dispose() {
|
|
55
140
|
|
|
56
141
|
this.stop();
|
|
@@ -3,16 +3,38 @@ import { AttributeType } from './Constants.js';
|
|
|
3
3
|
|
|
4
4
|
import { DynamicDrawUsage } from '../../constants.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* This renderer module manages geometry attributes.
|
|
8
|
+
*
|
|
9
|
+
* @private
|
|
10
|
+
* @augments DataMap
|
|
11
|
+
*/
|
|
6
12
|
class Attributes extends DataMap {
|
|
7
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Constructs a new attribute management component.
|
|
16
|
+
*
|
|
17
|
+
* @param {Backend} backend - The renderer's backend.
|
|
18
|
+
*/
|
|
8
19
|
constructor( backend ) {
|
|
9
20
|
|
|
10
21
|
super();
|
|
11
22
|
|
|
23
|
+
/**
|
|
24
|
+
* The renderer's backend.
|
|
25
|
+
*
|
|
26
|
+
* @type {Backend}
|
|
27
|
+
*/
|
|
12
28
|
this.backend = backend;
|
|
13
29
|
|
|
14
30
|
}
|
|
15
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Deletes the data for the given attribute.
|
|
34
|
+
*
|
|
35
|
+
* @param {BufferAttribute} attribute - The attribute.
|
|
36
|
+
* @return {Object} The deleted attribute data.
|
|
37
|
+
*/
|
|
16
38
|
delete( attribute ) {
|
|
17
39
|
|
|
18
40
|
const attributeData = super.delete( attribute );
|
|
@@ -27,6 +49,13 @@ class Attributes extends DataMap {
|
|
|
27
49
|
|
|
28
50
|
}
|
|
29
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Updates the given attribute. This method creates attribute buffers
|
|
54
|
+
* for new attributes and updates data for existing ones.
|
|
55
|
+
*
|
|
56
|
+
* @param {BufferAttribute} attribute - The attribute to update.
|
|
57
|
+
* @param {Number} type - The attribute type.
|
|
58
|
+
*/
|
|
30
59
|
update( attribute, type ) {
|
|
31
60
|
|
|
32
61
|
const data = this.get( attribute );
|
|
@@ -69,6 +98,13 @@ class Attributes extends DataMap {
|
|
|
69
98
|
|
|
70
99
|
}
|
|
71
100
|
|
|
101
|
+
/**
|
|
102
|
+
* Utility method for handling interleaved buffer attributes correctly.
|
|
103
|
+
* To process them, their `InterleavedBuffer` is returned.
|
|
104
|
+
*
|
|
105
|
+
* @param {BufferAttribute} attribute - The attribute.
|
|
106
|
+
* @return {BufferAttribute|InterleavedBuffer}
|
|
107
|
+
*/
|
|
72
108
|
_getBufferAttribute( attribute ) {
|
|
73
109
|
|
|
74
110
|
if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
|