super-three 0.144.0 → 0.147.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 +737 -388
- package/build/three.js +737 -388
- package/build/three.min.js +1 -1
- package/build/three.module.js +911 -409
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- 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 +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- 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 +141 -317
- 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 +113 -27
- 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 +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- 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 +40 -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 +228 -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 +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- 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/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 +62 -48
- 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 +185 -141
- 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 +26 -16
- 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/RenderPixelatedPass.js +215 -0
- 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 -8
- 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 +236 -170
- 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 +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- 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 +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- 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 +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- 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/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- 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/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- 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/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -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 +21 -1
- 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 +56 -35
- 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 +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -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/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -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/materials/MeshPhysicalMaterial.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 +36 -21
- 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/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- 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/vsm.glsl.js +0 -3
- 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/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 +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +71 -3
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- 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
|
@@ -103,59 +103,51 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
103
103
|
|
|
104
104
|
if ( currentDepthFunc !== depthFunc ) {
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
switch ( depthFunc ) {
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
case NeverDepth:
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
gl.depthFunc( gl.NEVER );
|
|
113
|
-
break;
|
|
114
|
-
|
|
115
|
-
case AlwaysDepth:
|
|
116
|
-
|
|
117
|
-
gl.depthFunc( gl.ALWAYS );
|
|
118
|
-
break;
|
|
119
|
-
|
|
120
|
-
case LessDepth:
|
|
110
|
+
gl.depthFunc( gl.NEVER );
|
|
111
|
+
break;
|
|
121
112
|
|
|
122
|
-
|
|
123
|
-
break;
|
|
113
|
+
case AlwaysDepth:
|
|
124
114
|
|
|
125
|
-
|
|
115
|
+
gl.depthFunc( gl.ALWAYS );
|
|
116
|
+
break;
|
|
126
117
|
|
|
127
|
-
|
|
128
|
-
break;
|
|
118
|
+
case LessDepth:
|
|
129
119
|
|
|
130
|
-
|
|
120
|
+
gl.depthFunc( gl.LESS );
|
|
121
|
+
break;
|
|
131
122
|
|
|
132
|
-
|
|
133
|
-
break;
|
|
123
|
+
case LessEqualDepth:
|
|
134
124
|
|
|
135
|
-
|
|
125
|
+
gl.depthFunc( gl.LEQUAL );
|
|
126
|
+
break;
|
|
136
127
|
|
|
137
|
-
|
|
138
|
-
break;
|
|
128
|
+
case EqualDepth:
|
|
139
129
|
|
|
140
|
-
|
|
130
|
+
gl.depthFunc( gl.EQUAL );
|
|
131
|
+
break;
|
|
141
132
|
|
|
142
|
-
|
|
143
|
-
break;
|
|
133
|
+
case GreaterEqualDepth:
|
|
144
134
|
|
|
145
|
-
|
|
135
|
+
gl.depthFunc( gl.GEQUAL );
|
|
136
|
+
break;
|
|
146
137
|
|
|
147
|
-
|
|
148
|
-
break;
|
|
138
|
+
case GreaterDepth:
|
|
149
139
|
|
|
150
|
-
|
|
140
|
+
gl.depthFunc( gl.GREATER );
|
|
141
|
+
break;
|
|
151
142
|
|
|
152
|
-
|
|
143
|
+
case NotEqualDepth:
|
|
153
144
|
|
|
154
|
-
|
|
145
|
+
gl.depthFunc( gl.NOTEQUAL );
|
|
146
|
+
break;
|
|
155
147
|
|
|
156
|
-
|
|
148
|
+
default:
|
|
157
149
|
|
|
158
|
-
|
|
150
|
+
gl.depthFunc( gl.LEQUAL );
|
|
159
151
|
|
|
160
152
|
}
|
|
161
153
|
|
|
@@ -726,7 +718,7 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
726
718
|
}
|
|
727
719
|
|
|
728
720
|
currentBlending = blending;
|
|
729
|
-
currentPremultipledAlpha =
|
|
721
|
+
currentPremultipledAlpha = false;
|
|
730
722
|
|
|
731
723
|
}
|
|
732
724
|
|
|
@@ -888,25 +880,40 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
888
880
|
|
|
889
881
|
}
|
|
890
882
|
|
|
891
|
-
function bindTexture( webglType, webglTexture ) {
|
|
883
|
+
function bindTexture( webglType, webglTexture, webglSlot ) {
|
|
884
|
+
|
|
885
|
+
if ( webglSlot === undefined ) {
|
|
886
|
+
|
|
887
|
+
if ( currentTextureSlot === null ) {
|
|
888
|
+
|
|
889
|
+
webglSlot = gl.TEXTURE0 + maxTextures - 1;
|
|
890
|
+
|
|
891
|
+
} else {
|
|
892
892
|
|
|
893
|
-
|
|
893
|
+
webglSlot = currentTextureSlot;
|
|
894
894
|
|
|
895
|
-
|
|
895
|
+
}
|
|
896
896
|
|
|
897
897
|
}
|
|
898
898
|
|
|
899
|
-
let boundTexture = currentBoundTextures[
|
|
899
|
+
let boundTexture = currentBoundTextures[ webglSlot ];
|
|
900
900
|
|
|
901
901
|
if ( boundTexture === undefined ) {
|
|
902
902
|
|
|
903
903
|
boundTexture = { type: undefined, texture: undefined };
|
|
904
|
-
currentBoundTextures[
|
|
904
|
+
currentBoundTextures[ webglSlot ] = boundTexture;
|
|
905
905
|
|
|
906
906
|
}
|
|
907
907
|
|
|
908
908
|
if ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {
|
|
909
909
|
|
|
910
|
+
if ( currentTextureSlot !== webglSlot ) {
|
|
911
|
+
|
|
912
|
+
gl.activeTexture( webglSlot );
|
|
913
|
+
currentTextureSlot = webglSlot;
|
|
914
|
+
|
|
915
|
+
}
|
|
916
|
+
|
|
910
917
|
gl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );
|
|
911
918
|
|
|
912
919
|
boundTexture.type = webglType;
|
|
@@ -945,6 +952,20 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
945
952
|
|
|
946
953
|
}
|
|
947
954
|
|
|
955
|
+
function compressedTexImage3D() {
|
|
956
|
+
|
|
957
|
+
try {
|
|
958
|
+
|
|
959
|
+
gl.compressedTexImage3D.apply( gl, arguments );
|
|
960
|
+
|
|
961
|
+
} catch ( error ) {
|
|
962
|
+
|
|
963
|
+
console.error( 'THREE.WebGLState:', error );
|
|
964
|
+
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
}
|
|
968
|
+
|
|
948
969
|
function texSubImage2D() {
|
|
949
970
|
|
|
950
971
|
try {
|
|
@@ -987,6 +1008,20 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
987
1008
|
|
|
988
1009
|
}
|
|
989
1010
|
|
|
1011
|
+
function compressedTexSubImage3D() {
|
|
1012
|
+
|
|
1013
|
+
try {
|
|
1014
|
+
|
|
1015
|
+
gl.compressedTexSubImage3D.apply( gl, arguments );
|
|
1016
|
+
|
|
1017
|
+
} catch ( error ) {
|
|
1018
|
+
|
|
1019
|
+
console.error( 'THREE.WebGLState:', error );
|
|
1020
|
+
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
}
|
|
1024
|
+
|
|
990
1025
|
function texStorage2D() {
|
|
991
1026
|
|
|
992
1027
|
try {
|
|
@@ -1232,6 +1267,7 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
1232
1267
|
bindTexture: bindTexture,
|
|
1233
1268
|
unbindTexture: unbindTexture,
|
|
1234
1269
|
compressedTexImage2D: compressedTexImage2D,
|
|
1270
|
+
compressedTexImage3D: compressedTexImage3D,
|
|
1235
1271
|
texImage2D: texImage2D,
|
|
1236
1272
|
texImage3D: texImage3D,
|
|
1237
1273
|
|
|
@@ -1243,6 +1279,7 @@ function WebGLState( gl, extensions, capabilities ) {
|
|
|
1243
1279
|
texSubImage2D: texSubImage2D,
|
|
1244
1280
|
texSubImage3D: texSubImage3D,
|
|
1245
1281
|
compressedTexSubImage2D: compressedTexSubImage2D,
|
|
1282
|
+
compressedTexSubImage3D: compressedTexSubImage3D,
|
|
1246
1283
|
|
|
1247
1284
|
scissor: scissor,
|
|
1248
1285
|
viewport: viewport,
|
|
@@ -11,7 +11,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
11
11
|
const maxTextureSize = capabilities.maxTextureSize;
|
|
12
12
|
const maxSamples = capabilities.maxSamples;
|
|
13
13
|
const multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;
|
|
14
|
-
const supportsInvalidateFramebuffer = /OculusBrowser/g.test( navigator.userAgent );
|
|
14
|
+
const supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );
|
|
15
15
|
|
|
16
16
|
const _videoTextures = new WeakMap();
|
|
17
17
|
let _canvas;
|
|
@@ -135,7 +135,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
135
135
|
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
function getInternalFormat( internalFormatName, glFormat, glType, encoding,
|
|
138
|
+
function getInternalFormat( internalFormatName, glFormat, glType, encoding, forceLinearEncoding = false ) {
|
|
139
139
|
|
|
140
140
|
if ( isWebGL2 === false ) return glFormat;
|
|
141
141
|
|
|
@@ -169,7 +169,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
169
169
|
|
|
170
170
|
if ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;
|
|
171
171
|
if ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;
|
|
172
|
-
if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( encoding === sRGBEncoding &&
|
|
172
|
+
if ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( encoding === sRGBEncoding && forceLinearEncoding === false ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;
|
|
173
173
|
if ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;
|
|
174
174
|
if ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;
|
|
175
175
|
|
|
@@ -415,6 +415,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
415
415
|
|
|
416
416
|
array.push( texture.wrapS );
|
|
417
417
|
array.push( texture.wrapT );
|
|
418
|
+
array.push( texture.wrapR || 0 );
|
|
418
419
|
array.push( texture.magFilter );
|
|
419
420
|
array.push( texture.minFilter );
|
|
420
421
|
array.push( texture.anisotropy );
|
|
@@ -460,8 +461,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
460
461
|
|
|
461
462
|
}
|
|
462
463
|
|
|
463
|
-
state.
|
|
464
|
-
state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture );
|
|
464
|
+
state.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
465
465
|
|
|
466
466
|
}
|
|
467
467
|
|
|
@@ -476,8 +476,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
476
476
|
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
-
state.
|
|
480
|
-
state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture );
|
|
479
|
+
state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
481
480
|
|
|
482
481
|
}
|
|
483
482
|
|
|
@@ -492,8 +491,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
492
491
|
|
|
493
492
|
}
|
|
494
493
|
|
|
495
|
-
state.
|
|
496
|
-
state.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture );
|
|
494
|
+
state.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
497
495
|
|
|
498
496
|
}
|
|
499
497
|
|
|
@@ -508,8 +506,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
508
506
|
|
|
509
507
|
}
|
|
510
508
|
|
|
511
|
-
state.
|
|
512
|
-
state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );
|
|
509
|
+
state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
513
510
|
|
|
514
511
|
}
|
|
515
512
|
|
|
@@ -675,16 +672,19 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
675
672
|
|
|
676
673
|
let textureType = _gl.TEXTURE_2D;
|
|
677
674
|
|
|
678
|
-
if ( texture.isDataArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;
|
|
675
|
+
if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;
|
|
679
676
|
if ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;
|
|
680
677
|
|
|
681
678
|
const forceUpload = initTexture( textureProperties, texture );
|
|
682
679
|
const source = texture.source;
|
|
683
680
|
|
|
684
|
-
state.
|
|
685
|
-
state.bindTexture( textureType, textureProperties.__webglTexture );
|
|
681
|
+
state.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
686
682
|
|
|
687
|
-
|
|
683
|
+
const sourceProperties = properties.get( source );
|
|
684
|
+
|
|
685
|
+
if ( source.version !== sourceProperties.__version || forceUpload === true ) {
|
|
686
|
+
|
|
687
|
+
state.activeTexture( _gl.TEXTURE0 + slot );
|
|
688
688
|
|
|
689
689
|
_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
|
|
690
690
|
_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );
|
|
@@ -707,7 +707,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
707
707
|
const mipmaps = texture.mipmaps;
|
|
708
708
|
|
|
709
709
|
const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );
|
|
710
|
-
const allocateMemory = (
|
|
710
|
+
const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
|
|
711
711
|
const levels = getMipLevels( texture, image, supportsMips );
|
|
712
712
|
|
|
713
713
|
if ( texture.isDepthTexture ) {
|
|
@@ -854,45 +854,97 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
854
854
|
|
|
855
855
|
} else if ( texture.isCompressedTexture ) {
|
|
856
856
|
|
|
857
|
-
if (
|
|
857
|
+
if ( texture.isCompressedArrayTexture ) {
|
|
858
858
|
|
|
859
|
-
|
|
859
|
+
if ( useTexStorage && allocateMemory ) {
|
|
860
860
|
|
|
861
|
-
|
|
861
|
+
state.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );
|
|
862
862
|
|
|
863
|
-
|
|
863
|
+
}
|
|
864
864
|
|
|
865
|
-
|
|
865
|
+
for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
|
|
866
866
|
|
|
867
|
-
|
|
867
|
+
mipmap = mipmaps[ i ];
|
|
868
868
|
|
|
869
|
-
if (
|
|
869
|
+
if ( texture.format !== RGBAFormat ) {
|
|
870
870
|
|
|
871
|
-
if (
|
|
871
|
+
if ( glFormat !== null ) {
|
|
872
|
+
|
|
873
|
+
if ( useTexStorage ) {
|
|
874
|
+
|
|
875
|
+
state.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0 );
|
|
876
|
+
|
|
877
|
+
} else {
|
|
878
|
+
|
|
879
|
+
state.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );
|
|
872
880
|
|
|
873
|
-
|
|
881
|
+
}
|
|
874
882
|
|
|
875
883
|
} else {
|
|
876
884
|
|
|
877
|
-
|
|
885
|
+
console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
|
|
878
886
|
|
|
879
887
|
}
|
|
880
888
|
|
|
881
889
|
} else {
|
|
882
890
|
|
|
883
|
-
|
|
891
|
+
if ( useTexStorage ) {
|
|
892
|
+
|
|
893
|
+
state.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );
|
|
894
|
+
|
|
895
|
+
} else {
|
|
896
|
+
|
|
897
|
+
state.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );
|
|
898
|
+
|
|
899
|
+
}
|
|
884
900
|
|
|
885
901
|
}
|
|
886
902
|
|
|
887
|
-
}
|
|
903
|
+
}
|
|
888
904
|
|
|
889
|
-
|
|
905
|
+
} else {
|
|
890
906
|
|
|
891
|
-
|
|
907
|
+
if ( useTexStorage && allocateMemory ) {
|
|
908
|
+
|
|
909
|
+
state.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );
|
|
910
|
+
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
for ( let i = 0, il = mipmaps.length; i < il; i ++ ) {
|
|
914
|
+
|
|
915
|
+
mipmap = mipmaps[ i ];
|
|
916
|
+
|
|
917
|
+
if ( texture.format !== RGBAFormat ) {
|
|
918
|
+
|
|
919
|
+
if ( glFormat !== null ) {
|
|
920
|
+
|
|
921
|
+
if ( useTexStorage ) {
|
|
922
|
+
|
|
923
|
+
state.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );
|
|
924
|
+
|
|
925
|
+
} else {
|
|
926
|
+
|
|
927
|
+
state.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );
|
|
928
|
+
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
} else {
|
|
932
|
+
|
|
933
|
+
console.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
|
|
934
|
+
|
|
935
|
+
}
|
|
892
936
|
|
|
893
937
|
} else {
|
|
894
938
|
|
|
895
|
-
|
|
939
|
+
if ( useTexStorage ) {
|
|
940
|
+
|
|
941
|
+
state.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );
|
|
942
|
+
|
|
943
|
+
} else {
|
|
944
|
+
|
|
945
|
+
state.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );
|
|
946
|
+
|
|
947
|
+
}
|
|
896
948
|
|
|
897
949
|
}
|
|
898
950
|
|
|
@@ -1023,7 +1075,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1023
1075
|
|
|
1024
1076
|
}
|
|
1025
1077
|
|
|
1026
|
-
|
|
1078
|
+
sourceProperties.__version = source.version;
|
|
1027
1079
|
|
|
1028
1080
|
if ( texture.onUpdate ) texture.onUpdate( texture );
|
|
1029
1081
|
|
|
@@ -1040,10 +1092,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1040
1092
|
const forceUpload = initTexture( textureProperties, texture );
|
|
1041
1093
|
const source = texture.source;
|
|
1042
1094
|
|
|
1043
|
-
state.
|
|
1044
|
-
|
|
1095
|
+
state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
1096
|
+
|
|
1097
|
+
const sourceProperties = properties.get( source );
|
|
1045
1098
|
|
|
1046
|
-
if ( source.version !==
|
|
1099
|
+
if ( source.version !== sourceProperties.__version || forceUpload === true ) {
|
|
1100
|
+
|
|
1101
|
+
state.activeTexture( _gl.TEXTURE0 + slot );
|
|
1047
1102
|
|
|
1048
1103
|
_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );
|
|
1049
1104
|
_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );
|
|
@@ -1078,7 +1133,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1078
1133
|
glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );
|
|
1079
1134
|
|
|
1080
1135
|
const useTexStorage = ( isWebGL2 && texture.isVideoTexture !== true );
|
|
1081
|
-
const allocateMemory = (
|
|
1136
|
+
const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
|
|
1082
1137
|
let levels = getMipLevels( texture, image, supportsMips );
|
|
1083
1138
|
|
|
1084
1139
|
setTextureParameters( _gl.TEXTURE_CUBE_MAP, texture, supportsMips );
|
|
@@ -1227,7 +1282,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1227
1282
|
|
|
1228
1283
|
}
|
|
1229
1284
|
|
|
1230
|
-
|
|
1285
|
+
sourceProperties.__version = source.version;
|
|
1231
1286
|
|
|
1232
1287
|
if ( texture.onUpdate ) texture.onUpdate( texture );
|
|
1233
1288
|
|
|
@@ -1267,7 +1322,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1267
1322
|
|
|
1268
1323
|
multisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0, getRenderTargetSamples( renderTarget ) );
|
|
1269
1324
|
|
|
1270
|
-
} else {
|
|
1325
|
+
} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753
|
|
1271
1326
|
|
|
1272
1327
|
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, properties.get( texture ).__webglTexture, 0 );
|
|
1273
1328
|
|
|
@@ -1591,7 +1646,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1591
1646
|
|
|
1592
1647
|
const glFormat = utils.convert( texture.format, texture.encoding );
|
|
1593
1648
|
const glType = utils.convert( texture.type );
|
|
1594
|
-
const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding );
|
|
1649
|
+
const glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.encoding, renderTarget.isXRRenderTarget === true );
|
|
1595
1650
|
const samples = getRenderTargetSamples( renderTarget );
|
|
1596
1651
|
_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );
|
|
1597
1652
|
|