@unikia/upe-renderer 0.186.110 → 0.187.11
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 +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -16,6 +16,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
16
16
|
|
|
17
17
|
const _sources = new WeakMap(); // maps WebglTexture objects to instances of TextureSource
|
|
18
18
|
|
|
19
|
+
const _tracked = new Set();
|
|
20
|
+
const _registry = new FinalizationRegistry( ( ref ) => _tracked.delete( ref ) );
|
|
21
|
+
|
|
19
22
|
// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,
|
|
20
23
|
// also OffscreenCanvas.getContext("webgl"), but not OffscreenCanvas.getContext("2d")!
|
|
21
24
|
// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).
|
|
@@ -299,7 +302,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
299
302
|
|
|
300
303
|
return Math.log2( Math.max( image.width, image.height ) ) + 1;
|
|
301
304
|
|
|
302
|
-
} else if ( texture.mipmaps
|
|
305
|
+
} else if ( texture.mipmaps.length > 0 ) {
|
|
303
306
|
|
|
304
307
|
// user-defined mipmaps
|
|
305
308
|
|
|
@@ -321,12 +324,45 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
321
324
|
|
|
322
325
|
//
|
|
323
326
|
|
|
327
|
+
function track( object ) {
|
|
328
|
+
|
|
329
|
+
const ref = new WeakRef( object );
|
|
330
|
+
|
|
331
|
+
properties.get( object ).__ref = ref;
|
|
332
|
+
|
|
333
|
+
_tracked.add( ref );
|
|
334
|
+
_registry.register( object, ref, ref );
|
|
335
|
+
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function untrack( object ) {
|
|
339
|
+
|
|
340
|
+
const ref = properties.get( object ).__ref;
|
|
341
|
+
|
|
342
|
+
if ( ref === undefined ) return;
|
|
343
|
+
|
|
344
|
+
_tracked.delete( ref );
|
|
345
|
+
_registry.unregister( ref );
|
|
346
|
+
|
|
347
|
+
}
|
|
348
|
+
|
|
324
349
|
function onTextureDispose( event ) {
|
|
325
350
|
|
|
326
|
-
|
|
351
|
+
destroyTexture( event.target );
|
|
352
|
+
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
function onRenderTargetDispose( event ) {
|
|
356
|
+
|
|
357
|
+
destroyRenderTarget( event.target );
|
|
358
|
+
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
function destroyTexture( texture ) {
|
|
327
362
|
|
|
328
363
|
texture.removeEventListener( 'dispose', onTextureDispose );
|
|
329
364
|
|
|
365
|
+
untrack( texture );
|
|
330
366
|
deallocateTexture( texture );
|
|
331
367
|
|
|
332
368
|
if ( texture.isVideoTexture ) {
|
|
@@ -343,16 +379,40 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
343
379
|
|
|
344
380
|
}
|
|
345
381
|
|
|
346
|
-
function
|
|
347
|
-
|
|
348
|
-
const renderTarget = event.target;
|
|
382
|
+
function destroyRenderTarget( renderTarget ) {
|
|
349
383
|
|
|
350
384
|
renderTarget.removeEventListener( 'dispose', onRenderTargetDispose );
|
|
351
385
|
|
|
386
|
+
untrack( renderTarget );
|
|
352
387
|
deallocateRenderTarget( renderTarget );
|
|
353
388
|
|
|
354
389
|
}
|
|
355
390
|
|
|
391
|
+
function dispose() {
|
|
392
|
+
|
|
393
|
+
for ( const ref of _tracked ) {
|
|
394
|
+
|
|
395
|
+
const object = ref.deref();
|
|
396
|
+
|
|
397
|
+
if ( object === undefined ) continue;
|
|
398
|
+
|
|
399
|
+
if ( object.isRenderTarget === true ) {
|
|
400
|
+
|
|
401
|
+
destroyRenderTarget( object );
|
|
402
|
+
|
|
403
|
+
} else {
|
|
404
|
+
|
|
405
|
+
destroyTexture( object );
|
|
406
|
+
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
_tracked.clear();
|
|
412
|
+
_htmlTextures.clear();
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
|
|
356
416
|
//
|
|
357
417
|
|
|
358
418
|
function deallocateTexture( texture ) {
|
|
@@ -410,13 +470,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
410
470
|
|
|
411
471
|
const renderTargetProperties = properties.get( renderTarget );
|
|
412
472
|
|
|
413
|
-
if (
|
|
473
|
+
if ( renderTargetProperties.__depthDisposeCallback ) renderTargetProperties.__depthDisposeCallback();
|
|
414
474
|
|
|
415
|
-
|
|
475
|
+
const depthTexture = renderTarget.depthTexture;
|
|
416
476
|
|
|
417
|
-
|
|
477
|
+
// only destroy depth texture the render target owns
|
|
418
478
|
|
|
419
|
-
|
|
479
|
+
if ( depthTexture && depthTexture.renderTarget === renderTarget ) destroyTexture( depthTexture );
|
|
420
480
|
|
|
421
481
|
if ( renderTarget.isWebGLCubeRenderTarget ) {
|
|
422
482
|
|
|
@@ -539,6 +599,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
539
599
|
array.push( texture.format );
|
|
540
600
|
array.push( texture.type );
|
|
541
601
|
array.push( texture.generateMipmaps );
|
|
602
|
+
array.push( texture.mipmapsAutoUpdate );
|
|
542
603
|
array.push( texture.premultiplyAlpha );
|
|
543
604
|
array.push( texture.flipY );
|
|
544
605
|
array.push( texture.unpackAlignment );
|
|
@@ -623,7 +684,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
623
684
|
|
|
624
685
|
const textureProperties = properties.get( texture );
|
|
625
686
|
|
|
626
|
-
if ( texture.
|
|
687
|
+
if ( texture.version > 0 && textureProperties.__version !== texture.version ) {
|
|
627
688
|
|
|
628
689
|
uploadCubeTexture( textureProperties, texture, slot );
|
|
629
690
|
return;
|
|
@@ -717,6 +778,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
717
778
|
textureProperties.__webglInit = true;
|
|
718
779
|
|
|
719
780
|
texture.addEventListener( 'dispose', onTextureDispose );
|
|
781
|
+
track( texture );
|
|
720
782
|
|
|
721
783
|
}
|
|
722
784
|
|
|
@@ -1388,7 +1450,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1388
1450
|
|
|
1389
1451
|
}
|
|
1390
1452
|
|
|
1391
|
-
if ( textureNeedsGenerateMipmaps( texture ) ) {
|
|
1453
|
+
if ( textureNeedsGenerateMipmaps( texture ) && texture.mipmapsAutoUpdate === true ) {
|
|
1392
1454
|
|
|
1393
1455
|
generateMipmap( textureType );
|
|
1394
1456
|
|
|
@@ -1451,8 +1513,9 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1451
1513
|
|
|
1452
1514
|
const image = cubeImage[ 0 ],
|
|
1453
1515
|
glFormat = utils.convert( texture.format, texture.colorSpace ),
|
|
1454
|
-
glType = utils.convert( texture.type )
|
|
1455
|
-
|
|
1516
|
+
glType = utils.convert( texture.type );
|
|
1517
|
+
|
|
1518
|
+
let glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.normalized, texture.colorSpace );
|
|
1456
1519
|
|
|
1457
1520
|
const useTexStorage = ( texture.isVideoTexture !== true );
|
|
1458
1521
|
const allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );
|
|
@@ -1463,7 +1526,31 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1463
1526
|
|
|
1464
1527
|
let mipmaps;
|
|
1465
1528
|
|
|
1466
|
-
if (
|
|
1529
|
+
if ( texture.isDepthTexture ) {
|
|
1530
|
+
|
|
1531
|
+
glInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );
|
|
1532
|
+
|
|
1533
|
+
//
|
|
1534
|
+
|
|
1535
|
+
if ( allocateMemory ) {
|
|
1536
|
+
|
|
1537
|
+
if ( useTexStorage ) {
|
|
1538
|
+
|
|
1539
|
+
state.texStorage2D( _gl.TEXTURE_CUBE_MAP, 1, glInternalFormat, image.width, image.height );
|
|
1540
|
+
|
|
1541
|
+
} else {
|
|
1542
|
+
|
|
1543
|
+
for ( let i = 0; i < 6; i ++ ) {
|
|
1544
|
+
|
|
1545
|
+
state.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );
|
|
1546
|
+
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
} else if ( isCompressed ) {
|
|
1467
1554
|
|
|
1468
1555
|
if ( useTexStorage && allocateMemory ) {
|
|
1469
1556
|
|
|
@@ -1624,7 +1711,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1624
1711
|
|
|
1625
1712
|
}
|
|
1626
1713
|
|
|
1627
|
-
if ( textureNeedsGenerateMipmaps( texture ) ) {
|
|
1714
|
+
if ( textureNeedsGenerateMipmaps( texture ) && texture.mipmapsAutoUpdate === true ) {
|
|
1628
1715
|
|
|
1629
1716
|
// We assume images for cube map have the same size.
|
|
1630
1717
|
generateMipmap( _gl.TEXTURE_CUBE_MAP );
|
|
@@ -1768,57 +1855,21 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1768
1855
|
textureProperties.__renderTarget = renderTarget;
|
|
1769
1856
|
|
|
1770
1857
|
// upload an empty depth texture with framebuffer size
|
|
1858
|
+
const image = isCube ? renderTarget.depthTexture.image[ 0 ] : renderTarget.depthTexture.image;
|
|
1859
|
+
|
|
1771
1860
|
if ( ! textureProperties.__webglTexture ||
|
|
1772
|
-
|
|
1773
|
-
|
|
1861
|
+
image.width !== renderTarget.width ||
|
|
1862
|
+
image.height !== renderTarget.height ) {
|
|
1774
1863
|
|
|
1775
|
-
|
|
1776
|
-
|
|
1864
|
+
image.width = renderTarget.width;
|
|
1865
|
+
image.height = renderTarget.height;
|
|
1777
1866
|
renderTarget.depthTexture.needsUpdate = true;
|
|
1778
1867
|
|
|
1779
1868
|
}
|
|
1780
1869
|
|
|
1781
1870
|
if ( isCube ) {
|
|
1782
1871
|
|
|
1783
|
-
|
|
1784
|
-
if ( textureProperties.__webglInit === undefined ) {
|
|
1785
|
-
|
|
1786
|
-
textureProperties.__webglInit = true;
|
|
1787
|
-
renderTarget.depthTexture.addEventListener( 'dispose', onTextureDispose );
|
|
1788
|
-
|
|
1789
|
-
}
|
|
1790
|
-
|
|
1791
|
-
// Only create and allocate storage once
|
|
1792
|
-
if ( textureProperties.__webglTexture === undefined ) {
|
|
1793
|
-
|
|
1794
|
-
textureProperties.__webglTexture = _gl.createTexture();
|
|
1795
|
-
|
|
1796
|
-
state.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );
|
|
1797
|
-
setTextureParameters( _gl.TEXTURE_CUBE_MAP, renderTarget.depthTexture );
|
|
1798
|
-
|
|
1799
|
-
// Allocate storage for all 6 faces with correct depth texture format
|
|
1800
|
-
const glFormat = utils.convert( renderTarget.depthTexture.format );
|
|
1801
|
-
const glType = utils.convert( renderTarget.depthTexture.type );
|
|
1802
|
-
|
|
1803
|
-
// Use proper internal format for depth textures
|
|
1804
|
-
let glInternalFormat;
|
|
1805
|
-
if ( renderTarget.depthTexture.format === DepthFormat ) {
|
|
1806
|
-
|
|
1807
|
-
glInternalFormat = _gl.DEPTH_COMPONENT24;
|
|
1808
|
-
|
|
1809
|
-
} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {
|
|
1810
|
-
|
|
1811
|
-
glInternalFormat = _gl.DEPTH24_STENCIL8;
|
|
1812
|
-
|
|
1813
|
-
}
|
|
1814
|
-
|
|
1815
|
-
for ( let i = 0; i < 6; i ++ ) {
|
|
1816
|
-
|
|
1817
|
-
_gl.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );
|
|
1818
|
-
|
|
1819
|
-
}
|
|
1820
|
-
|
|
1821
|
-
}
|
|
1872
|
+
setTextureCube( renderTarget.depthTexture, 0 );
|
|
1822
1873
|
|
|
1823
1874
|
} else {
|
|
1824
1875
|
|
|
@@ -1916,7 +1967,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1916
1967
|
|
|
1917
1968
|
const mipmaps = renderTarget.texture.mipmaps;
|
|
1918
1969
|
|
|
1919
|
-
if ( mipmaps
|
|
1970
|
+
if ( mipmaps.length > 0 ) {
|
|
1920
1971
|
|
|
1921
1972
|
setupDepthTexture( renderTargetProperties.__webglFramebuffer[ 0 ], renderTarget, 0 );
|
|
1922
1973
|
|
|
@@ -1959,7 +2010,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1959
2010
|
|
|
1960
2011
|
const mipmaps = renderTarget.texture.mipmaps;
|
|
1961
2012
|
|
|
1962
|
-
if ( mipmaps
|
|
2013
|
+
if ( mipmaps.length > 0 ) {
|
|
1963
2014
|
|
|
1964
2015
|
state.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
|
|
1965
2016
|
|
|
@@ -2020,6 +2071,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2020
2071
|
const textureProperties = properties.get( texture );
|
|
2021
2072
|
|
|
2022
2073
|
renderTarget.addEventListener( 'dispose', onRenderTargetDispose );
|
|
2074
|
+
track( renderTarget );
|
|
2023
2075
|
|
|
2024
2076
|
const textures = renderTarget.textures;
|
|
2025
2077
|
|
|
@@ -2047,7 +2099,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2047
2099
|
|
|
2048
2100
|
for ( let i = 0; i < 6; i ++ ) {
|
|
2049
2101
|
|
|
2050
|
-
if ( texture.mipmaps
|
|
2102
|
+
if ( texture.mipmaps.length > 0 ) {
|
|
2051
2103
|
|
|
2052
2104
|
renderTargetProperties.__webglFramebuffer[ i ] = [];
|
|
2053
2105
|
|
|
@@ -2067,7 +2119,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2067
2119
|
|
|
2068
2120
|
} else {
|
|
2069
2121
|
|
|
2070
|
-
if ( texture.mipmaps
|
|
2122
|
+
if ( texture.mipmaps.length > 0 ) {
|
|
2071
2123
|
|
|
2072
2124
|
renderTargetProperties.__webglFramebuffer = [];
|
|
2073
2125
|
|
|
@@ -2149,7 +2201,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2149
2201
|
|
|
2150
2202
|
for ( let i = 0; i < 6; i ++ ) {
|
|
2151
2203
|
|
|
2152
|
-
if ( texture.mipmaps
|
|
2204
|
+
if ( texture.mipmaps.length > 0 ) {
|
|
2153
2205
|
|
|
2154
2206
|
for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
|
|
2155
2207
|
|
|
@@ -2169,6 +2221,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2169
2221
|
|
|
2170
2222
|
generateMipmap( _gl.TEXTURE_CUBE_MAP );
|
|
2171
2223
|
|
|
2224
|
+
} else if ( texture.mipmaps.length > 0 ) {
|
|
2225
|
+
|
|
2226
|
+
// Limit the max level to keep partial mip chains complete.
|
|
2227
|
+
_gl.texParameteri( _gl.TEXTURE_CUBE_MAP, _gl.TEXTURE_MAX_LEVEL, texture.mipmaps.length - 1 );
|
|
2228
|
+
|
|
2172
2229
|
}
|
|
2173
2230
|
|
|
2174
2231
|
state.unbindTexture();
|
|
@@ -2215,7 +2272,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2215
2272
|
state.bindTexture( glTextureType, textureProperties.__webglTexture );
|
|
2216
2273
|
setTextureParameters( glTextureType, texture );
|
|
2217
2274
|
|
|
2218
|
-
if ( texture.mipmaps
|
|
2275
|
+
if ( texture.mipmaps.length > 0 ) {
|
|
2219
2276
|
|
|
2220
2277
|
for ( let level = 0; level < texture.mipmaps.length; level ++ ) {
|
|
2221
2278
|
|
|
@@ -2233,6 +2290,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2233
2290
|
|
|
2234
2291
|
generateMipmap( glTextureType );
|
|
2235
2292
|
|
|
2293
|
+
} else if ( texture.mipmaps.length > 0 ) {
|
|
2294
|
+
|
|
2295
|
+
// Limit the max level to keep partial mip chains complete.
|
|
2296
|
+
_gl.texParameteri( glTextureType, _gl.TEXTURE_MAX_LEVEL, texture.mipmaps.length - 1 );
|
|
2297
|
+
|
|
2236
2298
|
}
|
|
2237
2299
|
|
|
2238
2300
|
state.unbindTexture();
|
|
@@ -2257,7 +2319,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2257
2319
|
|
|
2258
2320
|
const texture = textures[ i ];
|
|
2259
2321
|
|
|
2260
|
-
if ( textureNeedsGenerateMipmaps( texture ) ) {
|
|
2322
|
+
if ( textureNeedsGenerateMipmaps( texture ) && texture.mipmapsAutoUpdate === true ) {
|
|
2261
2323
|
|
|
2262
2324
|
const targetType = getTargetType( renderTarget );
|
|
2263
2325
|
const webglTexture = properties.get( texture ).__webglTexture;
|
|
@@ -2273,7 +2335,6 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2273
2335
|
}
|
|
2274
2336
|
|
|
2275
2337
|
const invalidationArrayRead = [];
|
|
2276
|
-
const invalidationArrayDraw = [];
|
|
2277
2338
|
|
|
2278
2339
|
function updateMultisampleRenderTarget( renderTarget ) {
|
|
2279
2340
|
|
|
@@ -2308,7 +2369,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2308
2369
|
|
|
2309
2370
|
const mipmaps = renderTarget.texture.mipmaps;
|
|
2310
2371
|
|
|
2311
|
-
if ( mipmaps
|
|
2372
|
+
if ( mipmaps.length > 0 ) {
|
|
2312
2373
|
|
|
2313
2374
|
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ 0 ] );
|
|
2314
2375
|
|
|
@@ -2344,16 +2405,12 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2344
2405
|
if ( supportsInvalidateFramebuffer === true ) {
|
|
2345
2406
|
|
|
2346
2407
|
invalidationArrayRead.length = 0;
|
|
2347
|
-
invalidationArrayDraw.length = 0;
|
|
2348
2408
|
|
|
2349
2409
|
invalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );
|
|
2350
2410
|
|
|
2351
2411
|
if ( renderTarget.depthBuffer && renderTarget.storeMultisampledDepthBuffer === false ) {
|
|
2352
2412
|
|
|
2353
2413
|
invalidationArrayRead.push( depthStyle );
|
|
2354
|
-
invalidationArrayDraw.push( depthStyle );
|
|
2355
|
-
|
|
2356
|
-
_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );
|
|
2357
2414
|
|
|
2358
2415
|
}
|
|
2359
2416
|
|
|
@@ -2507,12 +2564,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2507
2564
|
this.setupDepthRenderbuffer = setupDepthRenderbuffer;
|
|
2508
2565
|
this.setupFrameBufferTexture = setupFrameBufferTexture;
|
|
2509
2566
|
this.useMultisampledRTT = useMultisampledRTT;
|
|
2510
|
-
|
|
2511
|
-
this.isReversedDepthBuffer = function () {
|
|
2512
|
-
|
|
2513
|
-
return state.buffers.depth.getReversed();
|
|
2514
|
-
|
|
2515
|
-
};
|
|
2567
|
+
this.dispose = dispose;
|
|
2516
2568
|
|
|
2517
2569
|
}
|
|
2518
2570
|
|
|
@@ -46,11 +46,13 @@ import { Texture } from '../../textures/Texture.js';
|
|
|
46
46
|
import { DataArrayTexture } from '../../textures/DataArrayTexture.js';
|
|
47
47
|
import { Data3DTexture } from '../../textures/Data3DTexture.js';
|
|
48
48
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
49
|
-
import {
|
|
49
|
+
import { CubeDepthTexture } from '../../textures/CubeDepthTexture.js';
|
|
50
|
+
import { AlwaysCompare } from '../../constants.js';
|
|
50
51
|
|
|
51
52
|
const emptyTexture = /*@__PURE__*/ new Texture();
|
|
52
53
|
|
|
53
54
|
const emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );
|
|
55
|
+
const emptyCubeShadowTexture = /*@__PURE__*/ new CubeDepthTexture( 1 );
|
|
54
56
|
|
|
55
57
|
const emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();
|
|
56
58
|
const empty3dTexture = /*@__PURE__*/ new Data3DTexture();
|
|
@@ -554,6 +556,19 @@ function setValueV4ui( gl, v ) {
|
|
|
554
556
|
}
|
|
555
557
|
|
|
556
558
|
|
|
559
|
+
function initShadowTexture( texture ) {
|
|
560
|
+
|
|
561
|
+
if ( texture.version === 0 ) {
|
|
562
|
+
|
|
563
|
+
texture.compareFunction = AlwaysCompare;
|
|
564
|
+
texture.needsUpdate = true;
|
|
565
|
+
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
return texture;
|
|
569
|
+
|
|
570
|
+
}
|
|
571
|
+
|
|
557
572
|
// Single texture (2D / Cube)
|
|
558
573
|
|
|
559
574
|
function setValueT1( gl, v, textures ) {
|
|
@@ -572,8 +587,7 @@ function setValueT1( gl, v, textures ) {
|
|
|
572
587
|
|
|
573
588
|
if ( this.type === gl.SAMPLER_2D_SHADOW ) {
|
|
574
589
|
|
|
575
|
-
|
|
576
|
-
emptyTexture2D = emptyShadowTexture;
|
|
590
|
+
emptyTexture2D = initShadowTexture( emptyShadowTexture );
|
|
577
591
|
|
|
578
592
|
} else {
|
|
579
593
|
|
|
@@ -613,7 +627,19 @@ function setValueT6( gl, v, textures ) {
|
|
|
613
627
|
|
|
614
628
|
}
|
|
615
629
|
|
|
616
|
-
|
|
630
|
+
let emptyTextureCube;
|
|
631
|
+
|
|
632
|
+
if ( this.type === gl.SAMPLER_CUBE_SHADOW ) {
|
|
633
|
+
|
|
634
|
+
emptyTextureCube = initShadowTexture( emptyCubeShadowTexture );
|
|
635
|
+
|
|
636
|
+
} else {
|
|
637
|
+
|
|
638
|
+
emptyTextureCube = emptyCubeTexture;
|
|
639
|
+
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
textures.setTextureCube( v || emptyTextureCube, unit );
|
|
617
643
|
|
|
618
644
|
}
|
|
619
645
|
|
|
@@ -826,7 +852,7 @@ function setValueT1Array( gl, v, textures ) {
|
|
|
826
852
|
|
|
827
853
|
if ( this.type === gl.SAMPLER_2D_SHADOW ) {
|
|
828
854
|
|
|
829
|
-
emptyTexture2D = emptyShadowTexture;
|
|
855
|
+
emptyTexture2D = initShadowTexture( emptyShadowTexture );
|
|
830
856
|
|
|
831
857
|
} else {
|
|
832
858
|
|
|
@@ -882,9 +908,21 @@ function setValueT6Array( gl, v, textures ) {
|
|
|
882
908
|
|
|
883
909
|
}
|
|
884
910
|
|
|
911
|
+
let emptyTextureCube;
|
|
912
|
+
|
|
913
|
+
if ( this.type === gl.SAMPLER_CUBE_SHADOW ) {
|
|
914
|
+
|
|
915
|
+
emptyTextureCube = initShadowTexture( emptyCubeShadowTexture );
|
|
916
|
+
|
|
917
|
+
} else {
|
|
918
|
+
|
|
919
|
+
emptyTextureCube = emptyCubeTexture;
|
|
920
|
+
|
|
921
|
+
}
|
|
922
|
+
|
|
885
923
|
for ( let i = 0; i !== n; ++ i ) {
|
|
886
924
|
|
|
887
|
-
textures.setTextureCube( v[ i ] ||
|
|
925
|
+
textures.setTextureCube( v[ i ] || emptyTextureCube, units[ i ] );
|
|
888
926
|
|
|
889
927
|
}
|
|
890
928
|
|