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
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
Sphere,
|
|
10
10
|
Vector3,
|
|
11
11
|
Vector4,
|
|
12
|
-
Line2NodeMaterial
|
|
12
|
+
Line2NodeMaterial,
|
|
13
|
+
Vector2
|
|
13
14
|
} from 'three/webgpu';
|
|
14
|
-
|
|
15
15
|
import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
|
|
16
16
|
|
|
17
17
|
const _start = new Vector3();
|
|
@@ -29,6 +29,7 @@ const _closestPoint = new Vector3();
|
|
|
29
29
|
const _box = new Box3();
|
|
30
30
|
const _sphere = new Sphere();
|
|
31
31
|
const _clipToWorldVector = new Vector4();
|
|
32
|
+
const _viewport = new Vector4();
|
|
32
33
|
|
|
33
34
|
let _ray, _lineWidth;
|
|
34
35
|
|
|
@@ -93,8 +94,7 @@ function raycastWorldUnits( lineSegments, intersects ) {
|
|
|
93
94
|
function raycastScreenSpace( lineSegments, camera, intersects ) {
|
|
94
95
|
|
|
95
96
|
const projectionMatrix = camera.projectionMatrix;
|
|
96
|
-
const
|
|
97
|
-
const resolution = material.resolution;
|
|
97
|
+
const resolution = lineSegments.resolution;
|
|
98
98
|
const matrixWorld = lineSegments.matrixWorld;
|
|
99
99
|
|
|
100
100
|
const geometry = lineSegments.geometry;
|
|
@@ -233,6 +233,8 @@ class LineSegments2 extends Mesh {
|
|
|
233
233
|
|
|
234
234
|
this.type = 'LineSegments2';
|
|
235
235
|
|
|
236
|
+
this.resolution = new Vector2();
|
|
237
|
+
|
|
236
238
|
}
|
|
237
239
|
|
|
238
240
|
// for backwards-compatibility, but could be a method of LineSegmentsGeometry...
|
|
@@ -264,6 +266,13 @@ class LineSegments2 extends Mesh {
|
|
|
264
266
|
|
|
265
267
|
}
|
|
266
268
|
|
|
269
|
+
onBeforeRender( renderer ) {
|
|
270
|
+
|
|
271
|
+
renderer.getViewport( _viewport );
|
|
272
|
+
this.resolution.set( _viewport.z, _viewport.w );
|
|
273
|
+
|
|
274
|
+
}
|
|
275
|
+
|
|
267
276
|
raycast( raycaster, intersects ) {
|
|
268
277
|
|
|
269
278
|
const worldUnits = this.material.worldUnits;
|
|
@@ -303,7 +312,7 @@ class LineSegments2 extends Mesh {
|
|
|
303
312
|
} else {
|
|
304
313
|
|
|
305
314
|
const distanceToSphere = Math.max( camera.near, _sphere.distanceToPoint( _ray.origin ) );
|
|
306
|
-
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere,
|
|
315
|
+
sphereMargin = getWorldSpaceHalfWidth( camera, distanceToSphere, this.resolution );
|
|
307
316
|
|
|
308
317
|
}
|
|
309
318
|
|
|
@@ -333,7 +342,7 @@ class LineSegments2 extends Mesh {
|
|
|
333
342
|
} else {
|
|
334
343
|
|
|
335
344
|
const distanceToBox = Math.max( camera.near, _box.distanceToPoint( _ray.origin ) );
|
|
336
|
-
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox,
|
|
345
|
+
boxMargin = getWorldSpaceHalfWidth( camera, distanceToBox, this.resolution );
|
|
337
346
|
|
|
338
347
|
}
|
|
339
348
|
|
|
@@ -386,8 +386,11 @@ class ThreeMFLoader extends Loader {
|
|
|
386
386
|
|
|
387
387
|
const attrib = portNodes[ i ].attributes[ j ];
|
|
388
388
|
if ( attrib.specified ) {
|
|
389
|
+
|
|
389
390
|
args[ attrib.name ] = attrib.value;
|
|
391
|
+
|
|
390
392
|
}
|
|
393
|
+
|
|
391
394
|
}
|
|
392
395
|
|
|
393
396
|
portArguments[ portNodes[ i ].getAttribute( 'identifier' ) ] = args;
|
|
@@ -415,19 +418,19 @@ class ThreeMFLoader extends Loader {
|
|
|
415
418
|
|
|
416
419
|
if ( operatorNode.nodeName === 'i:in' || operatorNode.nodeName === 'i:out' ) {
|
|
417
420
|
|
|
418
|
-
operations[ operatorNode.nodeName === 'i:in' ?
|
|
421
|
+
operations[ operatorNode.nodeName === 'i:in' ? 'inputs' : 'outputs' ] = parseImplicitIONode( operatorNode );
|
|
419
422
|
|
|
420
423
|
} else {
|
|
421
424
|
|
|
422
425
|
const inputNodes = operatorNode.children;
|
|
423
|
-
|
|
426
|
+
const portArguments = { 'op': operatorNode.nodeName.substring( 2 ), 'identifier': operatorNode.getAttribute( 'identifier' ) };
|
|
424
427
|
for ( let i = 0; i < inputNodes.length; i ++ ) {
|
|
425
428
|
|
|
426
429
|
portArguments[ inputNodes[ i ].nodeName.substring( 2 ) ] = parseImplicitIONode( inputNodes[ i ] );
|
|
427
430
|
|
|
428
431
|
}
|
|
429
432
|
|
|
430
|
-
operations[ portArguments[
|
|
433
|
+
operations[ portArguments[ 'identifier' ] ] = portArguments;
|
|
431
434
|
|
|
432
435
|
}
|
|
433
436
|
|
|
@@ -204,7 +204,7 @@ class BVHLoader extends Loader {
|
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
/*
|
|
207
|
-
Recursively parses the
|
|
207
|
+
Recursively parses the HIERARCHY section of the BVH file
|
|
208
208
|
|
|
209
209
|
- lines: all lines of the file. lines are consumed as we go along.
|
|
210
210
|
- firstline: line containing the node type and name e.g. 'JOINT hip'
|
|
@@ -299,7 +299,7 @@ class ColladaLoader extends Loader {
|
|
|
299
299
|
|
|
300
300
|
if ( hasChildren === false ) {
|
|
301
301
|
|
|
302
|
-
// since 'id' attributes can be optional, it's necessary to generate a UUID for
|
|
302
|
+
// since 'id' attributes can be optional, it's necessary to generate a UUID for unique assignment
|
|
303
303
|
|
|
304
304
|
library.animations[ xml.getAttribute( 'id' ) || MathUtils.generateUUID() ] = data;
|
|
305
305
|
|
|
@@ -977,7 +977,7 @@ class ColladaLoader extends Loader {
|
|
|
977
977
|
}
|
|
978
978
|
|
|
979
979
|
// we sort the joints in descending order based on the weights.
|
|
980
|
-
// this ensures, we only
|
|
980
|
+
// this ensures, we only proceed the most important joints of the vertex
|
|
981
981
|
|
|
982
982
|
vertexSkinData.sort( descending );
|
|
983
983
|
|
|
@@ -1593,7 +1593,7 @@ class ColladaLoader extends Loader {
|
|
|
1593
1593
|
|
|
1594
1594
|
}
|
|
1595
1595
|
|
|
1596
|
-
// create texture if image is
|
|
1596
|
+
// create texture if image is available
|
|
1597
1597
|
|
|
1598
1598
|
if ( image !== null ) {
|
|
1599
1599
|
|
|
@@ -2392,7 +2392,7 @@ class ColladaLoader extends Loader {
|
|
|
2392
2392
|
break;
|
|
2393
2393
|
|
|
2394
2394
|
default:
|
|
2395
|
-
console.warn( 'THREE.ColladaLoader:
|
|
2395
|
+
console.warn( 'THREE.ColladaLoader: Unknown primitive type:', primitive.type );
|
|
2396
2396
|
|
|
2397
2397
|
}
|
|
2398
2398
|
|
|
@@ -3434,7 +3434,7 @@ class ColladaLoader extends Loader {
|
|
|
3434
3434
|
let i, j, data;
|
|
3435
3435
|
|
|
3436
3436
|
// a skeleton can have multiple root bones. collada expresses this
|
|
3437
|
-
//
|
|
3437
|
+
// situation with multiple "skeleton" tags per controller instance
|
|
3438
3438
|
|
|
3439
3439
|
for ( i = 0; i < skeletons.length; i ++ ) {
|
|
3440
3440
|
|
|
@@ -109,6 +109,33 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
109
109
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
function loadRGBMip( buffer, dataOffset, width, height ) {
|
|
113
|
+
|
|
114
|
+
const dataLength = width * height * 3;
|
|
115
|
+
const srcBuffer = new Uint8Array( buffer, dataOffset, dataLength );
|
|
116
|
+
const byteArray = new Uint8Array( width * height * 4 );
|
|
117
|
+
let dst = 0;
|
|
118
|
+
let src = 0;
|
|
119
|
+
for ( let y = 0; y < height; y ++ ) {
|
|
120
|
+
|
|
121
|
+
for ( let x = 0; x < width; x ++ ) {
|
|
122
|
+
|
|
123
|
+
const b = srcBuffer[ src ]; src ++;
|
|
124
|
+
const g = srcBuffer[ src ]; src ++;
|
|
125
|
+
const r = srcBuffer[ src ]; src ++;
|
|
126
|
+
byteArray[ dst ] = r; dst ++; //r
|
|
127
|
+
byteArray[ dst ] = g; dst ++; //g
|
|
128
|
+
byteArray[ dst ] = b; dst ++; //b
|
|
129
|
+
byteArray[ dst ] = 1.0; dst ++; //a
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return byteArray;
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
112
139
|
const FOURCC_DXT1 = fourCCToInt32( 'DXT1' );
|
|
113
140
|
const FOURCC_DXT3 = fourCCToInt32( 'DXT3' );
|
|
114
141
|
const FOURCC_DXT5 = fourCCToInt32( 'DXT5' );
|
|
@@ -161,6 +188,7 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
161
188
|
const fourCC = header[ off_pfFourCC ];
|
|
162
189
|
|
|
163
190
|
let isRGBAUncompressed = false;
|
|
191
|
+
let isRGBUncompressed = false;
|
|
164
192
|
|
|
165
193
|
let dataOffset = header[ off_size ] + 4;
|
|
166
194
|
|
|
@@ -236,6 +264,15 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
236
264
|
blockBytes = 64;
|
|
237
265
|
dds.format = RGBAFormat;
|
|
238
266
|
|
|
267
|
+
} else if ( header[ off_RGBBitCount ] === 24
|
|
268
|
+
&& header[ off_RBitMask ] & 0xff0000
|
|
269
|
+
&& header[ off_GBitMask ] & 0xff00
|
|
270
|
+
&& header[ off_BBitMask ] & 0xff ) {
|
|
271
|
+
|
|
272
|
+
isRGBUncompressed = true;
|
|
273
|
+
blockBytes = 64;
|
|
274
|
+
dds.format = RGBAFormat;
|
|
275
|
+
|
|
239
276
|
} else {
|
|
240
277
|
|
|
241
278
|
console.error( 'THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC( fourCC ) );
|
|
@@ -290,6 +327,11 @@ class DDSLoader extends CompressedTextureLoader {
|
|
|
290
327
|
byteArray = loadARGBMip( buffer, dataOffset, width, height );
|
|
291
328
|
dataLength = byteArray.length;
|
|
292
329
|
|
|
330
|
+
} else if ( isRGBUncompressed ) {
|
|
331
|
+
|
|
332
|
+
byteArray = loadRGBMip( buffer, dataOffset, width, height );
|
|
333
|
+
dataLength = width * height * 3;
|
|
334
|
+
|
|
293
335
|
} else {
|
|
294
336
|
|
|
295
337
|
dataLength = Math.max( 4, width ) / 4 * Math.max( 4, height ) / 4 * blockBytes;
|
|
@@ -14,11 +14,13 @@ import {
|
|
|
14
14
|
* Gcode files are composed by commands used by machines to create objects.
|
|
15
15
|
*
|
|
16
16
|
* @class GCodeLoader
|
|
17
|
-
* @param {Manager} manager Loading manager.
|
|
18
17
|
*/
|
|
19
18
|
|
|
20
19
|
class GCodeLoader extends Loader {
|
|
21
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @param {Manager} manager Loading manager.
|
|
23
|
+
*/
|
|
22
24
|
constructor( manager ) {
|
|
23
25
|
|
|
24
26
|
super( manager );
|
|
@@ -123,7 +125,7 @@ class GCodeLoader extends Loader {
|
|
|
123
125
|
const tokens = lines[ i ].split( ' ' );
|
|
124
126
|
const cmd = tokens[ 0 ].toUpperCase();
|
|
125
127
|
|
|
126
|
-
//
|
|
128
|
+
//Arguments
|
|
127
129
|
const args = {};
|
|
128
130
|
tokens.splice( 1 ).forEach( function ( token ) {
|
|
129
131
|
|
|
@@ -600,8 +600,6 @@ class GLTFLightsExtension {
|
|
|
600
600
|
// here, because node-level parsing will only override position if explicitly specified.
|
|
601
601
|
lightNode.position.set( 0, 0, 0 );
|
|
602
602
|
|
|
603
|
-
lightNode.decay = 2;
|
|
604
|
-
|
|
605
603
|
assignExtrasToUserData( lightNode, lightDef );
|
|
606
604
|
|
|
607
605
|
if ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;
|
|
@@ -2255,6 +2253,9 @@ const ALPHA_MODES = {
|
|
|
2255
2253
|
|
|
2256
2254
|
/**
|
|
2257
2255
|
* Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material
|
|
2256
|
+
*
|
|
2257
|
+
* @param {Object<String, Material>} cache
|
|
2258
|
+
* @return {Material}
|
|
2258
2259
|
*/
|
|
2259
2260
|
function createDefaultMaterial( cache ) {
|
|
2260
2261
|
|
|
@@ -2753,6 +2754,9 @@ class GLTFParser {
|
|
|
2753
2754
|
* Textures) can be reused directly and are not marked here.
|
|
2754
2755
|
*
|
|
2755
2756
|
* Example: CesiumMilkTruck sample model reuses "Wheel" meshes.
|
|
2757
|
+
*
|
|
2758
|
+
* @param {Object} cache
|
|
2759
|
+
* @param {Object3D} index
|
|
2756
2760
|
*/
|
|
2757
2761
|
_addNodeRef( cache, index ) {
|
|
2758
2762
|
|
|
@@ -2768,7 +2772,14 @@ class GLTFParser {
|
|
|
2768
2772
|
|
|
2769
2773
|
}
|
|
2770
2774
|
|
|
2771
|
-
/**
|
|
2775
|
+
/**
|
|
2776
|
+
* Returns a reference to a shared resource, cloning it if necessary.
|
|
2777
|
+
*
|
|
2778
|
+
* @param {Object} cache
|
|
2779
|
+
* @param {Number} index
|
|
2780
|
+
* @param {Object} object
|
|
2781
|
+
* @return {Object}
|
|
2782
|
+
*/
|
|
2772
2783
|
_getNodeRef( cache, index, object ) {
|
|
2773
2784
|
|
|
2774
2785
|
if ( cache.refs[ index ] <= 1 ) return object;
|
|
@@ -3340,9 +3351,11 @@ class GLTFParser {
|
|
|
3340
3351
|
|
|
3341
3352
|
/**
|
|
3342
3353
|
* Asynchronously assigns a texture to the given material parameters.
|
|
3354
|
+
*
|
|
3343
3355
|
* @param {Object} materialParams
|
|
3344
3356
|
* @param {string} mapName
|
|
3345
3357
|
* @param {Object} mapDef
|
|
3358
|
+
* @param {string} colorSpace
|
|
3346
3359
|
* @return {Promise<Texture>}
|
|
3347
3360
|
*/
|
|
3348
3361
|
assignTexture( materialParams, mapName, mapDef, colorSpace ) {
|
|
@@ -3651,7 +3664,12 @@ class GLTFParser {
|
|
|
3651
3664
|
|
|
3652
3665
|
}
|
|
3653
3666
|
|
|
3654
|
-
/**
|
|
3667
|
+
/**
|
|
3668
|
+
* When Object3D instances are targeted by animation, they need unique names.
|
|
3669
|
+
*
|
|
3670
|
+
* @param {String} originalName
|
|
3671
|
+
* @return {String}
|
|
3672
|
+
*/
|
|
3655
3673
|
createUniqueName( originalName ) {
|
|
3656
3674
|
|
|
3657
3675
|
const sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );
|
|
@@ -790,7 +790,12 @@ KTX2Loader.BasisWorker = function () {
|
|
|
790
790
|
|
|
791
791
|
}
|
|
792
792
|
|
|
793
|
-
/**
|
|
793
|
+
/**
|
|
794
|
+
* Concatenates N byte arrays.
|
|
795
|
+
*
|
|
796
|
+
* @param {Uint8Array[]} arrays
|
|
797
|
+
* @return {Uint8Array}
|
|
798
|
+
*/
|
|
794
799
|
function concat( arrays ) {
|
|
795
800
|
|
|
796
801
|
if ( arrays.length === 1 ) return arrays[ 0 ];
|
|
@@ -46,10 +46,10 @@ const COMPRESSED_2D = 0; // uses a gl.compressedTexImage2D()
|
|
|
46
46
|
class KhronosTextureContainer {
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
* @param {ArrayBuffer} arrayBuffer- contents of the KTX container file
|
|
50
|
-
* @param {number} facesExpected- should be either 1 or 6, based whether a cube texture or or
|
|
51
|
-
* @param {boolean} threeDExpected- provision for indicating that data should be a 3D texture, not implemented
|
|
52
|
-
* @param {boolean} textureArrayExpected- provision for indicating that data should be a texture array, not implemented
|
|
49
|
+
* @param {ArrayBuffer} arrayBuffer - contents of the KTX container file
|
|
50
|
+
* @param {number} facesExpected - should be either 1 or 6, based whether a cube texture or or
|
|
51
|
+
* @param {boolean} threeDExpected - provision for indicating that data should be a 3D texture, not implemented
|
|
52
|
+
* @param {boolean} textureArrayExpected - provision for indicating that data should be a texture array, not implemented
|
|
53
53
|
*/
|
|
54
54
|
constructor( arrayBuffer, facesExpected /*, threeDExpected, textureArrayExpected */ ) {
|
|
55
55
|
|
|
@@ -2266,7 +2266,7 @@ class LDrawLoader extends Loader {
|
|
|
2266
2266
|
|
|
2267
2267
|
if ( this.ConditionalLineMaterial === null ) {
|
|
2268
2268
|
|
|
2269
|
-
throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be
|
|
2269
|
+
throw new Error( 'THREE.LDrawLoader: ConditionalLineMaterial type must be specified via .setConditionalLineMaterial().' );
|
|
2270
2270
|
|
|
2271
2271
|
}
|
|
2272
2272
|
|
|
@@ -33,7 +33,7 @@ class LottieLoader extends Loader {
|
|
|
33
33
|
|
|
34
34
|
const data = JSON.parse( text );
|
|
35
35
|
|
|
36
|
-
// lottie uses container.
|
|
36
|
+
// lottie uses container.offsetWidth and offsetHeight
|
|
37
37
|
// to define width/height
|
|
38
38
|
|
|
39
39
|
const container = document.createElement( 'div' );
|
|
@@ -232,7 +232,7 @@ class NRRDLoader extends Loader {
|
|
|
232
232
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
//parse the data when
|
|
235
|
+
//parse the data when registered as one of this type : 'text', 'ascii', 'txt'
|
|
236
236
|
function parseDataAsText( data, start, end ) {
|
|
237
237
|
|
|
238
238
|
let number = '';
|
|
@@ -127,19 +127,19 @@ class PLYLoader extends Loader {
|
|
|
127
127
|
const lines = headerText.split( /\r\n|\r|\n/ );
|
|
128
128
|
let currentElement;
|
|
129
129
|
|
|
130
|
-
function make_ply_element_property(
|
|
130
|
+
function make_ply_element_property( propertyValues, propertyNameMapping ) {
|
|
131
131
|
|
|
132
|
-
const property = { type:
|
|
132
|
+
const property = { type: propertyValues[ 0 ] };
|
|
133
133
|
|
|
134
134
|
if ( property.type === 'list' ) {
|
|
135
135
|
|
|
136
|
-
property.name =
|
|
137
|
-
property.countType =
|
|
138
|
-
property.itemType =
|
|
136
|
+
property.name = propertyValues[ 3 ];
|
|
137
|
+
property.countType = propertyValues[ 1 ];
|
|
138
|
+
property.itemType = propertyValues[ 2 ];
|
|
139
139
|
|
|
140
140
|
} else {
|
|
141
141
|
|
|
142
|
-
property.name =
|
|
142
|
+
property.name = propertyValues[ 1 ];
|
|
143
143
|
|
|
144
144
|
}
|
|
145
145
|
|
|
@@ -576,7 +576,7 @@ class PLYLoader extends Loader {
|
|
|
576
576
|
|
|
577
577
|
switch ( type ) {
|
|
578
578
|
|
|
579
|
-
//
|
|
579
|
+
// correspondences for non-specific length types here match rply:
|
|
580
580
|
case 'int8': case 'char': return { read: ( at ) => {
|
|
581
581
|
|
|
582
582
|
return dataview.getInt8( at );
|
|
@@ -160,7 +160,7 @@ function _parseV2( pvrDatas ) {
|
|
|
160
160
|
pvrDatas.numMipmaps = numMipmaps + 1;
|
|
161
161
|
|
|
162
162
|
// guess cubemap type seems tricky in v2
|
|
163
|
-
// it
|
|
163
|
+
// it's just a pvr containing 6 surface (no explicit cubemap type)
|
|
164
164
|
pvrDatas.isCubemap = ( numSurfs === 6 );
|
|
165
165
|
|
|
166
166
|
return _extract( pvrDatas );
|
|
@@ -1633,7 +1633,7 @@ class SVGLoader extends Loader {
|
|
|
1633
1633
|
( curve.aEndAngle - curve.aStartAngle ) % ( 2 * Math.PI ) < Number.EPSILON;
|
|
1634
1634
|
|
|
1635
1635
|
// Do not touch angles of a full ellipse because after transformation they
|
|
1636
|
-
// would converge to a
|
|
1636
|
+
// would converge to a single value effectively removing the whole curve
|
|
1637
1637
|
|
|
1638
1638
|
if ( ! isFullEllipse ) {
|
|
1639
1639
|
|
|
@@ -2124,7 +2124,7 @@ class SVGLoader extends Loader {
|
|
|
2124
2124
|
|
|
2125
2125
|
// check if the center of the bounding box is in the bounding box of the paths.
|
|
2126
2126
|
// this is a pruning method to limit the search of intersections in paths that can't envelop of the current path.
|
|
2127
|
-
// if a path envelops another path. The center of that
|
|
2127
|
+
// if a path envelops another path. The center of that other path, has to be inside the bounding box of the enveloping path.
|
|
2128
2128
|
if ( path.boundingBox.containsPoint( center ) ) {
|
|
2129
2129
|
|
|
2130
2130
|
const intersections = getIntersections( scanline, path.points );
|
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
* Loads geometry with uv and materials basic properties with texture support.
|
|
21
21
|
*
|
|
22
22
|
* @class TDSLoader
|
|
23
|
-
* @constructor
|
|
24
23
|
*/
|
|
25
24
|
|
|
26
25
|
class TDSLoader extends Loader {
|
|
@@ -398,7 +397,7 @@ class TDSLoader extends Loader {
|
|
|
398
397
|
|
|
399
398
|
} else if ( next.id === MESH_MATRIX ) {
|
|
400
399
|
|
|
401
|
-
this.debugMessage( '
|
|
400
|
+
this.debugMessage( ' Transformation Matrix (TODO)' );
|
|
402
401
|
|
|
403
402
|
const values = [];
|
|
404
403
|
for ( let i = 0; i < 12; i ++ ) {
|
|
@@ -250,7 +250,7 @@ class VRMLLoader extends Loader {
|
|
|
250
250
|
|
|
251
251
|
function createVisitor( BaseVRMLVisitor ) {
|
|
252
252
|
|
|
253
|
-
// the visitor is created
|
|
253
|
+
// the visitor is created dynamically based on the given base class
|
|
254
254
|
|
|
255
255
|
class VRMLToASTVisitor extends BaseVRMLVisitor {
|
|
256
256
|
|
|
@@ -1890,7 +1890,7 @@ class VRMLLoader extends Loader {
|
|
|
1890
1890
|
|
|
1891
1891
|
// if the colorIndex field is not empty, then one color is used for each polyline of the IndexedLineSet.
|
|
1892
1892
|
|
|
1893
|
-
const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering
|
|
1893
|
+
const expandedColorIndex = expandLineIndex( colorIndex ); // compute colors for each line segment (rendering primitive)
|
|
1894
1894
|
colorAttribute = computeAttributeFromIndexedData( expandedLineIndex, expandedColorIndex, color, 3 ); // compute data on vertex level
|
|
1895
1895
|
|
|
1896
1896
|
} else {
|
|
@@ -1907,8 +1907,8 @@ class VRMLLoader extends Loader {
|
|
|
1907
1907
|
|
|
1908
1908
|
// if the colorIndex field is not empty, then colors are applied to each vertex of the IndexedLineSet
|
|
1909
1909
|
|
|
1910
|
-
const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML
|
|
1911
|
-
const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering
|
|
1910
|
+
const flattenLineColors = flattenData( color, colorIndex ); // compute colors for each VRML primitive
|
|
1911
|
+
const expandedLineColors = expandLineData( flattenLineColors, coordIndex ); // compute colors for each line segment (rendering primitive)
|
|
1912
1912
|
colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
|
|
1913
1913
|
|
|
1914
1914
|
|
|
@@ -1916,7 +1916,7 @@ class VRMLLoader extends Loader {
|
|
|
1916
1916
|
|
|
1917
1917
|
// if the colorIndex field is empty, then the coordIndex field is used to choose colors from the Color node
|
|
1918
1918
|
|
|
1919
|
-
const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering
|
|
1919
|
+
const expandedLineColors = expandLineData( color, coordIndex ); // compute colors for each line segment (rendering primitive)
|
|
1920
1920
|
colorAttribute = computeAttributeFromLineData( expandedLineIndex, expandedLineColors ); // compute data on vertex level
|
|
1921
1921
|
|
|
1922
1922
|
}
|
|
@@ -2748,7 +2748,7 @@ class VRMLLoader extends Loader {
|
|
|
2748
2748
|
|
|
2749
2749
|
const indices = [];
|
|
2750
2750
|
|
|
2751
|
-
// since face
|
|
2751
|
+
// since face definitions can have more than three vertices, it's necessary to
|
|
2752
2752
|
// perform a simple triangulation
|
|
2753
2753
|
|
|
2754
2754
|
let start = 0;
|
|
@@ -3123,7 +3123,7 @@ class VRMLLoader extends Loader {
|
|
|
3123
3123
|
* node, but could be applied to other nodes with multiple faces as well.
|
|
3124
3124
|
*
|
|
3125
3125
|
* When used with the Background node, default is directionIsDown is true if
|
|
3126
|
-
* interpolating the skyColor down from the Zenith. When
|
|
3126
|
+
* interpolating the skyColor down from the Zenith. When interpolating up from
|
|
3127
3127
|
* the Nadir i.e. interpolating the groundColor, the directionIsDown is false.
|
|
3128
3128
|
*
|
|
3129
3129
|
* The first angle is never specified, it is the Zenith (0 rad). Angles are specified
|
|
@@ -463,7 +463,7 @@ class IFFParser {
|
|
|
463
463
|
}
|
|
464
464
|
|
|
465
465
|
// holds various data about texture node image state
|
|
466
|
-
// Data other
|
|
466
|
+
// Data other than mipMapLevel unknown
|
|
467
467
|
parseImageStateForm() {
|
|
468
468
|
|
|
469
469
|
this.reader.skip( 8 ); // unknown
|
|
@@ -577,7 +577,7 @@ class IFFParser {
|
|
|
577
577
|
fileName: ''
|
|
578
578
|
};
|
|
579
579
|
|
|
580
|
-
//
|
|
580
|
+
// search STIL block
|
|
581
581
|
while ( true ) {
|
|
582
582
|
|
|
583
583
|
var tag = this.reader.getIDTag();
|
|
@@ -653,11 +653,11 @@ class IFFParser {
|
|
|
653
653
|
|
|
654
654
|
var number = this.reader.getUint16();
|
|
655
655
|
var flags = this.reader.getUint16(); // If the least significant bit of flags is set, the layer is hidden.
|
|
656
|
-
var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be
|
|
656
|
+
var pivot = this.reader.getFloat32Array( 3 ); // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
657
657
|
var layer = {
|
|
658
658
|
number: number,
|
|
659
659
|
flags: flags, // If the least significant bit of flags is set, the layer is hidden.
|
|
660
|
-
pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be
|
|
660
|
+
pivot: [ - pivot[ 0 ], pivot[ 1 ], pivot[ 2 ] ], // Note: this seems to be superfluous, as the geometry is translated when pivot is present
|
|
661
661
|
name: this.reader.getString(),
|
|
662
662
|
};
|
|
663
663
|
|
|
@@ -319,6 +319,8 @@ class MeshGouraudMaterial extends ShaderMaterial {
|
|
|
319
319
|
|
|
320
320
|
super();
|
|
321
321
|
|
|
322
|
+
console.warn( 'THREE.MeshGouraudMaterial: MeshGouraudMaterial has been deprecated and will be removed with r183. Use THREE.MeshLambertMaterial instead.' ); // @deprecated r173
|
|
323
|
+
|
|
322
324
|
this.isMeshGouraudMaterial = true;
|
|
323
325
|
|
|
324
326
|
this.type = 'MeshGouraudMaterial';
|
|
@@ -698,7 +698,7 @@ class ConvexHull {
|
|
|
698
698
|
|
|
699
699
|
let eyeVertex, maxDistance = 0;
|
|
700
700
|
|
|
701
|
-
//
|
|
701
|
+
// grab the first available face and start with the first visible vertex of that face
|
|
702
702
|
|
|
703
703
|
const eyeFace = this.assigned.first().face;
|
|
704
704
|
let vertex = eyeFace.outside;
|
package/examples/jsm/math/OBB.js
CHANGED
|
@@ -84,6 +84,10 @@ class OBB {
|
|
|
84
84
|
/**
|
|
85
85
|
* Reference: Closest Point on OBB to Point in Real-Time Collision Detection
|
|
86
86
|
* by Christer Ericson (chapter 5.1.4)
|
|
87
|
+
*
|
|
88
|
+
* @param {Vector3} point
|
|
89
|
+
* @param {Vector3} result
|
|
90
|
+
* @returns {Vector3}
|
|
87
91
|
*/
|
|
88
92
|
clampPoint( point, result ) {
|
|
89
93
|
|
|
@@ -146,6 +150,9 @@ class OBB {
|
|
|
146
150
|
* Reference: OBB-OBB Intersection in Real-Time Collision Detection
|
|
147
151
|
* by Christer Ericson (chapter 4.4.1)
|
|
148
152
|
*
|
|
153
|
+
* @param {OBB} obb
|
|
154
|
+
* @param {Number} [epsilon=Number.EPSILON] - A small value to prevent arithmetic errors
|
|
155
|
+
* @returns {Boolean}
|
|
149
156
|
*/
|
|
150
157
|
intersectsOBB( obb, epsilon = Number.EPSILON ) {
|
|
151
158
|
|
|
@@ -285,6 +292,9 @@ class OBB {
|
|
|
285
292
|
/**
|
|
286
293
|
* Reference: Testing Box Against Plane in Real-Time Collision Detection
|
|
287
294
|
* by Christer Ericson (chapter 5.2.3)
|
|
295
|
+
*
|
|
296
|
+
* @param {Plane} plane
|
|
297
|
+
* @returns {Boolean}
|
|
288
298
|
*/
|
|
289
299
|
intersectsPlane( plane ) {
|
|
290
300
|
|
|
@@ -309,6 +319,10 @@ class OBB {
|
|
|
309
319
|
/**
|
|
310
320
|
* Performs a ray/OBB intersection test and stores the intersection point
|
|
311
321
|
* to the given 3D vector. If no intersection is detected, *null* is returned.
|
|
322
|
+
*
|
|
323
|
+
* @param {Ray} ray
|
|
324
|
+
* @param {Vector3} result
|
|
325
|
+
* @return {Vector3?}
|
|
312
326
|
*/
|
|
313
327
|
intersectRay( ray, result ) {
|
|
314
328
|
|
|
@@ -347,6 +361,9 @@ class OBB {
|
|
|
347
361
|
/**
|
|
348
362
|
* Performs a ray/OBB intersection test. Returns either true or false if
|
|
349
363
|
* there is a intersection or not.
|
|
364
|
+
*
|
|
365
|
+
* @param {Ray} ray
|
|
366
|
+
* @returns {Boolean}
|
|
350
367
|
*/
|
|
351
368
|
intersectsRay( ray ) {
|
|
352
369
|
|
|
@@ -99,16 +99,15 @@ import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
|
99
99
|
* // And compute each frame, before rendering to screen:
|
|
100
100
|
* gpuCompute.doRenderTarget( myFilter1, myRenderTarget );
|
|
101
101
|
* gpuCompute.doRenderTarget( myFilter2, outputRenderTarget );
|
|
102
|
-
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* @param {int} sizeX Computation problem size is always 2d: sizeX * sizeY elements.
|
|
106
|
-
* @param {int} sizeY Computation problem size is always 2d: sizeX * sizeY elements.
|
|
107
|
-
* @param {WebGLRenderer} renderer The renderer
|
|
108
|
-
*/
|
|
102
|
+
*/
|
|
109
103
|
|
|
110
104
|
class GPUComputationRenderer {
|
|
111
105
|
|
|
106
|
+
/**
|
|
107
|
+
* @param {Number} sizeX Computation problem size is always 2d: sizeX * sizeY elements.
|
|
108
|
+
* @param {Number} sizeY Computation problem size is always 2d: sizeX * sizeY elements.
|
|
109
|
+
* @param {WebGLRenderer} renderer The renderer
|
|
110
|
+
*/
|
|
112
111
|
constructor( sizeX, sizeY, renderer ) {
|
|
113
112
|
|
|
114
113
|
this.variables = [];
|