@needle-tools/three 0.145.2 → 0.146.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +3559 -6924
- package/build/three.js +3559 -6924
- package/build/three.min.js +1 -2
- package/build/three.module.js +732 -339
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +49 -66
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +85 -95
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +84 -169
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +143 -261
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +110 -25
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +22 -33
- package/examples/js/interactive/InteractiveGroup.js +6 -12
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +38 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +201 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +286 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +354 -405
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/MaterialXLoader.js +392 -0
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +9 -39
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +183 -139
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +14 -18
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -6
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +234 -168
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/exporters/GLTFExporter.js +17 -131
- package/examples/jsm/exporters/USDZExporter.js +94 -28
- package/examples/jsm/interactive/HTMLMesh.js +2 -0
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +16 -2
- package/examples/jsm/loaders/GLTFLoader.js +204 -377
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +31 -16
- package/examples/jsm/nodes/Nodes.js +14 -2
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +36 -4
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +6 -2
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -0
- package/examples/jsm/nodes/math/OperatorNode.js +6 -1
- package/examples/jsm/nodes/shadernode/ShaderNode.js +26 -13
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +2 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +18 -0
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +1 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +10 -0
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +39 -16
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +35 -5
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +130 -6
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/utils/TextureUtils.js +85 -0
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +6 -3
- package/package.json +11 -12
- package/src/Three.js +1 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/extras/Earcut.js +67 -67
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +19 -26
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLCubeUVMaps.js +1 -1
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +31 -1
- package/src/renderers/webgl/WebGLTextures.js +71 -18
- package/src/renderers/webgl/WebGLUniforms.js +116 -20
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +85 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -11,8 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
}
|
|
14
|
+
}
|
|
15
15
|
|
|
16
|
+
//
|
|
16
17
|
|
|
17
18
|
class RenderableFace {
|
|
18
19
|
|
|
@@ -33,8 +34,9 @@
|
|
|
33
34
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
}
|
|
37
|
+
}
|
|
37
38
|
|
|
39
|
+
//
|
|
38
40
|
|
|
39
41
|
class RenderableVertex {
|
|
40
42
|
|
|
@@ -46,7 +48,6 @@
|
|
|
46
48
|
this.visible = true;
|
|
47
49
|
|
|
48
50
|
}
|
|
49
|
-
|
|
50
51
|
copy( vertex ) {
|
|
51
52
|
|
|
52
53
|
this.positionWorld.copy( vertex.positionWorld );
|
|
@@ -54,8 +55,9 @@
|
|
|
54
55
|
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
}
|
|
58
|
+
}
|
|
58
59
|
|
|
60
|
+
//
|
|
59
61
|
|
|
60
62
|
class RenderableLine {
|
|
61
63
|
|
|
@@ -71,8 +73,9 @@
|
|
|
71
73
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
|
-
}
|
|
76
|
+
}
|
|
75
77
|
|
|
78
|
+
//
|
|
76
79
|
|
|
77
80
|
class RenderableSprite {
|
|
78
81
|
|
|
@@ -90,8 +93,9 @@
|
|
|
90
93
|
|
|
91
94
|
}
|
|
92
95
|
|
|
93
|
-
}
|
|
96
|
+
}
|
|
94
97
|
|
|
98
|
+
//
|
|
95
99
|
|
|
96
100
|
class Projector {
|
|
97
101
|
|
|
@@ -113,7 +117,6 @@
|
|
|
113
117
|
_spriteCount,
|
|
114
118
|
_spritePoolLength = 0,
|
|
115
119
|
_modelMatrix;
|
|
116
|
-
|
|
117
120
|
const _renderData = {
|
|
118
121
|
objects: [],
|
|
119
122
|
lights: [],
|
|
@@ -132,8 +135,9 @@
|
|
|
132
135
|
_vertexPool = [],
|
|
133
136
|
_facePool = [],
|
|
134
137
|
_linePool = [],
|
|
135
|
-
_spritePool = [];
|
|
138
|
+
_spritePool = [];
|
|
136
139
|
|
|
140
|
+
//
|
|
137
141
|
|
|
138
142
|
function RenderList() {
|
|
139
143
|
|
|
@@ -142,7 +146,6 @@
|
|
|
142
146
|
const uvs = [];
|
|
143
147
|
let object = null;
|
|
144
148
|
const normalMatrix = new THREE.Matrix3();
|
|
145
|
-
|
|
146
149
|
function setObject( value ) {
|
|
147
150
|
|
|
148
151
|
object = value;
|
|
@@ -171,9 +174,7 @@
|
|
|
171
174
|
function pushVertex( x, y, z ) {
|
|
172
175
|
|
|
173
176
|
_vertex = getNextVertexInPool();
|
|
174
|
-
|
|
175
177
|
_vertex.position.set( x, y, z );
|
|
176
|
-
|
|
177
178
|
projectVertex( _vertex );
|
|
178
179
|
|
|
179
180
|
}
|
|
@@ -215,11 +216,12 @@
|
|
|
215
216
|
function pushLine( a, b ) {
|
|
216
217
|
|
|
217
218
|
const v1 = _vertexPool[ a ];
|
|
218
|
-
const v2 = _vertexPool[ b ];
|
|
219
|
+
const v2 = _vertexPool[ b ];
|
|
220
|
+
|
|
221
|
+
// Clip
|
|
219
222
|
|
|
220
223
|
v1.positionScreen.copy( v1.position ).applyMatrix4( _modelViewProjectionMatrix );
|
|
221
224
|
v2.positionScreen.copy( v2.position ).applyMatrix4( _modelViewProjectionMatrix );
|
|
222
|
-
|
|
223
225
|
if ( clipLine( v1.positionScreen, v2.positionScreen ) === true ) {
|
|
224
226
|
|
|
225
227
|
// Perform the perspective divide
|
|
@@ -227,19 +229,14 @@
|
|
|
227
229
|
v2.positionScreen.multiplyScalar( 1 / v2.positionScreen.w );
|
|
228
230
|
_line = getNextLineInPool();
|
|
229
231
|
_line.id = object.id;
|
|
230
|
-
|
|
231
232
|
_line.v1.copy( v1 );
|
|
232
|
-
|
|
233
233
|
_line.v2.copy( v2 );
|
|
234
|
-
|
|
235
234
|
_line.z = Math.max( v1.positionScreen.z, v2.positionScreen.z );
|
|
236
235
|
_line.renderOrder = object.renderOrder;
|
|
237
236
|
_line.material = object.material;
|
|
238
|
-
|
|
239
237
|
if ( object.material.vertexColors ) {
|
|
240
238
|
|
|
241
239
|
_line.vertexColors[ 0 ].fromArray( colors, a * 3 );
|
|
242
|
-
|
|
243
240
|
_line.vertexColors[ 1 ].fromArray( colors, b * 3 );
|
|
244
241
|
|
|
245
242
|
}
|
|
@@ -256,31 +253,22 @@
|
|
|
256
253
|
const v2 = _vertexPool[ b ];
|
|
257
254
|
const v3 = _vertexPool[ c ];
|
|
258
255
|
if ( checkTriangleVisibility( v1, v2, v3 ) === false ) return;
|
|
259
|
-
|
|
260
256
|
if ( material.side === THREE.DoubleSide || checkBackfaceCulling( v1, v2, v3 ) === true ) {
|
|
261
257
|
|
|
262
258
|
_face = getNextFaceInPool();
|
|
263
259
|
_face.id = object.id;
|
|
264
|
-
|
|
265
260
|
_face.v1.copy( v1 );
|
|
266
|
-
|
|
267
261
|
_face.v2.copy( v2 );
|
|
268
|
-
|
|
269
262
|
_face.v3.copy( v3 );
|
|
270
|
-
|
|
271
263
|
_face.z = ( v1.positionScreen.z + v2.positionScreen.z + v3.positionScreen.z ) / 3;
|
|
272
|
-
_face.renderOrder = object.renderOrder;
|
|
264
|
+
_face.renderOrder = object.renderOrder;
|
|
273
265
|
|
|
266
|
+
// face normal
|
|
274
267
|
_vector3.subVectors( v3.position, v2.position );
|
|
275
|
-
|
|
276
268
|
_vector4.subVectors( v1.position, v2.position );
|
|
277
|
-
|
|
278
269
|
_vector3.cross( _vector4 );
|
|
279
|
-
|
|
280
270
|
_face.normalModel.copy( _vector3 );
|
|
281
|
-
|
|
282
271
|
_face.normalModel.applyMatrix3( normalMatrix ).normalize();
|
|
283
|
-
|
|
284
272
|
for ( let i = 0; i < 3; i ++ ) {
|
|
285
273
|
|
|
286
274
|
const normal = _face.vertexNormalsModel[ i ];
|
|
@@ -293,7 +281,6 @@
|
|
|
293
281
|
|
|
294
282
|
_face.vertexNormalsLength = 3;
|
|
295
283
|
_face.material = material;
|
|
296
|
-
|
|
297
284
|
if ( material.vertexColors ) {
|
|
298
285
|
|
|
299
286
|
_face.color.fromArray( colors, a * 3 );
|
|
@@ -322,11 +309,9 @@
|
|
|
322
309
|
}
|
|
323
310
|
|
|
324
311
|
const renderList = new RenderList();
|
|
325
|
-
|
|
326
312
|
function projectObject( object ) {
|
|
327
313
|
|
|
328
314
|
if ( object.visible === false ) return;
|
|
329
|
-
|
|
330
315
|
if ( object.isLight ) {
|
|
331
316
|
|
|
332
317
|
_renderData.lights.push( object );
|
|
@@ -346,7 +331,6 @@
|
|
|
346
331
|
}
|
|
347
332
|
|
|
348
333
|
const children = object.children;
|
|
349
|
-
|
|
350
334
|
for ( let i = 0, l = children.length; i < l; i ++ ) {
|
|
351
335
|
|
|
352
336
|
projectObject( children[ i ] );
|
|
@@ -360,14 +344,10 @@
|
|
|
360
344
|
_object = getNextObjectInPool();
|
|
361
345
|
_object.id = object.id;
|
|
362
346
|
_object.object = object;
|
|
363
|
-
|
|
364
347
|
_vector3.setFromMatrixPosition( object.matrixWorld );
|
|
365
|
-
|
|
366
348
|
_vector3.applyMatrix4( _viewProjectionMatrix );
|
|
367
|
-
|
|
368
349
|
_object.z = _vector3.z;
|
|
369
350
|
_object.renderOrder = object.renderOrder;
|
|
370
|
-
|
|
371
351
|
_renderData.objects.push( _object );
|
|
372
352
|
|
|
373
353
|
}
|
|
@@ -380,28 +360,25 @@
|
|
|
380
360
|
_renderData.elements.length = 0;
|
|
381
361
|
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
382
362
|
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
383
|
-
|
|
384
363
|
_viewMatrix.copy( camera.matrixWorldInverse );
|
|
385
|
-
|
|
386
364
|
_viewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, _viewMatrix );
|
|
365
|
+
_frustum.setFromProjectionMatrix( _viewProjectionMatrix );
|
|
387
366
|
|
|
388
|
-
|
|
389
|
-
|
|
367
|
+
//
|
|
390
368
|
|
|
391
369
|
_objectCount = 0;
|
|
392
370
|
_renderData.objects.length = 0;
|
|
393
371
|
_renderData.lights.length = 0;
|
|
394
372
|
projectObject( scene );
|
|
395
|
-
|
|
396
373
|
if ( sortObjects === true ) {
|
|
397
374
|
|
|
398
375
|
_renderData.objects.sort( painterSort );
|
|
399
376
|
|
|
400
|
-
}
|
|
377
|
+
}
|
|
401
378
|
|
|
379
|
+
//
|
|
402
380
|
|
|
403
381
|
const objects = _renderData.objects;
|
|
404
|
-
|
|
405
382
|
for ( let o = 0, ol = objects.length; o < ol; o ++ ) {
|
|
406
383
|
|
|
407
384
|
const object = objects[ o ].object;
|
|
@@ -409,7 +386,6 @@
|
|
|
409
386
|
renderList.setObject( object );
|
|
410
387
|
_modelMatrix = object.matrixWorld;
|
|
411
388
|
_vertexCount = 0;
|
|
412
|
-
|
|
413
389
|
if ( object.isMesh ) {
|
|
414
390
|
|
|
415
391
|
let material = object.material;
|
|
@@ -418,25 +394,21 @@
|
|
|
418
394
|
const groups = geometry.groups;
|
|
419
395
|
if ( attributes.position === undefined ) continue;
|
|
420
396
|
const positions = attributes.position.array;
|
|
421
|
-
|
|
422
397
|
for ( let i = 0, l = positions.length; i < l; i += 3 ) {
|
|
423
398
|
|
|
424
399
|
let x = positions[ i ];
|
|
425
400
|
let y = positions[ i + 1 ];
|
|
426
401
|
let z = positions[ i + 2 ];
|
|
427
402
|
const morphTargets = geometry.morphAttributes.position;
|
|
428
|
-
|
|
429
403
|
if ( morphTargets !== undefined ) {
|
|
430
404
|
|
|
431
405
|
const morphTargetsRelative = geometry.morphTargetsRelative;
|
|
432
406
|
const morphInfluences = object.morphTargetInfluences;
|
|
433
|
-
|
|
434
407
|
for ( let t = 0, tl = morphTargets.length; t < tl; t ++ ) {
|
|
435
408
|
|
|
436
409
|
const influence = morphInfluences[ t ];
|
|
437
410
|
if ( influence === 0 ) continue;
|
|
438
411
|
const target = morphTargets[ t ];
|
|
439
|
-
|
|
440
412
|
if ( morphTargetsRelative ) {
|
|
441
413
|
|
|
442
414
|
x += target.getX( i / 3 ) * influence;
|
|
@@ -462,7 +434,6 @@
|
|
|
462
434
|
if ( attributes.normal !== undefined ) {
|
|
463
435
|
|
|
464
436
|
const normals = attributes.normal.array;
|
|
465
|
-
|
|
466
437
|
for ( let i = 0, l = normals.length; i < l; i += 3 ) {
|
|
467
438
|
|
|
468
439
|
renderList.pushNormal( normals[ i ], normals[ i + 1 ], normals[ i + 2 ] );
|
|
@@ -474,7 +445,6 @@
|
|
|
474
445
|
if ( attributes.color !== undefined ) {
|
|
475
446
|
|
|
476
447
|
const colors = attributes.color.array;
|
|
477
|
-
|
|
478
448
|
for ( let i = 0, l = colors.length; i < l; i += 3 ) {
|
|
479
449
|
|
|
480
450
|
renderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );
|
|
@@ -486,7 +456,6 @@
|
|
|
486
456
|
if ( attributes.uv !== undefined ) {
|
|
487
457
|
|
|
488
458
|
const uvs = attributes.uv.array;
|
|
489
|
-
|
|
490
459
|
for ( let i = 0, l = uvs.length; i < l; i += 2 ) {
|
|
491
460
|
|
|
492
461
|
renderList.pushUv( uvs[ i ], uvs[ i + 1 ] );
|
|
@@ -498,7 +467,6 @@
|
|
|
498
467
|
if ( geometry.index !== null ) {
|
|
499
468
|
|
|
500
469
|
const indices = geometry.index.array;
|
|
501
|
-
|
|
502
470
|
if ( groups.length > 0 ) {
|
|
503
471
|
|
|
504
472
|
for ( let g = 0; g < groups.length; g ++ ) {
|
|
@@ -506,7 +474,6 @@
|
|
|
506
474
|
const group = groups[ g ];
|
|
507
475
|
material = isMultiMaterial === true ? object.material[ group.materialIndex ] : object.material;
|
|
508
476
|
if ( material === undefined ) continue;
|
|
509
|
-
|
|
510
477
|
for ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {
|
|
511
478
|
|
|
512
479
|
renderList.pushTriangle( indices[ i ], indices[ i + 1 ], indices[ i + 2 ], material );
|
|
@@ -534,7 +501,6 @@
|
|
|
534
501
|
const group = groups[ g ];
|
|
535
502
|
material = isMultiMaterial === true ? object.material[ group.materialIndex ] : object.material;
|
|
536
503
|
if ( material === undefined ) continue;
|
|
537
|
-
|
|
538
504
|
for ( let i = group.start, l = group.start + group.count; i < l; i += 3 ) {
|
|
539
505
|
|
|
540
506
|
renderList.pushTriangle( i, i + 1, i + 2, material );
|
|
@@ -558,13 +524,10 @@
|
|
|
558
524
|
} else if ( object.isLine ) {
|
|
559
525
|
|
|
560
526
|
_modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );
|
|
561
|
-
|
|
562
527
|
const attributes = geometry.attributes;
|
|
563
|
-
|
|
564
528
|
if ( attributes.position !== undefined ) {
|
|
565
529
|
|
|
566
530
|
const positions = attributes.position.array;
|
|
567
|
-
|
|
568
531
|
for ( let i = 0, l = positions.length; i < l; i += 3 ) {
|
|
569
532
|
|
|
570
533
|
renderList.pushVertex( positions[ i ], positions[ i + 1 ], positions[ i + 2 ] );
|
|
@@ -574,7 +537,6 @@
|
|
|
574
537
|
if ( attributes.color !== undefined ) {
|
|
575
538
|
|
|
576
539
|
const colors = attributes.color.array;
|
|
577
|
-
|
|
578
540
|
for ( let i = 0, l = colors.length; i < l; i += 3 ) {
|
|
579
541
|
|
|
580
542
|
renderList.pushColor( colors[ i ], colors[ i + 1 ], colors[ i + 2 ] );
|
|
@@ -586,7 +548,6 @@
|
|
|
586
548
|
if ( geometry.index !== null ) {
|
|
587
549
|
|
|
588
550
|
const indices = geometry.index.array;
|
|
589
|
-
|
|
590
551
|
for ( let i = 0, l = indices.length; i < l; i += 2 ) {
|
|
591
552
|
|
|
592
553
|
renderList.pushLine( indices[ i ], indices[ i + 1 ] );
|
|
@@ -596,7 +557,6 @@
|
|
|
596
557
|
} else {
|
|
597
558
|
|
|
598
559
|
const step = object.isLineSegments ? 2 : 1;
|
|
599
|
-
|
|
600
560
|
for ( let i = 0, l = positions.length / 3 - 1; i < l; i += step ) {
|
|
601
561
|
|
|
602
562
|
renderList.pushLine( i, i + 1 );
|
|
@@ -610,19 +570,14 @@
|
|
|
610
570
|
} else if ( object.isPoints ) {
|
|
611
571
|
|
|
612
572
|
_modelViewProjectionMatrix.multiplyMatrices( _viewProjectionMatrix, _modelMatrix );
|
|
613
|
-
|
|
614
573
|
const attributes = geometry.attributes;
|
|
615
|
-
|
|
616
574
|
if ( attributes.position !== undefined ) {
|
|
617
575
|
|
|
618
576
|
const positions = attributes.position.array;
|
|
619
|
-
|
|
620
577
|
for ( let i = 0, l = positions.length; i < l; i += 3 ) {
|
|
621
578
|
|
|
622
579
|
_vector4.set( positions[ i ], positions[ i + 1 ], positions[ i + 2 ], 1 );
|
|
623
|
-
|
|
624
580
|
_vector4.applyMatrix4( _modelViewProjectionMatrix );
|
|
625
|
-
|
|
626
581
|
pushPoint( _vector4, object, camera );
|
|
627
582
|
|
|
628
583
|
}
|
|
@@ -632,11 +587,8 @@
|
|
|
632
587
|
} else if ( object.isSprite ) {
|
|
633
588
|
|
|
634
589
|
object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );
|
|
635
|
-
|
|
636
590
|
_vector4.set( _modelMatrix.elements[ 12 ], _modelMatrix.elements[ 13 ], _modelMatrix.elements[ 14 ], 1 );
|
|
637
|
-
|
|
638
591
|
_vector4.applyMatrix4( _viewProjectionMatrix );
|
|
639
|
-
|
|
640
592
|
pushPoint( _vector4, object, camera );
|
|
641
593
|
|
|
642
594
|
}
|
|
@@ -657,7 +609,6 @@
|
|
|
657
609
|
|
|
658
610
|
const invW = 1 / _vector4.w;
|
|
659
611
|
_vector4.z *= invW;
|
|
660
|
-
|
|
661
612
|
if ( _vector4.z >= - 1 && _vector4.z <= 1 ) {
|
|
662
613
|
|
|
663
614
|
_sprite = getNextSpriteInPool();
|
|
@@ -671,22 +622,20 @@
|
|
|
671
622
|
_sprite.scale.x = object.scale.x * Math.abs( _sprite.x - ( _vector4.x + camera.projectionMatrix.elements[ 0 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 12 ] ) );
|
|
672
623
|
_sprite.scale.y = object.scale.y * Math.abs( _sprite.y - ( _vector4.y + camera.projectionMatrix.elements[ 5 ] ) / ( _vector4.w + camera.projectionMatrix.elements[ 13 ] ) );
|
|
673
624
|
_sprite.material = object.material;
|
|
674
|
-
|
|
675
625
|
_renderData.elements.push( _sprite );
|
|
676
626
|
|
|
677
627
|
}
|
|
678
628
|
|
|
679
|
-
}
|
|
629
|
+
}
|
|
680
630
|
|
|
631
|
+
// Pools
|
|
681
632
|
|
|
682
633
|
function getNextObjectInPool() {
|
|
683
634
|
|
|
684
635
|
if ( _objectCount === _objectPoolLength ) {
|
|
685
636
|
|
|
686
637
|
const object = new RenderableObject();
|
|
687
|
-
|
|
688
638
|
_objectPool.push( object );
|
|
689
|
-
|
|
690
639
|
_objectPoolLength ++;
|
|
691
640
|
_objectCount ++;
|
|
692
641
|
return object;
|
|
@@ -702,9 +651,7 @@
|
|
|
702
651
|
if ( _vertexCount === _vertexPoolLength ) {
|
|
703
652
|
|
|
704
653
|
const vertex = new RenderableVertex();
|
|
705
|
-
|
|
706
654
|
_vertexPool.push( vertex );
|
|
707
|
-
|
|
708
655
|
_vertexPoolLength ++;
|
|
709
656
|
_vertexCount ++;
|
|
710
657
|
return vertex;
|
|
@@ -720,9 +667,7 @@
|
|
|
720
667
|
if ( _faceCount === _facePoolLength ) {
|
|
721
668
|
|
|
722
669
|
const face = new RenderableFace();
|
|
723
|
-
|
|
724
670
|
_facePool.push( face );
|
|
725
|
-
|
|
726
671
|
_facePoolLength ++;
|
|
727
672
|
_faceCount ++;
|
|
728
673
|
return face;
|
|
@@ -738,9 +683,7 @@
|
|
|
738
683
|
if ( _lineCount === _linePoolLength ) {
|
|
739
684
|
|
|
740
685
|
const line = new RenderableLine();
|
|
741
|
-
|
|
742
686
|
_linePool.push( line );
|
|
743
|
-
|
|
744
687
|
_linePoolLength ++;
|
|
745
688
|
_lineCount ++;
|
|
746
689
|
return line;
|
|
@@ -756,9 +699,7 @@
|
|
|
756
699
|
if ( _spriteCount === _spritePoolLength ) {
|
|
757
700
|
|
|
758
701
|
const sprite = new RenderableSprite();
|
|
759
|
-
|
|
760
702
|
_spritePool.push( sprite );
|
|
761
|
-
|
|
762
703
|
_spritePoolLength ++;
|
|
763
704
|
_spriteCount ++;
|
|
764
705
|
return sprite;
|
|
@@ -767,8 +708,9 @@
|
|
|
767
708
|
|
|
768
709
|
return _spritePool[ _spriteCount ++ ];
|
|
769
710
|
|
|
770
|
-
}
|
|
711
|
+
}
|
|
771
712
|
|
|
713
|
+
//
|
|
772
714
|
|
|
773
715
|
function painterSort( a, b ) {
|
|
774
716
|
|
|
@@ -795,14 +737,15 @@
|
|
|
795
737
|
function clipLine( s1, s2 ) {
|
|
796
738
|
|
|
797
739
|
let alpha1 = 0,
|
|
798
|
-
alpha2 = 1;
|
|
740
|
+
alpha2 = 1;
|
|
741
|
+
|
|
742
|
+
// Calculate the boundary coordinate of each vertex for the near and far clip planes,
|
|
799
743
|
// Z = -1 and Z = +1, respectively.
|
|
800
744
|
|
|
801
745
|
const bc1near = s1.z + s1.w,
|
|
802
746
|
bc2near = s2.z + s2.w,
|
|
803
747
|
bc1far = - s1.z + s1.w,
|
|
804
748
|
bc2far = - s2.z + s2.w;
|
|
805
|
-
|
|
806
749
|
if ( bc1near >= 0 && bc2near >= 0 && bc1far >= 0 && bc2far >= 0 ) {
|
|
807
750
|
|
|
808
751
|
// Both vertices lie entirely within all clip planes.
|
|
@@ -816,6 +759,7 @@
|
|
|
816
759
|
} else {
|
|
817
760
|
|
|
818
761
|
// The line segment spans at least one clip plane.
|
|
762
|
+
|
|
819
763
|
if ( bc1near < 0 ) {
|
|
820
764
|
|
|
821
765
|
// v1 lies outside the near plane, v2 inside
|