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/examples/jsm/Addons.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export * from './animation/AnimationClipCreator.js';
|
|
2
2
|
export * from './animation/CCDIKSolver.js';
|
|
3
|
-
export * from './animation/MMDAnimationHelper.js';
|
|
4
|
-
export * from './animation/MMDPhysics.js';
|
|
5
3
|
|
|
6
4
|
export { default as WebGL } from './capabilities/WebGL.js';
|
|
7
5
|
|
|
@@ -40,7 +38,6 @@ export * from './exporters/DRACOExporter.js';
|
|
|
40
38
|
export * from './exporters/EXRExporter.js';
|
|
41
39
|
export * from './exporters/GLTFExporter.js';
|
|
42
40
|
export * from './exporters/KTX2Exporter.js';
|
|
43
|
-
export * from './exporters/MMDExporter.js';
|
|
44
41
|
export * from './exporters/OBJExporter.js';
|
|
45
42
|
export * from './exporters/PLYExporter.js';
|
|
46
43
|
export * from './exporters/STLExporter.js';
|
|
@@ -105,7 +102,6 @@ export * from './loaders/LWOLoader.js';
|
|
|
105
102
|
export * from './loaders/LottieLoader.js';
|
|
106
103
|
export * from './loaders/MD2Loader.js';
|
|
107
104
|
export * from './loaders/MDDLoader.js';
|
|
108
|
-
export * from './loaders/MMDLoader.js';
|
|
109
105
|
export * from './loaders/MTLLoader.js';
|
|
110
106
|
export * from './loaders/NRRDLoader.js';
|
|
111
107
|
export * from './loaders/OBJLoader.js';
|
|
@@ -240,7 +236,6 @@ export * from './shaders/HueSaturationShader.js';
|
|
|
240
236
|
export * from './shaders/KaleidoShader.js';
|
|
241
237
|
export * from './shaders/LuminosityHighPassShader.js';
|
|
242
238
|
export * from './shaders/LuminosityShader.js';
|
|
243
|
-
export * from './shaders/MMDToonShader.js';
|
|
244
239
|
export * from './shaders/MirrorShader.js';
|
|
245
240
|
export * from './shaders/NormalMapShader.js';
|
|
246
241
|
export * from './shaders/OutputShader.js';
|
|
@@ -28,7 +28,7 @@ const _matrix = new Matrix4();
|
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* CCD Algorithm
|
|
31
|
-
* - https://sites.google.com/site/auraliusproject/ccd-algorithm
|
|
31
|
+
* - https://web.archive.org/web/20221206080850/https://sites.google.com/site/auraliusproject/ccd-algorithm
|
|
32
32
|
*
|
|
33
33
|
* // ik parameter example
|
|
34
34
|
* //
|
|
@@ -111,8 +111,7 @@ class CCDIKSolver {
|
|
|
111
111
|
|
|
112
112
|
const link = bones[ links[ j ].index ];
|
|
113
113
|
|
|
114
|
-
// skip this link and following links
|
|
115
|
-
// this skip is used for MMD performance optimization.
|
|
114
|
+
// skip this link and following links
|
|
116
115
|
if ( links[ j ].enabled === false ) break;
|
|
117
116
|
|
|
118
117
|
const limitation = links[ j ].limitation;
|
|
@@ -278,13 +277,14 @@ function setPositionOfBoneToAttributeArray( array, index, bone, matrixWorldInv )
|
|
|
278
277
|
|
|
279
278
|
/**
|
|
280
279
|
* Visualize IK bones
|
|
281
|
-
*
|
|
282
|
-
* @param {SkinnedMesh} mesh
|
|
283
|
-
* @param {Array<Object>} iks
|
|
284
|
-
* @param {number} sphereSize
|
|
285
280
|
*/
|
|
286
281
|
class CCDIKHelper extends Object3D {
|
|
287
282
|
|
|
283
|
+
/**
|
|
284
|
+
* @param {SkinnedMesh} mesh
|
|
285
|
+
* @param {Array<Object>} [iks=[]]
|
|
286
|
+
* @param {number} [sphereSize=0.25]
|
|
287
|
+
*/
|
|
288
288
|
constructor( mesh, iks = [], sphereSize = 0.25 ) {
|
|
289
289
|
|
|
290
290
|
super();
|
|
@@ -331,6 +331,8 @@ class CCDIKHelper extends Object3D {
|
|
|
331
331
|
|
|
332
332
|
/**
|
|
333
333
|
* Updates IK bones visualization.
|
|
334
|
+
*
|
|
335
|
+
* @param {Boolean} force
|
|
334
336
|
*/
|
|
335
337
|
updateMatrixWorld( force ) {
|
|
336
338
|
|
|
@@ -70,14 +70,18 @@ const _offset = new Vector3();
|
|
|
70
70
|
const _gizmoMatrixStateTemp = new Matrix4();
|
|
71
71
|
const _cameraMatrixStateTemp = new Matrix4();
|
|
72
72
|
const _scalePointTemp = new Vector3();
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @param {Scene} scene The scene to be rendered
|
|
78
|
-
*/
|
|
73
|
+
|
|
74
|
+
const _EPS = 0.000001;
|
|
75
|
+
|
|
76
|
+
|
|
79
77
|
class ArcballControls extends Controls {
|
|
80
78
|
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @param {Camera} camera Virtual camera used in the scene
|
|
82
|
+
* @param {HTMLElement?} [domElement=null] Renderer's dom element
|
|
83
|
+
* @param {Scene?} [scene=null] The scene to be rendered
|
|
84
|
+
*/
|
|
81
85
|
constructor( camera, domElement = null, scene = null ) {
|
|
82
86
|
|
|
83
87
|
super( camera, domElement );
|
|
@@ -1100,9 +1104,9 @@ class ArcballControls extends Controls {
|
|
|
1100
1104
|
|
|
1101
1105
|
/**
|
|
1102
1106
|
* Set a new mouse action by specifying the operation to be performed and a mouse/key combination. In case of conflict, replaces the existing one
|
|
1103
|
-
* @param {
|
|
1104
|
-
* @param {
|
|
1105
|
-
* @param {
|
|
1107
|
+
* @param {'PAN'|'ROTATE'|'ZOOM'|'FOV'} operation The operation to be performed ('PAN', 'ROTATE', 'ZOOM', 'FOV')
|
|
1108
|
+
* @param {0|1|2|'WHEEL'} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
|
|
1109
|
+
* @param {'CTRL'|'SHIFT'|null} [key=null] The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
|
|
1106
1110
|
* @returns {Boolean} True if the mouse action has been successfully added, false otherwise
|
|
1107
1111
|
*/
|
|
1108
1112
|
setMouseAction( operation, mouse, key = null ) {
|
|
@@ -1181,9 +1185,9 @@ class ArcballControls extends Controls {
|
|
|
1181
1185
|
|
|
1182
1186
|
/**
|
|
1183
1187
|
* Remove a mouse action by specifying its mouse/key combination
|
|
1184
|
-
* @param {
|
|
1185
|
-
* @param {
|
|
1186
|
-
* @returns {Boolean} True if the operation has been
|
|
1188
|
+
* @param {0|1|2|'WHEEL'} mouse A mouse button (0, 1, 2) or 'WHEEL' for wheel notches
|
|
1189
|
+
* @param {'CTRL'|'SHIFT'|null} key The keyboard modifier ('CTRL', 'SHIFT') or null if key is not needed
|
|
1190
|
+
* @returns {Boolean} True if the operation has been successfully removed, false otherwise
|
|
1187
1191
|
*/
|
|
1188
1192
|
unsetMouseAction( mouse, key = null ) {
|
|
1189
1193
|
|
|
@@ -1204,9 +1208,9 @@ class ArcballControls extends Controls {
|
|
|
1204
1208
|
|
|
1205
1209
|
/**
|
|
1206
1210
|
* Return the operation associated to a mouse/keyboard combination
|
|
1207
|
-
* @param {
|
|
1208
|
-
* @param {
|
|
1209
|
-
* @returns The operation if it has been found, null otherwise
|
|
1211
|
+
* @param {0|1|2|'WHEEL'} mouse Mouse button index (0, 1, 2) or 'WHEEL' for wheel notches
|
|
1212
|
+
* @param {'CTRL'|'SHIFT'|null} key Keyboard modifier
|
|
1213
|
+
* @returns {'PAN'|'ROTATE'|'ZOOM'|'FOV'|null} The operation if it has been found, null otherwise
|
|
1210
1214
|
*/
|
|
1211
1215
|
getOpFromAction( mouse, key ) {
|
|
1212
1216
|
|
|
@@ -1244,9 +1248,9 @@ class ArcballControls extends Controls {
|
|
|
1244
1248
|
|
|
1245
1249
|
/**
|
|
1246
1250
|
* Get the operation associated to mouse and key combination and returns the corresponding FSA state
|
|
1247
|
-
* @param {
|
|
1248
|
-
* @param {
|
|
1249
|
-
* @returns The FSA state obtained from the operation associated to mouse/keyboard combination
|
|
1251
|
+
* @param {0|1|2} mouse Mouse button index (0, 1, 2)
|
|
1252
|
+
* @param {'CTRL'|'SHIFT'|null} key Keyboard modifier
|
|
1253
|
+
* @returns {STATE?} The FSA state obtained from the operation associated to mouse/keyboard combination
|
|
1250
1254
|
*/
|
|
1251
1255
|
getOpStateFromAction( mouse, key ) {
|
|
1252
1256
|
|
|
@@ -1402,10 +1406,12 @@ class ArcballControls extends Controls {
|
|
|
1402
1406
|
|
|
1403
1407
|
/**
|
|
1404
1408
|
* Calculate the angular speed
|
|
1409
|
+
*
|
|
1405
1410
|
* @param {Number} p0 Position at t0
|
|
1406
1411
|
* @param {Number} p1 Position at t1
|
|
1407
1412
|
* @param {Number} t0 Initial time in milliseconds
|
|
1408
1413
|
* @param {Number} t1 Ending time in milliseconds
|
|
1414
|
+
* @returns {Number}
|
|
1409
1415
|
*/
|
|
1410
1416
|
calculateAngularSpeed( p0, p1, t0, t1 ) {
|
|
1411
1417
|
|
|
@@ -1450,7 +1456,7 @@ class ArcballControls extends Controls {
|
|
|
1450
1456
|
}
|
|
1451
1457
|
|
|
1452
1458
|
/**
|
|
1453
|
-
* Calculate the trackball radius so that gizmo's
|
|
1459
|
+
* Calculate the trackball radius so that gizmo's diameter will be 2/3 of the minimum side of the camera frustum
|
|
1454
1460
|
* @param {Camera} camera
|
|
1455
1461
|
* @returns {Number} The trackball radius
|
|
1456
1462
|
*/
|
|
@@ -1476,7 +1482,7 @@ class ArcballControls extends Controls {
|
|
|
1476
1482
|
* Focus operation consist of positioning the point of interest in front of the camera and a slightly zoom in
|
|
1477
1483
|
* @param {Vector3} point The point of interest
|
|
1478
1484
|
* @param {Number} size Scale factor
|
|
1479
|
-
* @param {Number} amount Amount of operation to be completed (used for focus animations, default is complete full operation)
|
|
1485
|
+
* @param {Number} [amount=1] Amount of operation to be completed (used for focus animations, default is complete full operation)
|
|
1480
1486
|
*/
|
|
1481
1487
|
focus( point, size, amount = 1 ) {
|
|
1482
1488
|
|
|
@@ -1627,8 +1633,9 @@ class ArcballControls extends Controls {
|
|
|
1627
1633
|
|
|
1628
1634
|
/**
|
|
1629
1635
|
* Calculate the cursor position in NDC
|
|
1630
|
-
*
|
|
1631
|
-
* @param {number}
|
|
1636
|
+
*
|
|
1637
|
+
* @param {number} cursorX Cursor horizontal coordinate within the canvas
|
|
1638
|
+
* @param {number} cursorY Cursor vertical coordinate within the canvas
|
|
1632
1639
|
* @param {HTMLElement} canvas The canvas where the renderer draws its output
|
|
1633
1640
|
* @returns {Vector2} Cursor normalized position inside the canvas
|
|
1634
1641
|
*/
|
|
@@ -1643,8 +1650,9 @@ class ArcballControls extends Controls {
|
|
|
1643
1650
|
|
|
1644
1651
|
/**
|
|
1645
1652
|
* Calculate the cursor position inside the canvas x/y coordinates with the origin being in the center of the canvas
|
|
1646
|
-
*
|
|
1647
|
-
* @param {Number}
|
|
1653
|
+
*
|
|
1654
|
+
* @param {Number} cursorX Cursor horizontal coordinate within the canvas
|
|
1655
|
+
* @param {Number} cursorY Cursor vertical coordinate within the canvas
|
|
1648
1656
|
* @param {HTMLElement} canvas The canvas where the renderer draws its output
|
|
1649
1657
|
* @returns {Vector2} Cursor position inside the canvas
|
|
1650
1658
|
*/
|
|
@@ -1713,7 +1721,7 @@ class ArcballControls extends Controls {
|
|
|
1713
1721
|
|
|
1714
1722
|
/**
|
|
1715
1723
|
* Set gizmos radius factor and redraws gizmos
|
|
1716
|
-
* @param {
|
|
1724
|
+
* @param {Number} value Value of radius factor
|
|
1717
1725
|
*/
|
|
1718
1726
|
setTbRadius( value ) {
|
|
1719
1727
|
|
|
@@ -1940,9 +1948,11 @@ class ArcballControls extends Controls {
|
|
|
1940
1948
|
|
|
1941
1949
|
/**
|
|
1942
1950
|
* Perform pan operation moving camera between two points
|
|
1951
|
+
*
|
|
1943
1952
|
* @param {Vector3} p0 Initial point
|
|
1944
1953
|
* @param {Vector3} p1 Ending point
|
|
1945
|
-
* @param {Boolean} adjust If movement should be adjusted considering camera distance (Perspective only)
|
|
1954
|
+
* @param {Boolean} [adjust=false] If movement should be adjusted considering camera distance (Perspective only)
|
|
1955
|
+
* @returns {Object}
|
|
1946
1956
|
*/
|
|
1947
1957
|
pan( p0, p1, adjust = false ) {
|
|
1948
1958
|
|
|
@@ -2219,7 +2229,7 @@ class ArcballControls extends Controls {
|
|
|
2219
2229
|
|
|
2220
2230
|
/**
|
|
2221
2231
|
* Set camera fov
|
|
2222
|
-
* @param {Number} value fov to be
|
|
2232
|
+
* @param {Number} value fov to be set
|
|
2223
2233
|
*/
|
|
2224
2234
|
setFov( value ) {
|
|
2225
2235
|
|
|
@@ -2234,8 +2244,9 @@ class ArcballControls extends Controls {
|
|
|
2234
2244
|
|
|
2235
2245
|
/**
|
|
2236
2246
|
* Set values in transformation object
|
|
2237
|
-
*
|
|
2238
|
-
* @param {Matrix4}
|
|
2247
|
+
*
|
|
2248
|
+
* @param {Matrix4} [camera=null] Transformation to be applied to the camera
|
|
2249
|
+
* @param {Matrix4} [gizmos=null] Transformation to be applied to gizmos
|
|
2239
2250
|
*/
|
|
2240
2251
|
setTransformationMatrices( camera = null, gizmos = null ) {
|
|
2241
2252
|
|
|
@@ -2279,9 +2290,10 @@ class ArcballControls extends Controls {
|
|
|
2279
2290
|
|
|
2280
2291
|
/**
|
|
2281
2292
|
* Rotate camera around its direction axis passing by a given point by a given angle
|
|
2293
|
+
*
|
|
2282
2294
|
* @param {Vector3} point The point where the rotation axis is passing trough
|
|
2283
2295
|
* @param {Number} angle Angle in radians
|
|
2284
|
-
* @returns The computed
|
|
2296
|
+
* @returns {Object} The computed transformation matrix
|
|
2285
2297
|
*/
|
|
2286
2298
|
zRotate( point, angle ) {
|
|
2287
2299
|
|
|
@@ -2313,9 +2325,10 @@ class ArcballControls extends Controls {
|
|
|
2313
2325
|
|
|
2314
2326
|
/**
|
|
2315
2327
|
* Unproject the cursor on the 3D object surface
|
|
2328
|
+
*
|
|
2316
2329
|
* @param {Vector2} cursor Cursor coordinates in NDC
|
|
2317
2330
|
* @param {Camera} camera Virtual camera
|
|
2318
|
-
* @returns {Vector3} The point of intersection with the model, if exist, null otherwise
|
|
2331
|
+
* @returns {Vector3?} The point of intersection with the model, if exist, null otherwise
|
|
2319
2332
|
*/
|
|
2320
2333
|
unprojectOnObj( cursor, camera ) {
|
|
2321
2334
|
|
|
@@ -2476,7 +2489,7 @@ class ArcballControls extends Controls {
|
|
|
2476
2489
|
* @param {Number} cursorX Cursor horizontal coordinate on screen
|
|
2477
2490
|
* @param {Number} cursorY Cursor vertical coordinate on screen
|
|
2478
2491
|
* @param {HTMLElement} canvas The canvas where the renderer draws its output
|
|
2479
|
-
* @param {Boolean} initialDistance If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only)
|
|
2492
|
+
* @param {Boolean} [initialDistance=false] If initial distance between camera and gizmos should be used for calculations instead of current (Perspective only)
|
|
2480
2493
|
* @returns {Vector3} The unprojected point on the trackball plane
|
|
2481
2494
|
*/
|
|
2482
2495
|
unprojectOnTbPlane( camera, cursorX, cursorY, canvas, initialDistance = false ) {
|
|
@@ -2576,7 +2589,7 @@ class ArcballControls extends Controls {
|
|
|
2576
2589
|
/**
|
|
2577
2590
|
* Update the trackball FSA
|
|
2578
2591
|
* @param {STATE} newState New state of the FSA
|
|
2579
|
-
* @param {Boolean} updateMatrices If
|
|
2592
|
+
* @param {Boolean} updateMatrices If matrices state should be updated
|
|
2580
2593
|
*/
|
|
2581
2594
|
updateTbState( newState, updateMatrices ) {
|
|
2582
2595
|
|
|
@@ -2591,8 +2604,6 @@ class ArcballControls extends Controls {
|
|
|
2591
2604
|
|
|
2592
2605
|
update() {
|
|
2593
2606
|
|
|
2594
|
-
const EPS = 0.000001;
|
|
2595
|
-
|
|
2596
2607
|
if ( this.target.equals( this._currentTarget ) === false ) {
|
|
2597
2608
|
|
|
2598
2609
|
this._gizmos.position.copy( this.target ); //for correct radius calculation
|
|
@@ -2618,7 +2629,7 @@ class ArcballControls extends Controls {
|
|
|
2618
2629
|
//check distance
|
|
2619
2630
|
const distance = this.object.position.distanceTo( this._gizmos.position );
|
|
2620
2631
|
|
|
2621
|
-
if ( distance > this.maxDistance +
|
|
2632
|
+
if ( distance > this.maxDistance + _EPS || distance < this.minDistance - _EPS ) {
|
|
2622
2633
|
|
|
2623
2634
|
const newDistance = MathUtils.clamp( distance, this.minDistance, this.maxDistance );
|
|
2624
2635
|
this.applyTransformMatrix( this.scale( newDistance / distance, this._gizmos.position ) );
|
|
@@ -2637,7 +2648,7 @@ class ArcballControls extends Controls {
|
|
|
2637
2648
|
const oldRadius = this._tbRadius;
|
|
2638
2649
|
this._tbRadius = this.calculateTbRadius( this.object );
|
|
2639
2650
|
|
|
2640
|
-
if ( oldRadius < this._tbRadius -
|
|
2651
|
+
if ( oldRadius < this._tbRadius - _EPS || oldRadius > this._tbRadius + _EPS ) {
|
|
2641
2652
|
|
|
2642
2653
|
const scale = ( this._gizmos.scale.x + this._gizmos.scale.y + this._gizmos.scale.z ) / 3;
|
|
2643
2654
|
const newRadius = this._tbRadius / scale;
|
|
@@ -92,6 +92,7 @@ class OrbitControls extends Controls {
|
|
|
92
92
|
// Set to false to disable rotating
|
|
93
93
|
this.enableRotate = true;
|
|
94
94
|
this.rotateSpeed = 1.0;
|
|
95
|
+
this.keyRotateSpeed = 1.0;
|
|
95
96
|
|
|
96
97
|
// Set to false to disable panning
|
|
97
98
|
this.enablePan = true;
|
|
@@ -786,7 +787,7 @@ class OrbitControls extends Controls {
|
|
|
786
787
|
|
|
787
788
|
if ( this.enableRotate ) {
|
|
788
789
|
|
|
789
|
-
this._rotateUp( _twoPI * this.
|
|
790
|
+
this._rotateUp( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
|
|
790
791
|
|
|
791
792
|
}
|
|
792
793
|
|
|
@@ -809,7 +810,7 @@ class OrbitControls extends Controls {
|
|
|
809
810
|
|
|
810
811
|
if ( this.enableRotate ) {
|
|
811
812
|
|
|
812
|
-
this._rotateUp( - _twoPI * this.
|
|
813
|
+
this._rotateUp( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
|
|
813
814
|
|
|
814
815
|
}
|
|
815
816
|
|
|
@@ -832,7 +833,7 @@ class OrbitControls extends Controls {
|
|
|
832
833
|
|
|
833
834
|
if ( this.enableRotate ) {
|
|
834
835
|
|
|
835
|
-
this._rotateLeft( _twoPI * this.
|
|
836
|
+
this._rotateLeft( _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
|
|
836
837
|
|
|
837
838
|
}
|
|
838
839
|
|
|
@@ -855,7 +856,7 @@ class OrbitControls extends Controls {
|
|
|
855
856
|
|
|
856
857
|
if ( this.enableRotate ) {
|
|
857
858
|
|
|
858
|
-
this._rotateLeft( - _twoPI * this.
|
|
859
|
+
this._rotateLeft( - _twoPI * this.keyRotateSpeed / this.domElement.clientHeight );
|
|
859
860
|
|
|
860
861
|
}
|
|
861
862
|
|
|
@@ -6,8 +6,7 @@ import {
|
|
|
6
6
|
Box3,
|
|
7
7
|
Object3D,
|
|
8
8
|
WebGLCoordinateSystem,
|
|
9
|
-
|
|
10
|
-
Node
|
|
9
|
+
ShadowBaseNode
|
|
11
10
|
} from 'three/webgpu';
|
|
12
11
|
|
|
13
12
|
import { CSMFrustum } from './CSMFrustum.js';
|
|
@@ -36,13 +35,12 @@ class LwLight extends Object3D {
|
|
|
36
35
|
|
|
37
36
|
}
|
|
38
37
|
|
|
39
|
-
class CSMShadowNode extends
|
|
38
|
+
class CSMShadowNode extends ShadowBaseNode {
|
|
40
39
|
|
|
41
40
|
constructor( light, data = {} ) {
|
|
42
41
|
|
|
43
|
-
super();
|
|
42
|
+
super( light );
|
|
44
43
|
|
|
45
|
-
this.light = light;
|
|
46
44
|
this.camera = null;
|
|
47
45
|
this.cascades = data.cascades || 3;
|
|
48
46
|
this.maxFar = data.maxFar || 100000;
|
|
@@ -57,7 +55,6 @@ class CSMShadowNode extends Node {
|
|
|
57
55
|
this._cascades = [];
|
|
58
56
|
this.mainFrustum = null;
|
|
59
57
|
this.frustums = [];
|
|
60
|
-
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
61
58
|
|
|
62
59
|
this.lights = [];
|
|
63
60
|
|
|
@@ -78,6 +75,8 @@ class CSMShadowNode extends Node {
|
|
|
78
75
|
for ( let i = 0; i < this.cascades; i ++ ) {
|
|
79
76
|
|
|
80
77
|
const lwLight = new LwLight();
|
|
78
|
+
lwLight.castShadow = true;
|
|
79
|
+
|
|
81
80
|
const lShadow = light.shadow.clone();
|
|
82
81
|
lShadow.bias = lShadow.bias * ( i + 1 );
|
|
83
82
|
|
|
@@ -256,7 +255,7 @@ class CSMShadowNode extends Node {
|
|
|
256
255
|
setupFade() {
|
|
257
256
|
|
|
258
257
|
const cameraNear = reference( 'camera.near', 'float', this ).setGroup( renderGroup );
|
|
259
|
-
const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( '
|
|
258
|
+
const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cascades' );
|
|
260
259
|
|
|
261
260
|
const shadowFar = uniform( 'float' ).setGroup( renderGroup ).label( 'shadowFar' )
|
|
262
261
|
.onRenderUpdate( () => Math.min( this.maxFar, this.camera.far ) );
|
|
@@ -264,7 +263,9 @@ class CSMShadowNode extends Node {
|
|
|
264
263
|
const linearDepth = viewZToOrthographicDepth( positionView.z, cameraNear, shadowFar ).toVar( 'linearDepth' );
|
|
265
264
|
const lastCascade = this.cascades - 1;
|
|
266
265
|
|
|
267
|
-
return Fn( () => {
|
|
266
|
+
return Fn( ( builder ) => {
|
|
267
|
+
|
|
268
|
+
this.setupShadowPosition( builder );
|
|
268
269
|
|
|
269
270
|
const ret = vec4( 1, 1, 1, 1 ).toVar( 'shadowValue' );
|
|
270
271
|
|
|
@@ -310,7 +311,7 @@ class CSMShadowNode extends Node {
|
|
|
310
311
|
|
|
311
312
|
if ( i === 0 ) {
|
|
312
313
|
|
|
313
|
-
//
|
|
314
|
+
// don't fade at nearest edge
|
|
314
315
|
ratio = linearDepth.greaterThan( cascadeCenter ).select( ratio, 1 );
|
|
315
316
|
|
|
316
317
|
}
|
|
@@ -330,14 +331,16 @@ class CSMShadowNode extends Node {
|
|
|
330
331
|
setupStandard() {
|
|
331
332
|
|
|
332
333
|
const cameraNear = reference( 'camera.near', 'float', this ).setGroup( renderGroup );
|
|
333
|
-
const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( '
|
|
334
|
+
const cascades = reference( '_cascades', 'vec2', this ).setGroup( renderGroup ).label( 'cascades' );
|
|
334
335
|
|
|
335
336
|
const shadowFar = uniform( 'float' ).setGroup( renderGroup ).label( 'shadowFar' )
|
|
336
337
|
.onRenderUpdate( () => Math.min( this.maxFar, this.camera.far ) );
|
|
337
338
|
|
|
338
339
|
const linearDepth = viewZToOrthographicDepth( positionView.z, cameraNear, shadowFar ).toVar( 'linearDepth' );
|
|
339
340
|
|
|
340
|
-
return Fn( () => {
|
|
341
|
+
return Fn( ( builder ) => {
|
|
342
|
+
|
|
343
|
+
this.setupShadowPosition( builder );
|
|
341
344
|
|
|
342
345
|
const ret = vec4( 1, 1, 1, 1 ).toVar( 'shadowValue' );
|
|
343
346
|
const cascade = vec2().toVar( 'cascade' );
|
|
@@ -430,6 +433,8 @@ class CSMShadowNode extends Node {
|
|
|
430
433
|
|
|
431
434
|
}
|
|
432
435
|
|
|
436
|
+
super.dispose();
|
|
437
|
+
|
|
433
438
|
}
|
|
434
439
|
|
|
435
440
|
}
|
|
@@ -513,13 +513,16 @@ function calcVolumePoint( p, q, r, U, V, W, P, u, v, w, target ) {
|
|
|
513
513
|
}
|
|
514
514
|
|
|
515
515
|
}
|
|
516
|
+
|
|
516
517
|
const Sw = new Vector4( 0, 0, 0, 0 );
|
|
517
518
|
for ( let m = 0; m <= r; ++ m ) {
|
|
519
|
+
|
|
518
520
|
for ( let l = 0; l <= q; ++ l ) {
|
|
519
521
|
|
|
520
522
|
Sw.add( temp[ m ][ l ].multiplyScalar( Nw[ m ] ).multiplyScalar( Nv[ l ] ) );
|
|
521
523
|
|
|
522
524
|
}
|
|
525
|
+
|
|
523
526
|
}
|
|
524
527
|
|
|
525
528
|
Sw.divideScalar( Sw.w );
|