super-three 0.173.5 → 0.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +21993 -1359
- package/build/three.core.js +21129 -1188
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +835 -142
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +19493 -17617
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +19477 -17617
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +144 -42
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +194 -71
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +74 -30
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +51 -5
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +36 -1
- package/examples/jsm/loaders/DDSLoader.js +25 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +71 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +222 -9
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +87 -19
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +56 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +90 -70
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +105 -13
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +109 -73
- package/examples/jsm/misc/VolumeSlice.js +91 -48
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +75 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +134 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +268 -134
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/AST.js +10 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
- package/examples/jsm/transpiler/TSLEncoder.js +83 -15
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
- package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
- package/examples/jsm/tsl/display/BleachBypass.js +1 -2
- package/examples/jsm/tsl/display/BloomNode.js +15 -16
- package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
- package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
- package/examples/jsm/tsl/display/FXAANode.js +2 -3
- package/examples/jsm/tsl/display/FilmNode.js +9 -8
- package/examples/jsm/tsl/display/GTAONode.js +11 -12
- package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
- package/examples/jsm/tsl/display/LensflareNode.js +15 -16
- package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
- package/examples/jsm/tsl/display/MotionBlur.js +1 -2
- package/examples/jsm/tsl/display/OutlineNode.js +7 -8
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
- package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
- package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
- package/examples/jsm/tsl/display/SMAANode.js +13 -7
- package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
- package/examples/jsm/tsl/display/SSRNode.js +6 -7
- package/examples/jsm/tsl/display/Sepia.js +1 -2
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
- package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
- package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
- package/examples/jsm/tsl/display/TransitionNode.js +4 -5
- package/examples/jsm/tsl/display/hashBlur.js +1 -2
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
- package/examples/jsm/tsl/math/Bayer.js +31 -0
- package/examples/jsm/tsl/utils/Raymarching.js +67 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +3 -4
- package/src/Three.TSL.js +7 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +169 -19
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/Audio.js +339 -0
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +76 -0
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +28 -0
- package/src/cameras/Camera.js +47 -0
- package/src/cameras/CubeCamera.js +66 -0
- package/src/cameras/OrthographicCamera.js +109 -0
- package/src/cameras/PerspectiveCamera.js +163 -40
- package/src/cameras/StereoCamera.js +46 -0
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/EventDispatcher.js +44 -2
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +593 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +170 -11
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +88 -1
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +13 -780
- package/src/extras/ImageUtils.js +20 -2
- package/src/extras/PMREMGenerator.js +41 -25
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +95 -15
- package/src/extras/core/Curve.js +150 -50
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +29 -3
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +63 -0
- package/src/extras/core/ShapePath.js +76 -0
- package/src/extras/curves/ArcCurve.js +22 -0
- package/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/src/extras/curves/CubicBezierCurve.js +67 -0
- package/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/src/extras/curves/EllipseCurve.js +102 -0
- package/src/extras/curves/LineCurve.js +36 -0
- package/src/extras/curves/LineCurve3.js +36 -0
- package/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/src/extras/curves/SplineCurve.js +48 -0
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/BoxGeometry.js +38 -0
- package/src/geometries/CapsuleGeometry.js +34 -0
- package/src/geometries/CircleGeometry.js +40 -0
- package/src/geometries/ConeGeometry.js +38 -0
- package/src/geometries/CylinderGeometry.js +39 -0
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +28 -0
- package/src/geometries/ExtrudeGeometry.js +112 -28
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +40 -0
- package/src/geometries/OctahedronGeometry.js +32 -0
- package/src/geometries/PlaneGeometry.js +34 -0
- package/src/geometries/PolyhedronGeometry.js +29 -0
- package/src/geometries/RingGeometry.js +36 -0
- package/src/geometries/ShapeGeometry.js +37 -0
- package/src/geometries/SphereGeometry.js +37 -0
- package/src/geometries/TetrahedronGeometry.js +32 -0
- package/src/geometries/TorusGeometry.js +35 -0
- package/src/geometries/TorusKnotGeometry.js +38 -0
- package/src/geometries/TubeGeometry.js +49 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +60 -3
- package/src/helpers/AxesHelper.js +28 -0
- package/src/helpers/Box3Helper.js +28 -0
- package/src/helpers/BoxHelper.js +43 -7
- package/src/helpers/CameraHelper.js +45 -5
- package/src/helpers/DirectionalLightHelper.js +52 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +39 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -0
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +39 -2
- package/src/helpers/SpotLightHelper.js +40 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +57 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +32 -0
- package/src/lights/Light.js +36 -0
- package/src/lights/LightProbe.js +43 -0
- package/src/lights/LightShadow.js +159 -0
- package/src/lights/PointLight.js +59 -0
- package/src/lights/PointLightShadow.js +21 -0
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +102 -0
- package/src/lights/SpotLightShadow.js +22 -0
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +130 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +13 -9
- package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
- package/src/loaders/nodes/NodeObjectLoader.js +12 -12
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +481 -4
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +14 -14
- package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
- package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
- package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
- package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
- package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
- package/src/materials/nodes/NodeMaterial.js +66 -47
- package/src/materials/nodes/PointsNodeMaterial.js +6 -6
- package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
- package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
- package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
- package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +137 -4
- package/src/math/Frustum.js +83 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +94 -0
- package/src/math/MathUtils.js +405 -19
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +368 -3
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +262 -6
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +70 -8
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +388 -2
- package/src/math/Vector3.js +541 -4
- package/src/math/Vector4.js +393 -0
- package/src/math/interpolants/CubicInterpolant.js +10 -1
- package/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/src/math/interpolants/LinearInterpolant.js +13 -0
- package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +1 -0
- package/src/nodes/accessors/AccessorsUtils.js +4 -2
- package/src/nodes/accessors/Arrays.js +6 -6
- package/src/nodes/accessors/BatchNode.js +10 -11
- package/src/nodes/accessors/Bitangent.js +6 -2
- package/src/nodes/accessors/BufferAttributeNode.js +33 -31
- package/src/nodes/accessors/BufferNode.js +12 -13
- package/src/nodes/accessors/BuiltinNode.js +7 -8
- package/src/nodes/accessors/Camera.js +9 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +17 -19
- package/src/nodes/accessors/InstanceNode.js +10 -11
- package/src/nodes/accessors/InstancedMeshNode.js +3 -4
- package/src/nodes/accessors/Lights.js +12 -15
- package/src/nodes/accessors/MaterialNode.js +45 -9
- package/src/nodes/accessors/MaterialProperties.js +51 -2
- package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
- package/src/nodes/accessors/ModelNode.js +20 -3
- package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
- package/src/nodes/accessors/MorphNode.js +29 -26
- package/src/nodes/accessors/Normal.js +11 -3
- package/src/nodes/accessors/Object3DNode.js +51 -16
- package/src/nodes/accessors/PointUVNode.js +2 -3
- package/src/nodes/accessors/Position.js +8 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
- package/src/nodes/accessors/ReferenceNode.js +31 -31
- package/src/nodes/accessors/ReflectVector.js +4 -2
- package/src/nodes/accessors/RendererReferenceNode.js +9 -10
- package/src/nodes/accessors/SceneNode.js +5 -4
- package/src/nodes/accessors/SkinningNode.js +53 -44
- package/src/nodes/accessors/StorageBufferNode.js +24 -24
- package/src/nodes/accessors/StorageTextureNode.js +17 -17
- package/src/nodes/accessors/Tangent.js +6 -2
- package/src/nodes/accessors/Texture3DNode.js +11 -12
- package/src/nodes/accessors/TextureBicubic.js +2 -3
- package/src/nodes/accessors/TextureNode.js +68 -47
- package/src/nodes/accessors/TextureSizeNode.js +5 -6
- package/src/nodes/accessors/UV.js +2 -3
- package/src/nodes/accessors/UniformArrayNode.js +24 -24
- package/src/nodes/accessors/UserDataNode.js +11 -12
- package/src/nodes/accessors/VelocityNode.js +4 -5
- package/src/nodes/accessors/VertexColorNode.js +7 -8
- package/src/nodes/code/CodeNode.js +15 -13
- package/src/nodes/code/ExpressionNode.js +8 -9
- package/src/nodes/code/FunctionCallNode.js +29 -9
- package/src/nodes/code/FunctionNode.js +1 -1
- package/src/nodes/code/ScriptableNode.js +27 -28
- package/src/nodes/code/ScriptableValueNode.js +11 -12
- package/src/nodes/core/ArrayNode.js +29 -12
- package/src/nodes/core/AssignNode.js +4 -5
- package/src/nodes/core/AttributeNode.js +8 -9
- package/src/nodes/core/BypassNode.js +3 -4
- package/src/nodes/core/CacheNode.js +5 -6
- package/src/nodes/core/ConstNode.js +4 -4
- package/src/nodes/core/ContextNode.js +9 -9
- package/src/nodes/core/IndexNode.js +8 -4
- package/src/nodes/core/InputNode.js +7 -7
- package/src/nodes/core/LightingModel.js +17 -17
- package/src/nodes/core/MRTNode.js +9 -10
- package/src/nodes/core/Node.js +49 -37
- package/src/nodes/core/NodeAttribute.js +7 -7
- package/src/nodes/core/NodeBuilder.js +248 -175
- package/src/nodes/core/NodeCache.js +4 -4
- package/src/nodes/core/NodeCode.js +6 -6
- package/src/nodes/core/NodeFrame.js +10 -10
- package/src/nodes/core/NodeFunction.js +8 -8
- package/src/nodes/core/NodeFunctionInput.js +8 -8
- package/src/nodes/core/NodeParser.js +1 -1
- package/src/nodes/core/NodeUniform.js +7 -7
- package/src/nodes/core/NodeUtils.js +22 -24
- package/src/nodes/core/NodeVar.js +9 -9
- package/src/nodes/core/NodeVarying.js +4 -4
- package/src/nodes/core/OutputStructNode.js +2 -3
- package/src/nodes/core/ParameterNode.js +6 -7
- package/src/nodes/core/PropertyNode.js +41 -13
- package/src/nodes/core/StackNode.js +11 -12
- package/src/nodes/core/StructNode.js +2 -3
- package/src/nodes/core/StructTypeNode.js +10 -6
- package/src/nodes/core/TempNode.js +3 -3
- package/src/nodes/core/UniformGroupNode.js +15 -12
- package/src/nodes/core/UniformNode.js +9 -10
- package/src/nodes/core/VarNode.js +14 -18
- package/src/nodes/core/VaryingNode.js +10 -10
- package/src/nodes/core/constants.js +0 -2
- package/src/nodes/display/BlendModes.js +21 -14
- package/src/nodes/display/BumpMapNode.js +5 -6
- package/src/nodes/display/ColorAdjustment.js +13 -9
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +15 -12
- package/src/nodes/display/FrontFacingNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +5 -6
- package/src/nodes/display/PassNode.js +122 -35
- package/src/nodes/display/PosterizeNode.js +2 -3
- package/src/nodes/display/RenderOutputNode.js +8 -9
- package/src/nodes/display/ScreenNode.js +16 -7
- package/src/nodes/display/ToneMappingFunctions.js +12 -8
- package/src/nodes/display/ToneMappingNode.js +8 -8
- package/src/nodes/display/ToonOutlinePassNode.js +3 -4
- package/src/nodes/display/ViewportDepthNode.js +15 -7
- package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
- package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
- package/src/nodes/display/ViewportTextureNode.js +16 -16
- package/src/nodes/fog/Fog.js +5 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BasicLightingModel.js +5 -8
- package/src/nodes/functions/PhongLightingModel.js +6 -8
- package/src/nodes/functions/PhysicalLightingModel.js +40 -42
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/ToonLightingModel.js +5 -6
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
- package/src/nodes/geometry/RangeNode.js +4 -5
- package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
- package/src/nodes/gpgpu/BarrierNode.js +6 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
- package/src/nodes/gpgpu/ComputeNode.js +43 -16
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
- package/src/nodes/lighting/AONode.js +2 -2
- package/src/nodes/lighting/AmbientLightNode.js +1 -1
- package/src/nodes/lighting/AnalyticLightNode.js +50 -9
- package/src/nodes/lighting/BasicLightMapNode.js +2 -2
- package/src/nodes/lighting/DirectionalLightNode.js +3 -12
- package/src/nodes/lighting/EnvironmentNode.js +5 -8
- package/src/nodes/lighting/HemisphereLightNode.js +1 -1
- package/src/nodes/lighting/LightProbeNode.js +1 -1
- package/src/nodes/lighting/LightUtils.js +1 -5
- package/src/nodes/lighting/LightingContextNode.js +10 -10
- package/src/nodes/lighting/LightingNode.js +1 -1
- package/src/nodes/lighting/LightsNode.js +68 -25
- package/src/nodes/lighting/PointLightNode.js +12 -27
- package/src/nodes/lighting/PointShadowNode.js +5 -6
- package/src/nodes/lighting/RectAreaLightNode.js +5 -10
- package/src/nodes/lighting/ShadowBaseNode.js +8 -9
- package/src/nodes/lighting/ShadowNode.js +28 -15
- package/src/nodes/lighting/SpotLightNode.js +8 -19
- package/src/nodes/math/ConditionalNode.js +26 -9
- package/src/nodes/math/Hash.js +2 -3
- package/src/nodes/math/MathNode.js +217 -150
- package/src/nodes/math/MathUtils.js +8 -6
- package/src/nodes/math/OperatorNode.js +198 -89
- package/src/nodes/math/TriNoise3D.js +2 -3
- package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
- package/src/nodes/parsers/GLSLNodeParser.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +61 -37
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/procedural/Checker.js +2 -3
- package/src/nodes/shapes/Shapes.js +2 -3
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +117 -19
- package/src/nodes/utils/ArrayElementNode.js +5 -3
- package/src/nodes/utils/ConvertNode.js +3 -3
- package/src/nodes/utils/CubeMapNode.js +7 -8
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/Discard.js +5 -5
- package/src/nodes/utils/EquirectUVNode.js +3 -4
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
- package/src/nodes/utils/JoinNode.js +29 -4
- package/src/nodes/utils/LoopNode.js +67 -35
- package/src/nodes/utils/MatcapUVNode.js +1 -2
- package/src/nodes/utils/MaxMipLevelNode.js +4 -5
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Oscillators.js +8 -6
- package/src/nodes/utils/Packing.js +4 -4
- package/src/nodes/utils/PostProcessingUtils.js +6 -5
- package/src/nodes/utils/RTTNode.js +19 -19
- package/src/nodes/utils/ReflectorNode.js +35 -25
- package/src/nodes/utils/RemapNode.js +9 -9
- package/src/nodes/utils/RotateNode.js +3 -4
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +5 -5
- package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
- package/src/nodes/utils/SpriteUtils.js +5 -6
- package/src/nodes/utils/StorageArrayElementNode.js +3 -4
- package/src/nodes/utils/Timer.js +9 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
- package/src/nodes/utils/UVUtils.js +4 -4
- package/src/nodes/utils/ViewportUtils.js +3 -4
- package/src/objects/BatchedMesh.js +319 -32
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +4 -4
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +120 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +82 -0
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +75 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +105 -0
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +622 -83
- package/src/renderers/common/Animation.js +6 -6
- package/src/renderers/common/Attributes.js +3 -3
- package/src/renderers/common/Backend.js +40 -31
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/BindGroup.js +5 -5
- package/src/renderers/common/Binding.js +4 -4
- package/src/renderers/common/Bindings.js +10 -0
- package/src/renderers/common/Buffer.js +5 -5
- package/src/renderers/common/BufferUtils.js +7 -9
- package/src/renderers/common/BundleGroup.js +6 -6
- package/src/renderers/common/ChainMap.js +3 -3
- package/src/renderers/common/ClippingContext.js +8 -8
- package/src/renderers/common/Color4.js +8 -8
- package/src/renderers/common/ComputePipeline.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/DataMap.js +2 -2
- package/src/renderers/common/Geometries.js +6 -6
- package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
- package/src/renderers/common/Info.js +17 -17
- package/src/renderers/common/Pipeline.js +3 -3
- package/src/renderers/common/Pipelines.js +12 -12
- package/src/renderers/common/PostProcessing.js +13 -1
- package/src/renderers/common/ProgrammableStage.js +11 -11
- package/src/renderers/common/QuadMesh.js +5 -3
- package/src/renderers/common/RenderContext.js +24 -24
- package/src/renderers/common/RenderContexts.js +4 -4
- package/src/renderers/common/RenderList.js +16 -16
- package/src/renderers/common/RenderObject.js +27 -27
- package/src/renderers/common/RenderObjects.js +4 -4
- package/src/renderers/common/RenderPipeline.js +1 -1
- package/src/renderers/common/Renderer.js +272 -200
- package/src/renderers/common/RendererUtils.js +0 -2
- package/src/renderers/common/SampledTexture.js +20 -20
- package/src/renderers/common/Sampler.js +5 -5
- package/src/renderers/common/StorageBuffer.js +2 -2
- package/src/renderers/common/StorageBufferAttribute.js +4 -4
- package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
- package/src/renderers/common/StorageTexture.js +6 -6
- package/src/renderers/common/Textures.js +6 -6
- package/src/renderers/common/TimestampQueryPool.js +66 -7
- package/src/renderers/common/Uniform.js +26 -26
- package/src/renderers/common/UniformBuffer.js +2 -2
- package/src/renderers/common/UniformsGroup.js +18 -18
- package/src/renderers/common/XRManager.js +369 -54
- package/src/renderers/common/XRRenderTarget.js +5 -5
- package/src/renderers/common/extras/PMREMGenerator.js +62 -37
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
- package/src/renderers/common/nodes/NodeLibrary.js +13 -13
- package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
- package/src/renderers/common/nodes/NodeSampler.js +1 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniform.js +9 -9
- package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +13 -13
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +19 -19
- package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
- package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
- package/src/renderers/webgpu/WebGPUBackend.js +200 -119
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
- package/src/renderers/webgpu/WebGPURenderer.js +19 -13
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
- package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +185 -9
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +88 -0
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +61 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +362 -3
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -28,8 +28,6 @@ import { Vector4 } from '../../math/Vector4.js';
|
|
|
28
28
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
29
29
|
import { DoubleSide, BackSide, FrontSide, SRGBColorSpace, NoToneMapping, LinearFilter, LinearSRGBColorSpace, HalfFloatType, RGBAFormat, PCFShadowMap } from '../../constants.js';
|
|
30
30
|
|
|
31
|
-
/** @module Renderer **/
|
|
32
|
-
|
|
33
31
|
const _scene = /*@__PURE__*/ new Scene();
|
|
34
32
|
const _drawingBufferSize = /*@__PURE__*/ new Vector2();
|
|
35
33
|
const _screen = /*@__PURE__*/ new Vector4();
|
|
@@ -43,27 +41,34 @@ const _vector4 = /*@__PURE__*/ new Vector4();
|
|
|
43
41
|
class Renderer {
|
|
44
42
|
|
|
45
43
|
/**
|
|
46
|
-
*
|
|
44
|
+
* Renderer options.
|
|
47
45
|
*
|
|
48
|
-
* @
|
|
49
|
-
* @
|
|
50
|
-
* @
|
|
51
|
-
* @
|
|
52
|
-
* @
|
|
53
|
-
* @
|
|
54
|
-
* @
|
|
55
|
-
* @param {Number} [parameters.samples=0] - When `antialias` is `true`, `4` samples are used by default. This parameter can set to any other integer value than 0
|
|
46
|
+
* @typedef {Object} Renderer~Options
|
|
47
|
+
* @property {boolean} [logarithmicDepthBuffer=false] - Whether logarithmic depth buffer is enabled or not.
|
|
48
|
+
* @property {boolean} [alpha=true] - Whether the default framebuffer (which represents the final contents of the canvas) should be transparent or opaque.
|
|
49
|
+
* @property {boolean} [depth=true] - Whether the default framebuffer should have a depth buffer or not.
|
|
50
|
+
* @property {boolean} [stencil=false] - Whether the default framebuffer should have a stencil buffer or not.
|
|
51
|
+
* @property {boolean} [antialias=false] - Whether MSAA as the default anti-aliasing should be enabled or not.
|
|
52
|
+
* @property {number} [samples=0] - When `antialias` is `true`, `4` samples are used by default. This parameter can set to any other integer value than 0
|
|
56
53
|
* to overwrite the default.
|
|
57
|
-
* @
|
|
58
|
-
* @
|
|
54
|
+
* @property {?Function} [getFallback=null] - This callback function can be used to provide a fallback backend, if the primary backend can't be targeted.
|
|
55
|
+
* @property {number} [colorBufferType=HalfFloatType] - Defines the type of color buffers. The default `HalfFloatType` is recommend for best
|
|
59
56
|
* quality. To save memory and bandwidth, `UnsignedByteType` might be used. This will reduce rendering quality though.
|
|
60
57
|
*/
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Constructs a new renderer.
|
|
61
|
+
*
|
|
62
|
+
* @param {Backend} backend - The backend the renderer is targeting (e.g. WebGPU or WebGL 2).
|
|
63
|
+
* @param {Renderer~Options} [parameters] - The configuration parameter.
|
|
64
|
+
|
|
65
|
+
*/
|
|
61
66
|
constructor( backend, parameters = {} ) {
|
|
62
67
|
|
|
63
68
|
/**
|
|
64
69
|
* This flag can be used for type testing.
|
|
65
70
|
*
|
|
66
|
-
* @type {
|
|
71
|
+
* @type {boolean}
|
|
67
72
|
* @readonly
|
|
68
73
|
* @default true
|
|
69
74
|
*/
|
|
@@ -101,7 +106,7 @@ class Renderer {
|
|
|
101
106
|
/**
|
|
102
107
|
* The number of MSAA samples.
|
|
103
108
|
*
|
|
104
|
-
* @type {
|
|
109
|
+
* @type {number}
|
|
105
110
|
* @default 0
|
|
106
111
|
*/
|
|
107
112
|
this.samples = samples || ( antialias === true ) ? 4 : 0;
|
|
@@ -111,7 +116,7 @@ class Renderer {
|
|
|
111
116
|
* before execute a `render()` call. The target can be the canvas (default framebuffer)
|
|
112
117
|
* or the current bound render target (custom framebuffer).
|
|
113
118
|
*
|
|
114
|
-
* @type {
|
|
119
|
+
* @type {boolean}
|
|
115
120
|
* @default true
|
|
116
121
|
*/
|
|
117
122
|
this.autoClear = true;
|
|
@@ -120,7 +125,7 @@ class Renderer {
|
|
|
120
125
|
* When `autoClear` is set to `true`, this property defines whether the renderer
|
|
121
126
|
* should clear the color buffer.
|
|
122
127
|
*
|
|
123
|
-
* @type {
|
|
128
|
+
* @type {boolean}
|
|
124
129
|
* @default true
|
|
125
130
|
*/
|
|
126
131
|
this.autoClearColor = true;
|
|
@@ -129,7 +134,7 @@ class Renderer {
|
|
|
129
134
|
* When `autoClear` is set to `true`, this property defines whether the renderer
|
|
130
135
|
* should clear the depth buffer.
|
|
131
136
|
*
|
|
132
|
-
* @type {
|
|
137
|
+
* @type {boolean}
|
|
133
138
|
* @default true
|
|
134
139
|
*/
|
|
135
140
|
this.autoClearDepth = true;
|
|
@@ -138,7 +143,7 @@ class Renderer {
|
|
|
138
143
|
* When `autoClear` is set to `true`, this property defines whether the renderer
|
|
139
144
|
* should clear the stencil buffer.
|
|
140
145
|
*
|
|
141
|
-
* @type {
|
|
146
|
+
* @type {boolean}
|
|
142
147
|
* @default true
|
|
143
148
|
*/
|
|
144
149
|
this.autoClearStencil = true;
|
|
@@ -146,7 +151,7 @@ class Renderer {
|
|
|
146
151
|
/**
|
|
147
152
|
* Whether the default framebuffer should be transparent or opaque.
|
|
148
153
|
*
|
|
149
|
-
* @type {
|
|
154
|
+
* @type {boolean}
|
|
150
155
|
* @default true
|
|
151
156
|
*/
|
|
152
157
|
this.alpha = alpha;
|
|
@@ -154,7 +159,7 @@ class Renderer {
|
|
|
154
159
|
/**
|
|
155
160
|
* Whether logarithmic depth buffer is enabled or not.
|
|
156
161
|
*
|
|
157
|
-
* @type {
|
|
162
|
+
* @type {boolean}
|
|
158
163
|
* @default false
|
|
159
164
|
*/
|
|
160
165
|
this.logarithmicDepthBuffer = logarithmicDepthBuffer;
|
|
@@ -162,7 +167,7 @@ class Renderer {
|
|
|
162
167
|
/**
|
|
163
168
|
* Defines the output color space of the renderer.
|
|
164
169
|
*
|
|
165
|
-
* @type {
|
|
170
|
+
* @type {string}
|
|
166
171
|
* @default SRGBColorSpace
|
|
167
172
|
*/
|
|
168
173
|
this.outputColorSpace = SRGBColorSpace;
|
|
@@ -170,7 +175,7 @@ class Renderer {
|
|
|
170
175
|
/**
|
|
171
176
|
* Defines the tone mapping of the renderer.
|
|
172
177
|
*
|
|
173
|
-
* @type {
|
|
178
|
+
* @type {number}
|
|
174
179
|
* @default NoToneMapping
|
|
175
180
|
*/
|
|
176
181
|
this.toneMapping = NoToneMapping;
|
|
@@ -178,7 +183,7 @@ class Renderer {
|
|
|
178
183
|
/**
|
|
179
184
|
* Defines the tone mapping exposure.
|
|
180
185
|
*
|
|
181
|
-
* @type {
|
|
186
|
+
* @type {number}
|
|
182
187
|
* @default 1
|
|
183
188
|
*/
|
|
184
189
|
this.toneMappingExposure = 1.0;
|
|
@@ -191,7 +196,7 @@ class Renderer {
|
|
|
191
196
|
* it may be necessary to turn off sorting and use other methods to deal with transparency rendering
|
|
192
197
|
* e.g. manually determining each object's rendering order.
|
|
193
198
|
*
|
|
194
|
-
* @type {
|
|
199
|
+
* @type {boolean}
|
|
195
200
|
* @default true
|
|
196
201
|
*/
|
|
197
202
|
this.sortObjects = true;
|
|
@@ -199,7 +204,7 @@ class Renderer {
|
|
|
199
204
|
/**
|
|
200
205
|
* Whether the default framebuffer should have a depth buffer or not.
|
|
201
206
|
*
|
|
202
|
-
* @type {
|
|
207
|
+
* @type {boolean}
|
|
203
208
|
* @default true
|
|
204
209
|
*/
|
|
205
210
|
this.depth = depth;
|
|
@@ -207,7 +212,7 @@ class Renderer {
|
|
|
207
212
|
/**
|
|
208
213
|
* Whether the default framebuffer should have a stencil buffer or not.
|
|
209
214
|
*
|
|
210
|
-
* @type {
|
|
215
|
+
* @type {boolean}
|
|
211
216
|
* @default false
|
|
212
217
|
*/
|
|
213
218
|
this.stencil = stencil;
|
|
@@ -249,15 +254,15 @@ class Renderer {
|
|
|
249
254
|
* This callback function can be used to provide a fallback backend, if the primary backend can't be targeted.
|
|
250
255
|
*
|
|
251
256
|
* @private
|
|
252
|
-
* @type {Function}
|
|
257
|
+
* @type {?Function}
|
|
253
258
|
*/
|
|
254
259
|
this._getFallback = getFallback;
|
|
255
260
|
|
|
256
261
|
/**
|
|
257
|
-
* The renderer's pixel
|
|
262
|
+
* The renderer's pixel ratio.
|
|
258
263
|
*
|
|
259
264
|
* @private
|
|
260
|
-
* @type {
|
|
265
|
+
* @type {number}
|
|
261
266
|
* @default 1
|
|
262
267
|
*/
|
|
263
268
|
this._pixelRatio = 1;
|
|
@@ -266,7 +271,7 @@ class Renderer {
|
|
|
266
271
|
* The width of the renderer's default framebuffer in logical pixel unit.
|
|
267
272
|
*
|
|
268
273
|
* @private
|
|
269
|
-
* @type {
|
|
274
|
+
* @type {number}
|
|
270
275
|
*/
|
|
271
276
|
this._width = this.domElement.width;
|
|
272
277
|
|
|
@@ -274,7 +279,7 @@ class Renderer {
|
|
|
274
279
|
* The height of the renderer's default framebuffer in logical pixel unit.
|
|
275
280
|
*
|
|
276
281
|
* @private
|
|
277
|
-
* @type {
|
|
282
|
+
* @type {number}
|
|
278
283
|
*/
|
|
279
284
|
this._height = this.domElement.height;
|
|
280
285
|
|
|
@@ -298,7 +303,7 @@ class Renderer {
|
|
|
298
303
|
* Whether the scissor test should be enabled or not.
|
|
299
304
|
*
|
|
300
305
|
* @private
|
|
301
|
-
* @type {
|
|
306
|
+
* @type {boolean}
|
|
302
307
|
*/
|
|
303
308
|
this._scissorTest = false;
|
|
304
309
|
|
|
@@ -306,7 +311,7 @@ class Renderer {
|
|
|
306
311
|
* A reference to a renderer module for managing shader attributes.
|
|
307
312
|
*
|
|
308
313
|
* @private
|
|
309
|
-
* @type {Attributes
|
|
314
|
+
* @type {?Attributes}
|
|
310
315
|
* @default null
|
|
311
316
|
*/
|
|
312
317
|
this._attributes = null;
|
|
@@ -315,7 +320,7 @@ class Renderer {
|
|
|
315
320
|
* A reference to a renderer module for managing geometries.
|
|
316
321
|
*
|
|
317
322
|
* @private
|
|
318
|
-
* @type {Geometries
|
|
323
|
+
* @type {?Geometries}
|
|
319
324
|
* @default null
|
|
320
325
|
*/
|
|
321
326
|
this._geometries = null;
|
|
@@ -324,7 +329,7 @@ class Renderer {
|
|
|
324
329
|
* A reference to a renderer module for managing node related logic.
|
|
325
330
|
*
|
|
326
331
|
* @private
|
|
327
|
-
* @type {Nodes
|
|
332
|
+
* @type {?Nodes}
|
|
328
333
|
* @default null
|
|
329
334
|
*/
|
|
330
335
|
this._nodes = null;
|
|
@@ -333,7 +338,7 @@ class Renderer {
|
|
|
333
338
|
* A reference to a renderer module for managing the internal animation loop.
|
|
334
339
|
*
|
|
335
340
|
* @private
|
|
336
|
-
* @type {Animation
|
|
341
|
+
* @type {?Animation}
|
|
337
342
|
* @default null
|
|
338
343
|
*/
|
|
339
344
|
this._animation = null;
|
|
@@ -342,7 +347,7 @@ class Renderer {
|
|
|
342
347
|
* A reference to a renderer module for managing shader program bindings.
|
|
343
348
|
*
|
|
344
349
|
* @private
|
|
345
|
-
* @type {Bindings
|
|
350
|
+
* @type {?Bindings}
|
|
346
351
|
* @default null
|
|
347
352
|
*/
|
|
348
353
|
this._bindings = null;
|
|
@@ -351,7 +356,7 @@ class Renderer {
|
|
|
351
356
|
* A reference to a renderer module for managing render objects.
|
|
352
357
|
*
|
|
353
358
|
* @private
|
|
354
|
-
* @type {RenderObjects
|
|
359
|
+
* @type {?RenderObjects}
|
|
355
360
|
* @default null
|
|
356
361
|
*/
|
|
357
362
|
this._objects = null;
|
|
@@ -360,7 +365,7 @@ class Renderer {
|
|
|
360
365
|
* A reference to a renderer module for managing render and compute pipelines.
|
|
361
366
|
*
|
|
362
367
|
* @private
|
|
363
|
-
* @type {Pipelines
|
|
368
|
+
* @type {?Pipelines}
|
|
364
369
|
* @default null
|
|
365
370
|
*/
|
|
366
371
|
this._pipelines = null;
|
|
@@ -369,7 +374,7 @@ class Renderer {
|
|
|
369
374
|
* A reference to a renderer module for managing render bundles.
|
|
370
375
|
*
|
|
371
376
|
* @private
|
|
372
|
-
* @type {RenderBundles
|
|
377
|
+
* @type {?RenderBundles}
|
|
373
378
|
* @default null
|
|
374
379
|
*/
|
|
375
380
|
this._bundles = null;
|
|
@@ -378,7 +383,7 @@ class Renderer {
|
|
|
378
383
|
* A reference to a renderer module for managing render lists.
|
|
379
384
|
*
|
|
380
385
|
* @private
|
|
381
|
-
* @type {RenderLists
|
|
386
|
+
* @type {?RenderLists}
|
|
382
387
|
* @default null
|
|
383
388
|
*/
|
|
384
389
|
this._renderLists = null;
|
|
@@ -387,7 +392,7 @@ class Renderer {
|
|
|
387
392
|
* A reference to a renderer module for managing render contexts.
|
|
388
393
|
*
|
|
389
394
|
* @private
|
|
390
|
-
* @type {RenderContexts
|
|
395
|
+
* @type {?RenderContexts}
|
|
391
396
|
* @default null
|
|
392
397
|
*/
|
|
393
398
|
this._renderContexts = null;
|
|
@@ -396,7 +401,7 @@ class Renderer {
|
|
|
396
401
|
* A reference to a renderer module for managing textures.
|
|
397
402
|
*
|
|
398
403
|
* @private
|
|
399
|
-
* @type {Textures
|
|
404
|
+
* @type {?Textures}
|
|
400
405
|
* @default null
|
|
401
406
|
*/
|
|
402
407
|
this._textures = null;
|
|
@@ -405,7 +410,7 @@ class Renderer {
|
|
|
405
410
|
* A reference to a renderer module for backgrounds.
|
|
406
411
|
*
|
|
407
412
|
* @private
|
|
408
|
-
* @type {Background
|
|
413
|
+
* @type {?Background}
|
|
409
414
|
* @default null
|
|
410
415
|
*/
|
|
411
416
|
this._background = null;
|
|
@@ -424,7 +429,7 @@ class Renderer {
|
|
|
424
429
|
* A reference to the current render context.
|
|
425
430
|
*
|
|
426
431
|
* @private
|
|
427
|
-
* @type {RenderContext
|
|
432
|
+
* @type {?RenderContext}
|
|
428
433
|
* @default null
|
|
429
434
|
*/
|
|
430
435
|
this._currentRenderContext = null;
|
|
@@ -433,7 +438,7 @@ class Renderer {
|
|
|
433
438
|
* A custom sort function for the opaque render list.
|
|
434
439
|
*
|
|
435
440
|
* @private
|
|
436
|
-
* @type {Function
|
|
441
|
+
* @type {?Function}
|
|
437
442
|
* @default null
|
|
438
443
|
*/
|
|
439
444
|
this._opaqueSort = null;
|
|
@@ -442,7 +447,7 @@ class Renderer {
|
|
|
442
447
|
* A custom sort function for the transparent render list.
|
|
443
448
|
*
|
|
444
449
|
* @private
|
|
445
|
-
* @type {Function
|
|
450
|
+
* @type {?Function}
|
|
446
451
|
* @default null
|
|
447
452
|
*/
|
|
448
453
|
this._transparentSort = null;
|
|
@@ -451,7 +456,7 @@ class Renderer {
|
|
|
451
456
|
* The framebuffer target.
|
|
452
457
|
*
|
|
453
458
|
* @private
|
|
454
|
-
* @type {RenderTarget
|
|
459
|
+
* @type {?RenderTarget}
|
|
455
460
|
* @default null
|
|
456
461
|
*/
|
|
457
462
|
this._frameBufferTarget = null;
|
|
@@ -470,7 +475,7 @@ class Renderer {
|
|
|
470
475
|
* The clear depth value.
|
|
471
476
|
*
|
|
472
477
|
* @private
|
|
473
|
-
* @type {
|
|
478
|
+
* @type {number}
|
|
474
479
|
* @default 1
|
|
475
480
|
*/
|
|
476
481
|
this._clearDepth = 1;
|
|
@@ -479,7 +484,7 @@ class Renderer {
|
|
|
479
484
|
* The clear stencil value.
|
|
480
485
|
*
|
|
481
486
|
* @private
|
|
482
|
-
* @type {
|
|
487
|
+
* @type {number}
|
|
483
488
|
* @default 0
|
|
484
489
|
*/
|
|
485
490
|
this._clearStencil = 0;
|
|
@@ -488,7 +493,7 @@ class Renderer {
|
|
|
488
493
|
* The current render target.
|
|
489
494
|
*
|
|
490
495
|
* @private
|
|
491
|
-
* @type {RenderTarget
|
|
496
|
+
* @type {?RenderTarget}
|
|
492
497
|
* @default null
|
|
493
498
|
*/
|
|
494
499
|
this._renderTarget = null;
|
|
@@ -497,7 +502,7 @@ class Renderer {
|
|
|
497
502
|
* The active cube face.
|
|
498
503
|
*
|
|
499
504
|
* @private
|
|
500
|
-
* @type {
|
|
505
|
+
* @type {number}
|
|
501
506
|
* @default 0
|
|
502
507
|
*/
|
|
503
508
|
this._activeCubeFace = 0;
|
|
@@ -506,16 +511,25 @@ class Renderer {
|
|
|
506
511
|
* The active mipmap level.
|
|
507
512
|
*
|
|
508
513
|
* @private
|
|
509
|
-
* @type {
|
|
514
|
+
* @type {number}
|
|
510
515
|
* @default 0
|
|
511
516
|
*/
|
|
512
517
|
this._activeMipmapLevel = 0;
|
|
513
518
|
|
|
519
|
+
/**
|
|
520
|
+
* The current output render target.
|
|
521
|
+
*
|
|
522
|
+
* @private
|
|
523
|
+
* @type {?RenderTarget}
|
|
524
|
+
* @default null
|
|
525
|
+
*/
|
|
526
|
+
this._outputRenderTarget = null;
|
|
527
|
+
|
|
514
528
|
/**
|
|
515
529
|
* The MRT setting.
|
|
516
530
|
*
|
|
517
531
|
* @private
|
|
518
|
-
* @type {MRTNode
|
|
532
|
+
* @type {?MRTNode}
|
|
519
533
|
* @default null
|
|
520
534
|
*/
|
|
521
535
|
this._mrt = null;
|
|
@@ -525,7 +539,7 @@ class Renderer {
|
|
|
525
539
|
* to be rendered.
|
|
526
540
|
*
|
|
527
541
|
* @private
|
|
528
|
-
* @type {Function
|
|
542
|
+
* @type {?Function}
|
|
529
543
|
* @default null
|
|
530
544
|
*/
|
|
531
545
|
this._renderObjectFunction = null;
|
|
@@ -534,7 +548,7 @@ class Renderer {
|
|
|
534
548
|
* Used to keep track of the current render object function.
|
|
535
549
|
*
|
|
536
550
|
* @private
|
|
537
|
-
* @type {Function
|
|
551
|
+
* @type {?Function}
|
|
538
552
|
* @default null
|
|
539
553
|
*/
|
|
540
554
|
this._currentRenderObjectFunction = null;
|
|
@@ -543,7 +557,7 @@ class Renderer {
|
|
|
543
557
|
* Used to keep track of the current render bundle.
|
|
544
558
|
*
|
|
545
559
|
* @private
|
|
546
|
-
* @type {RenderBundle
|
|
560
|
+
* @type {?RenderBundle}
|
|
547
561
|
* @default null
|
|
548
562
|
*/
|
|
549
563
|
this._currentRenderBundle = null;
|
|
@@ -557,7 +571,7 @@ class Renderer {
|
|
|
557
571
|
* and pipeline updates.
|
|
558
572
|
*
|
|
559
573
|
* @private
|
|
560
|
-
* @type {Function
|
|
574
|
+
* @type {?Function}
|
|
561
575
|
* @default null
|
|
562
576
|
*/
|
|
563
577
|
this._handleObjectFunction = this._renderObjectDirect;
|
|
@@ -568,7 +582,7 @@ class Renderer {
|
|
|
568
582
|
* isn't possible anymore.
|
|
569
583
|
*
|
|
570
584
|
* @private
|
|
571
|
-
* @type {
|
|
585
|
+
* @type {boolean}
|
|
572
586
|
* @default false
|
|
573
587
|
*/
|
|
574
588
|
this._isDeviceLost = false;
|
|
@@ -586,7 +600,7 @@ class Renderer {
|
|
|
586
600
|
* This will reduce rendering quality though.
|
|
587
601
|
*
|
|
588
602
|
* @private
|
|
589
|
-
* @type {
|
|
603
|
+
* @type {number}
|
|
590
604
|
* @default HalfFloatType
|
|
591
605
|
*/
|
|
592
606
|
this._colorBufferType = colorBufferType;
|
|
@@ -595,7 +609,7 @@ class Renderer {
|
|
|
595
609
|
* Whether the renderer has been initialized or not.
|
|
596
610
|
*
|
|
597
611
|
* @private
|
|
598
|
-
* @type {
|
|
612
|
+
* @type {boolean}
|
|
599
613
|
* @default false
|
|
600
614
|
*/
|
|
601
615
|
this._initialized = false;
|
|
@@ -604,7 +618,7 @@ class Renderer {
|
|
|
604
618
|
* A reference to the promise which initializes the renderer.
|
|
605
619
|
*
|
|
606
620
|
* @private
|
|
607
|
-
* @type {Promise
|
|
621
|
+
* @type {?Promise<this>}
|
|
608
622
|
* @default null
|
|
609
623
|
*/
|
|
610
624
|
this._initPromise = null;
|
|
@@ -613,7 +627,7 @@ class Renderer {
|
|
|
613
627
|
* An array of compilation promises which are used in `compileAsync()`.
|
|
614
628
|
*
|
|
615
629
|
* @private
|
|
616
|
-
* @type {Array<Promise
|
|
630
|
+
* @type {?Array<Promise>}
|
|
617
631
|
* @default null
|
|
618
632
|
*/
|
|
619
633
|
this._compilationPromises = null;
|
|
@@ -621,7 +635,7 @@ class Renderer {
|
|
|
621
635
|
/**
|
|
622
636
|
* Whether the renderer should render transparent render objects or not.
|
|
623
637
|
*
|
|
624
|
-
* @type {
|
|
638
|
+
* @type {boolean}
|
|
625
639
|
* @default true
|
|
626
640
|
*/
|
|
627
641
|
this.transparent = true;
|
|
@@ -629,7 +643,7 @@ class Renderer {
|
|
|
629
643
|
/**
|
|
630
644
|
* Whether the renderer should render opaque render objects or not.
|
|
631
645
|
*
|
|
632
|
-
* @type {
|
|
646
|
+
* @type {boolean}
|
|
633
647
|
* @default true
|
|
634
648
|
*/
|
|
635
649
|
this.opaque = true;
|
|
@@ -637,14 +651,14 @@ class Renderer {
|
|
|
637
651
|
/**
|
|
638
652
|
* Shadow map configuration
|
|
639
653
|
* @typedef {Object} ShadowMapConfig
|
|
640
|
-
* @property {
|
|
641
|
-
* @property {
|
|
654
|
+
* @property {boolean} enabled - Whether to globally enable shadows or not.
|
|
655
|
+
* @property {number} type - The shadow map type.
|
|
642
656
|
*/
|
|
643
657
|
|
|
644
658
|
/**
|
|
645
659
|
* The renderer's shadow configuration.
|
|
646
660
|
*
|
|
647
|
-
* @type {
|
|
661
|
+
* @type {ShadowMapConfig}
|
|
648
662
|
*/
|
|
649
663
|
this.shadowMap = {
|
|
650
664
|
enabled: false,
|
|
@@ -654,7 +668,7 @@ class Renderer {
|
|
|
654
668
|
/**
|
|
655
669
|
* XR configuration.
|
|
656
670
|
* @typedef {Object} XRConfig
|
|
657
|
-
* @property {
|
|
671
|
+
* @property {boolean} enabled - Whether to globally enable XR or not.
|
|
658
672
|
*/
|
|
659
673
|
|
|
660
674
|
/**
|
|
@@ -667,15 +681,15 @@ class Renderer {
|
|
|
667
681
|
/**
|
|
668
682
|
* Debug configuration.
|
|
669
683
|
* @typedef {Object} DebugConfig
|
|
670
|
-
* @property {
|
|
671
|
-
* @property {Function} onShaderError - A callback function that is executed when a shader error happens. Only supported with WebGL 2 right now.
|
|
684
|
+
* @property {boolean} checkShaderErrors - Whether shader errors should be checked or not.
|
|
685
|
+
* @property {?Function} onShaderError - A callback function that is executed when a shader error happens. Only supported with WebGL 2 right now.
|
|
672
686
|
* @property {Function} getShaderAsync - Allows the get the raw shader code for the given scene, camera and 3D object.
|
|
673
687
|
*/
|
|
674
688
|
|
|
675
689
|
/**
|
|
676
690
|
* The renderer's debug configuration.
|
|
677
691
|
*
|
|
678
|
-
* @type {
|
|
692
|
+
* @type {DebugConfig}
|
|
679
693
|
*/
|
|
680
694
|
this.debug = {
|
|
681
695
|
checkShaderErrors: true,
|
|
@@ -704,7 +718,7 @@ class Renderer {
|
|
|
704
718
|
* Initializes the renderer so it is ready for usage.
|
|
705
719
|
*
|
|
706
720
|
* @async
|
|
707
|
-
* @return {Promise} A Promise that resolves when the renderer has been initialized.
|
|
721
|
+
* @return {Promise<this>} A Promise that resolves when the renderer has been initialized.
|
|
708
722
|
*/
|
|
709
723
|
async init() {
|
|
710
724
|
|
|
@@ -773,7 +787,7 @@ class Renderer {
|
|
|
773
787
|
this._animation.start();
|
|
774
788
|
this._initialized = true;
|
|
775
789
|
|
|
776
|
-
resolve();
|
|
790
|
+
resolve( this );
|
|
777
791
|
|
|
778
792
|
} );
|
|
779
793
|
|
|
@@ -787,7 +801,7 @@ class Renderer {
|
|
|
787
801
|
* `THREE.WebGPUCoordinateSystem`.
|
|
788
802
|
*
|
|
789
803
|
* @readonly
|
|
790
|
-
* @type {
|
|
804
|
+
* @type {number}
|
|
791
805
|
*/
|
|
792
806
|
get coordinateSystem() {
|
|
793
807
|
|
|
@@ -807,8 +821,8 @@ class Renderer {
|
|
|
807
821
|
* @async
|
|
808
822
|
* @param {Object3D} scene - The scene or 3D object to precompile.
|
|
809
823
|
* @param {Camera} camera - The camera that is used to render the scene.
|
|
810
|
-
* @param {Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.
|
|
811
|
-
* @return {Promise<Array>} A Promise that resolves when the compile has been finished.
|
|
824
|
+
* @param {?Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.
|
|
825
|
+
* @return {Promise<Array|undefined>} A Promise that resolves when the compile has been finished.
|
|
812
826
|
*/
|
|
813
827
|
async compileAsync( scene, camera, targetScene = null ) {
|
|
814
828
|
|
|
@@ -991,7 +1005,7 @@ class Renderer {
|
|
|
991
1005
|
/**
|
|
992
1006
|
* Returns the color buffer type.
|
|
993
1007
|
*
|
|
994
|
-
* @return {
|
|
1008
|
+
* @return {number} The color buffer type.
|
|
995
1009
|
*/
|
|
996
1010
|
getColorBufferType() {
|
|
997
1011
|
|
|
@@ -1027,7 +1041,7 @@ class Renderer {
|
|
|
1027
1041
|
* @private
|
|
1028
1042
|
* @param {Object} bundle - Render bundle data.
|
|
1029
1043
|
* @param {Scene} sceneRef - The scene the render bundle belongs to.
|
|
1030
|
-
* @param {LightsNode} lightsNode - The
|
|
1044
|
+
* @param {LightsNode} lightsNode - The lights node.
|
|
1031
1045
|
*/
|
|
1032
1046
|
_renderBundle( bundle, sceneRef, lightsNode ) {
|
|
1033
1047
|
|
|
@@ -1061,9 +1075,14 @@ class Renderer {
|
|
|
1061
1075
|
|
|
1062
1076
|
this._currentRenderBundle = renderBundle;
|
|
1063
1077
|
|
|
1064
|
-
const
|
|
1078
|
+
const {
|
|
1079
|
+
transparentDoublePass: transparentDoublePassObjects,
|
|
1080
|
+
transparent: transparentObjects,
|
|
1081
|
+
opaque: opaqueObjects
|
|
1082
|
+
} = renderList;
|
|
1065
1083
|
|
|
1066
1084
|
if ( this.opaque === true && opaqueObjects.length > 0 ) this._renderObjects( opaqueObjects, camera, sceneRef, lightsNode );
|
|
1085
|
+
if ( this.transparent === true && transparentObjects.length > 0 ) this._renderTransparents( transparentObjects, transparentDoublePassObjects, camera, sceneRef, lightsNode );
|
|
1067
1086
|
|
|
1068
1087
|
this._currentRenderBundle = null;
|
|
1069
1088
|
|
|
@@ -1109,7 +1128,7 @@ class Renderer {
|
|
|
1109
1128
|
*
|
|
1110
1129
|
* @param {Object3D} scene - The scene or 3D object to render.
|
|
1111
1130
|
* @param {Camera} camera - The camera to render the scene with.
|
|
1112
|
-
* @return {Promise
|
|
1131
|
+
* @return {?Promise} A Promise that resolve when the scene has been rendered.
|
|
1113
1132
|
* Only returned when the renderer has not been initialized.
|
|
1114
1133
|
*/
|
|
1115
1134
|
render( scene, camera ) {
|
|
@@ -1132,7 +1151,7 @@ class Renderer {
|
|
|
1132
1151
|
* pass and not inline to achieve more correct results.
|
|
1133
1152
|
*
|
|
1134
1153
|
* @private
|
|
1135
|
-
* @return {RenderTarget
|
|
1154
|
+
* @return {?RenderTarget} The render target. The method returns `null` if no output conversion should be applied.
|
|
1136
1155
|
*/
|
|
1137
1156
|
_getFrameBufferTarget() {
|
|
1138
1157
|
|
|
@@ -1187,7 +1206,7 @@ class Renderer {
|
|
|
1187
1206
|
* @private
|
|
1188
1207
|
* @param {Object3D} scene - The scene or 3D object to render.
|
|
1189
1208
|
* @param {Camera} camera - The camera to render the scene with.
|
|
1190
|
-
* @param {
|
|
1209
|
+
* @param {boolean} [useFrameBufferTarget=true] - Whether to use a framebuffer target or not.
|
|
1191
1210
|
* @return {RenderContext} The current render context.
|
|
1192
1211
|
*/
|
|
1193
1212
|
_renderScene( scene, camera, useFrameBufferTarget = true ) {
|
|
@@ -1208,7 +1227,7 @@ class Renderer {
|
|
|
1208
1227
|
|
|
1209
1228
|
const sceneRef = ( scene.isScene === true ) ? scene : _scene;
|
|
1210
1229
|
|
|
1211
|
-
const outputRenderTarget = this._renderTarget;
|
|
1230
|
+
const outputRenderTarget = this._renderTarget || this._outputRenderTarget;
|
|
1212
1231
|
|
|
1213
1232
|
const activeCubeFace = this._activeCubeFace;
|
|
1214
1233
|
const activeMipmapLevel = this._activeMipmapLevel;
|
|
@@ -1410,16 +1429,7 @@ class Renderer {
|
|
|
1410
1429
|
|
|
1411
1430
|
this.setRenderTarget( outputRenderTarget, activeCubeFace, activeMipmapLevel );
|
|
1412
1431
|
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
|
|
1416
|
-
|
|
1417
|
-
quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
|
|
1418
|
-
quad.material.needsUpdate = true;
|
|
1419
|
-
|
|
1420
|
-
}
|
|
1421
|
-
|
|
1422
|
-
this._renderScene( quad, quad.camera, false );
|
|
1432
|
+
this._renderOutput( renderTarget );
|
|
1423
1433
|
|
|
1424
1434
|
}
|
|
1425
1435
|
|
|
@@ -1433,10 +1443,43 @@ class Renderer {
|
|
|
1433
1443
|
|
|
1434
1444
|
}
|
|
1435
1445
|
|
|
1446
|
+
/**
|
|
1447
|
+
* The output pass performs tone mapping and color space conversion.
|
|
1448
|
+
*
|
|
1449
|
+
* @private
|
|
1450
|
+
* @param {RenderTarget} renderTarget - The current render target.
|
|
1451
|
+
*/
|
|
1452
|
+
_renderOutput( renderTarget ) {
|
|
1453
|
+
|
|
1454
|
+
const quad = this._quad;
|
|
1455
|
+
|
|
1456
|
+
if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
|
|
1457
|
+
|
|
1458
|
+
quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
|
|
1459
|
+
quad.material.needsUpdate = true;
|
|
1460
|
+
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
// a clear operation clears the intermediate renderTarget texture, but should not update the screen canvas.
|
|
1464
|
+
|
|
1465
|
+
const currentAutoClear = this.autoClear;
|
|
1466
|
+
const currentXR = this.xr.enabled;
|
|
1467
|
+
|
|
1468
|
+
this.autoClear = false;
|
|
1469
|
+
this.xr.enabled = false;
|
|
1470
|
+
|
|
1471
|
+
this._renderScene( quad, quad.camera, false );
|
|
1472
|
+
|
|
1473
|
+
this.autoClear = currentAutoClear;
|
|
1474
|
+
this.xr.enabled = currentXR;
|
|
1475
|
+
|
|
1476
|
+
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1436
1479
|
/**
|
|
1437
1480
|
* Returns the maximum available anisotropy for texture filtering.
|
|
1438
1481
|
*
|
|
1439
|
-
* @return {
|
|
1482
|
+
* @return {number} The maximum available anisotropy.
|
|
1440
1483
|
*/
|
|
1441
1484
|
getMaxAnisotropy() {
|
|
1442
1485
|
|
|
@@ -1447,7 +1490,7 @@ class Renderer {
|
|
|
1447
1490
|
/**
|
|
1448
1491
|
* Returns the active cube face.
|
|
1449
1492
|
*
|
|
1450
|
-
* @return {
|
|
1493
|
+
* @return {number} The active cube face.
|
|
1451
1494
|
*/
|
|
1452
1495
|
getActiveCubeFace() {
|
|
1453
1496
|
|
|
@@ -1458,7 +1501,7 @@ class Renderer {
|
|
|
1458
1501
|
/**
|
|
1459
1502
|
* Returns the active mipmap level.
|
|
1460
1503
|
*
|
|
1461
|
-
* @return {
|
|
1504
|
+
* @return {number} The active mipmap level.
|
|
1462
1505
|
*/
|
|
1463
1506
|
getActiveMipmapLevel() {
|
|
1464
1507
|
|
|
@@ -1472,7 +1515,7 @@ class Renderer {
|
|
|
1472
1515
|
* for best compatibility.
|
|
1473
1516
|
*
|
|
1474
1517
|
* @async
|
|
1475
|
-
* @param {Function} callback - The application's animation loop.
|
|
1518
|
+
* @param {?Function} callback - The application's animation loop.
|
|
1476
1519
|
* @return {Promise} A Promise that resolves when the set has been executed.
|
|
1477
1520
|
*/
|
|
1478
1521
|
async setAnimationLoop( callback ) {
|
|
@@ -1511,7 +1554,7 @@ class Renderer {
|
|
|
1511
1554
|
/**
|
|
1512
1555
|
* Returns the pixel ratio.
|
|
1513
1556
|
*
|
|
1514
|
-
* @return {
|
|
1557
|
+
* @return {number} The pixel ratio.
|
|
1515
1558
|
*/
|
|
1516
1559
|
getPixelRatio() {
|
|
1517
1560
|
|
|
@@ -1535,7 +1578,7 @@ class Renderer {
|
|
|
1535
1578
|
* Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
|
|
1536
1579
|
*
|
|
1537
1580
|
* @param {Vector2} target - The method writes the result in this target object.
|
|
1538
|
-
* @return {Vector2} The
|
|
1581
|
+
* @return {Vector2} The renderer's size in logical pixels.
|
|
1539
1582
|
*/
|
|
1540
1583
|
getSize( target ) {
|
|
1541
1584
|
|
|
@@ -1544,9 +1587,9 @@ class Renderer {
|
|
|
1544
1587
|
}
|
|
1545
1588
|
|
|
1546
1589
|
/**
|
|
1547
|
-
* Sets the given pixel
|
|
1590
|
+
* Sets the given pixel ratio and resizes the canvas if necessary.
|
|
1548
1591
|
*
|
|
1549
|
-
* @param {
|
|
1592
|
+
* @param {number} [value=1] - The pixel ratio.
|
|
1550
1593
|
*/
|
|
1551
1594
|
setPixelRatio( value = 1 ) {
|
|
1552
1595
|
|
|
@@ -1562,17 +1605,20 @@ class Renderer {
|
|
|
1562
1605
|
* This method allows to define the drawing buffer size by specifying
|
|
1563
1606
|
* width, height and pixel ratio all at once. The size of the drawing
|
|
1564
1607
|
* buffer is computed with this formula:
|
|
1565
|
-
*
|
|
1608
|
+
* ```js
|
|
1566
1609
|
* size.x = width * pixelRatio;
|
|
1567
1610
|
* size.y = height * pixelRatio;
|
|
1568
|
-
|
|
1611
|
+
* ```
|
|
1569
1612
|
*
|
|
1570
|
-
* @param {
|
|
1571
|
-
* @param {
|
|
1572
|
-
* @param {
|
|
1613
|
+
* @param {number} width - The width in logical pixels.
|
|
1614
|
+
* @param {number} height - The height in logical pixels.
|
|
1615
|
+
* @param {number} pixelRatio - The pixel ratio.
|
|
1573
1616
|
*/
|
|
1574
1617
|
setDrawingBufferSize( width, height, pixelRatio ) {
|
|
1575
1618
|
|
|
1619
|
+
// Renderer can't be resized while presenting in XR.
|
|
1620
|
+
if ( this.xr && this.xr.isPresenting ) return;
|
|
1621
|
+
|
|
1576
1622
|
this._width = width;
|
|
1577
1623
|
this._height = height;
|
|
1578
1624
|
|
|
@@ -1590,12 +1636,15 @@ class Renderer {
|
|
|
1590
1636
|
/**
|
|
1591
1637
|
* Sets the size of the renderer.
|
|
1592
1638
|
*
|
|
1593
|
-
* @param {
|
|
1594
|
-
* @param {
|
|
1595
|
-
* @param {
|
|
1639
|
+
* @param {number} width - The width in logical pixels.
|
|
1640
|
+
* @param {number} height - The height in logical pixels.
|
|
1641
|
+
* @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
|
|
1596
1642
|
*/
|
|
1597
1643
|
setSize( width, height, updateStyle = true ) {
|
|
1598
1644
|
|
|
1645
|
+
// Renderer can't be resized while presenting in XR.
|
|
1646
|
+
if ( this.xr && this.xr.isPresenting ) return;
|
|
1647
|
+
|
|
1599
1648
|
this._width = width;
|
|
1600
1649
|
this._height = height;
|
|
1601
1650
|
|
|
@@ -1661,11 +1710,11 @@ class Renderer {
|
|
|
1661
1710
|
/**
|
|
1662
1711
|
* Defines the scissor rectangle.
|
|
1663
1712
|
*
|
|
1664
|
-
* @param {
|
|
1713
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the box in logical pixel unit.
|
|
1665
1714
|
* Instead of passing four arguments, the method also works with a single four-dimensional vector.
|
|
1666
|
-
* @param {
|
|
1667
|
-
* @param {
|
|
1668
|
-
* @param {
|
|
1715
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the box in logical pixel unit.
|
|
1716
|
+
* @param {number} width - The width of the scissor box in logical pixel unit.
|
|
1717
|
+
* @param {number} height - The height of the scissor box in logical pixel unit.
|
|
1669
1718
|
*/
|
|
1670
1719
|
setScissor( x, y, width, height ) {
|
|
1671
1720
|
|
|
@@ -1686,7 +1735,7 @@ class Renderer {
|
|
|
1686
1735
|
/**
|
|
1687
1736
|
* Returns the scissor test value.
|
|
1688
1737
|
*
|
|
1689
|
-
* @return {
|
|
1738
|
+
* @return {boolean} Whether the scissor test should be enabled or not.
|
|
1690
1739
|
*/
|
|
1691
1740
|
getScissorTest() {
|
|
1692
1741
|
|
|
@@ -1697,7 +1746,7 @@ class Renderer {
|
|
|
1697
1746
|
/**
|
|
1698
1747
|
* Defines the scissor test.
|
|
1699
1748
|
*
|
|
1700
|
-
* @param {
|
|
1749
|
+
* @param {boolean} boolean - Whether the scissor test should be enabled or not.
|
|
1701
1750
|
*/
|
|
1702
1751
|
setScissorTest( boolean ) {
|
|
1703
1752
|
|
|
@@ -1722,12 +1771,12 @@ class Renderer {
|
|
|
1722
1771
|
/**
|
|
1723
1772
|
* Defines the viewport.
|
|
1724
1773
|
*
|
|
1725
|
-
* @param {
|
|
1726
|
-
* @param {
|
|
1727
|
-
* @param {
|
|
1728
|
-
* @param {
|
|
1729
|
-
* @param {
|
|
1730
|
-
* @param {
|
|
1774
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
1775
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
1776
|
+
* @param {number} width - The width of the viewport in logical pixel unit.
|
|
1777
|
+
* @param {number} height - The height of the viewport in logical pixel unit.
|
|
1778
|
+
* @param {number} minDepth - The minimum depth value of the viewport. WebGPU only.
|
|
1779
|
+
* @param {number} maxDepth - The maximum depth value of the viewport. WebGPU only.
|
|
1731
1780
|
*/
|
|
1732
1781
|
setViewport( x, y, width, height, minDepth = 0, maxDepth = 1 ) {
|
|
1733
1782
|
|
|
@@ -1764,7 +1813,7 @@ class Renderer {
|
|
|
1764
1813
|
* Defines the clear color and optionally the clear alpha.
|
|
1765
1814
|
*
|
|
1766
1815
|
* @param {Color} color - The clear color.
|
|
1767
|
-
* @param {
|
|
1816
|
+
* @param {number} [alpha=1] - The clear alpha.
|
|
1768
1817
|
*/
|
|
1769
1818
|
setClearColor( color, alpha = 1 ) {
|
|
1770
1819
|
|
|
@@ -1776,7 +1825,7 @@ class Renderer {
|
|
|
1776
1825
|
/**
|
|
1777
1826
|
* Returns the clear alpha.
|
|
1778
1827
|
*
|
|
1779
|
-
* @return {
|
|
1828
|
+
* @return {number} The clear alpha.
|
|
1780
1829
|
*/
|
|
1781
1830
|
getClearAlpha() {
|
|
1782
1831
|
|
|
@@ -1787,7 +1836,7 @@ class Renderer {
|
|
|
1787
1836
|
/**
|
|
1788
1837
|
* Defines the clear alpha.
|
|
1789
1838
|
*
|
|
1790
|
-
* @param {
|
|
1839
|
+
* @param {number} alpha - The clear alpha.
|
|
1791
1840
|
*/
|
|
1792
1841
|
setClearAlpha( alpha ) {
|
|
1793
1842
|
|
|
@@ -1798,7 +1847,7 @@ class Renderer {
|
|
|
1798
1847
|
/**
|
|
1799
1848
|
* Returns the clear depth.
|
|
1800
1849
|
*
|
|
1801
|
-
* @return {
|
|
1850
|
+
* @return {number} The clear depth.
|
|
1802
1851
|
*/
|
|
1803
1852
|
getClearDepth() {
|
|
1804
1853
|
|
|
@@ -1809,7 +1858,7 @@ class Renderer {
|
|
|
1809
1858
|
/**
|
|
1810
1859
|
* Defines the clear depth.
|
|
1811
1860
|
*
|
|
1812
|
-
* @param {
|
|
1861
|
+
* @param {number} depth - The clear depth.
|
|
1813
1862
|
*/
|
|
1814
1863
|
setClearDepth( depth ) {
|
|
1815
1864
|
|
|
@@ -1820,7 +1869,7 @@ class Renderer {
|
|
|
1820
1869
|
/**
|
|
1821
1870
|
* Returns the clear stencil.
|
|
1822
1871
|
*
|
|
1823
|
-
* @return {
|
|
1872
|
+
* @return {number} The clear stencil.
|
|
1824
1873
|
*/
|
|
1825
1874
|
getClearStencil() {
|
|
1826
1875
|
|
|
@@ -1831,7 +1880,7 @@ class Renderer {
|
|
|
1831
1880
|
/**
|
|
1832
1881
|
* Defines the clear stencil.
|
|
1833
1882
|
*
|
|
1834
|
-
* @param {
|
|
1883
|
+
* @param {number} stencil - The clear stencil.
|
|
1835
1884
|
*/
|
|
1836
1885
|
setClearStencil( stencil ) {
|
|
1837
1886
|
|
|
@@ -1845,7 +1894,7 @@ class Renderer {
|
|
|
1845
1894
|
* 3D objects in the scene.
|
|
1846
1895
|
*
|
|
1847
1896
|
* @param {Object3D} object - The 3D object to test.
|
|
1848
|
-
* @return {
|
|
1897
|
+
* @return {boolean} Whether the 3D object is fully occluded or not.
|
|
1849
1898
|
*/
|
|
1850
1899
|
isOccluded( object ) {
|
|
1851
1900
|
|
|
@@ -1858,9 +1907,9 @@ class Renderer {
|
|
|
1858
1907
|
/**
|
|
1859
1908
|
* Performs a manual clear operation. This method ignores `autoClear` properties.
|
|
1860
1909
|
*
|
|
1861
|
-
* @param {
|
|
1862
|
-
* @param {
|
|
1863
|
-
* @param {
|
|
1910
|
+
* @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
|
|
1911
|
+
* @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
|
|
1912
|
+
* @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
|
|
1864
1913
|
* @return {Promise} A Promise that resolves when the clear operation has been executed.
|
|
1865
1914
|
* Only returned when the renderer has not been initialized.
|
|
1866
1915
|
*/
|
|
@@ -1892,29 +1941,18 @@ class Renderer {
|
|
|
1892
1941
|
renderContext.renderTarget = renderTarget;
|
|
1893
1942
|
renderContext.depth = renderTarget.depthBuffer;
|
|
1894
1943
|
renderContext.stencil = renderTarget.stencilBuffer;
|
|
1944
|
+
// #30329
|
|
1945
|
+
renderContext.clearColorValue = this.backend.getClearColor();
|
|
1946
|
+
renderContext.activeCubeFace = this.getActiveCubeFace();
|
|
1947
|
+
renderContext.activeMipmapLevel = this.getActiveMipmapLevel();
|
|
1895
1948
|
|
|
1896
1949
|
}
|
|
1897
1950
|
|
|
1898
|
-
// #30329
|
|
1899
|
-
renderContext.clearColorValue = this._clearColor;
|
|
1900
|
-
|
|
1901
1951
|
this.backend.clear( color, depth, stencil, renderContext );
|
|
1902
1952
|
|
|
1903
1953
|
if ( renderTarget !== null && this._renderTarget === null ) {
|
|
1904
1954
|
|
|
1905
|
-
|
|
1906
|
-
// the clear operation clears the intermediate renderTarget texture, but does not update the screen canvas.
|
|
1907
|
-
|
|
1908
|
-
const quad = this._quad;
|
|
1909
|
-
|
|
1910
|
-
if ( this._nodes.hasOutputChange( renderTarget.texture ) ) {
|
|
1911
|
-
|
|
1912
|
-
quad.material.fragmentNode = this._nodes.getOutputNode( renderTarget.texture );
|
|
1913
|
-
quad.material.needsUpdate = true;
|
|
1914
|
-
|
|
1915
|
-
}
|
|
1916
|
-
|
|
1917
|
-
this._renderScene( quad, quad.camera, false );
|
|
1955
|
+
this._renderOutput( renderTarget );
|
|
1918
1956
|
|
|
1919
1957
|
}
|
|
1920
1958
|
|
|
@@ -1957,12 +1995,12 @@ class Renderer {
|
|
|
1957
1995
|
}
|
|
1958
1996
|
|
|
1959
1997
|
/**
|
|
1960
|
-
* Async version of {@link
|
|
1998
|
+
* Async version of {@link Renderer#clear}.
|
|
1961
1999
|
*
|
|
1962
2000
|
* @async
|
|
1963
|
-
* @param {
|
|
1964
|
-
* @param {
|
|
1965
|
-
* @param {
|
|
2001
|
+
* @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
|
|
2002
|
+
* @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
|
|
2003
|
+
* @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
|
|
1966
2004
|
* @return {Promise} A Promise that resolves when the clear operation has been executed.
|
|
1967
2005
|
*/
|
|
1968
2006
|
async clearAsync( color = true, depth = true, stencil = true ) {
|
|
@@ -1974,7 +2012,7 @@ class Renderer {
|
|
|
1974
2012
|
}
|
|
1975
2013
|
|
|
1976
2014
|
/**
|
|
1977
|
-
* Async version of {@link
|
|
2015
|
+
* Async version of {@link Renderer#clearColor}.
|
|
1978
2016
|
*
|
|
1979
2017
|
* @async
|
|
1980
2018
|
* @return {Promise} A Promise that resolves when the clear operation has been executed.
|
|
@@ -1986,7 +2024,7 @@ class Renderer {
|
|
|
1986
2024
|
}
|
|
1987
2025
|
|
|
1988
2026
|
/**
|
|
1989
|
-
* Async version of {@link
|
|
2027
|
+
* Async version of {@link Renderer#clearDepth}.
|
|
1990
2028
|
*
|
|
1991
2029
|
* @async
|
|
1992
2030
|
* @return {Promise} A Promise that resolves when the clear operation has been executed.
|
|
@@ -1998,7 +2036,7 @@ class Renderer {
|
|
|
1998
2036
|
}
|
|
1999
2037
|
|
|
2000
2038
|
/**
|
|
2001
|
-
* Async version of {@link
|
|
2039
|
+
* Async version of {@link Renderer#clearStencil}.
|
|
2002
2040
|
*
|
|
2003
2041
|
* @async
|
|
2004
2042
|
* @return {Promise} A Promise that resolves when the clear operation has been executed.
|
|
@@ -2013,11 +2051,11 @@ class Renderer {
|
|
|
2013
2051
|
* The current output tone mapping of the renderer. When a render target is set,
|
|
2014
2052
|
* the output tone mapping is always `NoToneMapping`.
|
|
2015
2053
|
*
|
|
2016
|
-
* @type {
|
|
2054
|
+
* @type {number}
|
|
2017
2055
|
*/
|
|
2018
2056
|
get currentToneMapping() {
|
|
2019
2057
|
|
|
2020
|
-
return this.
|
|
2058
|
+
return this.isOutputTarget ? this.toneMapping : NoToneMapping;
|
|
2021
2059
|
|
|
2022
2060
|
}
|
|
2023
2061
|
|
|
@@ -2025,11 +2063,22 @@ class Renderer {
|
|
|
2025
2063
|
* The current output color space of the renderer. When a render target is set,
|
|
2026
2064
|
* the output color space is always `LinearSRGBColorSpace`.
|
|
2027
2065
|
*
|
|
2028
|
-
* @type {
|
|
2066
|
+
* @type {string}
|
|
2029
2067
|
*/
|
|
2030
2068
|
get currentColorSpace() {
|
|
2031
2069
|
|
|
2032
|
-
return this.
|
|
2070
|
+
return this.isOutputTarget ? this.outputColorSpace : LinearSRGBColorSpace;
|
|
2071
|
+
|
|
2072
|
+
}
|
|
2073
|
+
|
|
2074
|
+
/**
|
|
2075
|
+
* Returns `true` if the rendering settings are set to screen output.
|
|
2076
|
+
*
|
|
2077
|
+
* @returns {boolean} True if the current render target is the same of output render target or `null`, otherwise false.
|
|
2078
|
+
*/
|
|
2079
|
+
get isOutputTarget() {
|
|
2080
|
+
|
|
2081
|
+
return this._renderTarget === this._outputRenderTarget || this._renderTarget === null;
|
|
2033
2082
|
|
|
2034
2083
|
}
|
|
2035
2084
|
|
|
@@ -2069,9 +2118,9 @@ class Renderer {
|
|
|
2069
2118
|
* target the default framebuffer (meaning the canvas) anymore but a custom framebuffer.
|
|
2070
2119
|
* Use `null` as the first argument to reset the state.
|
|
2071
2120
|
*
|
|
2072
|
-
* @param {RenderTarget
|
|
2073
|
-
* @param {
|
|
2074
|
-
* @param {
|
|
2121
|
+
* @param {?RenderTarget} renderTarget - The render target to set.
|
|
2122
|
+
* @param {number} [activeCubeFace=0] - The active cube face.
|
|
2123
|
+
* @param {number} [activeMipmapLevel=0] - The active mipmap level.
|
|
2075
2124
|
*/
|
|
2076
2125
|
setRenderTarget( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
2077
2126
|
|
|
@@ -2084,7 +2133,7 @@ class Renderer {
|
|
|
2084
2133
|
/**
|
|
2085
2134
|
* Returns the current render target.
|
|
2086
2135
|
*
|
|
2087
|
-
* @return {RenderTarget
|
|
2136
|
+
* @return {?RenderTarget} The render target. Returns `null` if no render target is set.
|
|
2088
2137
|
*/
|
|
2089
2138
|
getRenderTarget() {
|
|
2090
2139
|
|
|
@@ -2093,7 +2142,29 @@ class Renderer {
|
|
|
2093
2142
|
}
|
|
2094
2143
|
|
|
2095
2144
|
/**
|
|
2096
|
-
*
|
|
2145
|
+
* Sets the output render target for the renderer.
|
|
2146
|
+
*
|
|
2147
|
+
* @param {Object} renderTarget - The render target to set as the output target.
|
|
2148
|
+
*/
|
|
2149
|
+
setOutputRenderTarget( renderTarget ) {
|
|
2150
|
+
|
|
2151
|
+
this._outputRenderTarget = renderTarget;
|
|
2152
|
+
|
|
2153
|
+
}
|
|
2154
|
+
|
|
2155
|
+
/**
|
|
2156
|
+
* Returns the current output target.
|
|
2157
|
+
*
|
|
2158
|
+
* @return {?RenderTarget} The current output render target. Returns `null` if no output target is set.
|
|
2159
|
+
*/
|
|
2160
|
+
getOutputRenderTarget() {
|
|
2161
|
+
|
|
2162
|
+
return this._outputRenderTarget;
|
|
2163
|
+
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
/**
|
|
2167
|
+
* Callback for {@link Renderer#setRenderObjectFunction}.
|
|
2097
2168
|
*
|
|
2098
2169
|
* @callback renderObjectFunction
|
|
2099
2170
|
* @param {Object3D} object - The 3D object.
|
|
@@ -2101,22 +2172,22 @@ class Renderer {
|
|
|
2101
2172
|
* @param {Camera} camera - The camera the object should be rendered with.
|
|
2102
2173
|
* @param {BufferGeometry} geometry - The object's geometry.
|
|
2103
2174
|
* @param {Material} material - The object's material.
|
|
2104
|
-
* @param {Object
|
|
2175
|
+
* @param {?Object} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
|
|
2105
2176
|
* @param {LightsNode} lightsNode - The current lights node.
|
|
2106
2177
|
* @param {ClippingContext} clippingContext - The clipping context.
|
|
2107
|
-
* @param {
|
|
2178
|
+
* @param {?string} [passId=null] - An optional ID for identifying the pass.
|
|
2108
2179
|
*/
|
|
2109
2180
|
|
|
2110
2181
|
/**
|
|
2111
2182
|
* Sets the given render object function. Calling this method overwrites the default implementation
|
|
2112
|
-
* which is {@link
|
|
2183
|
+
* which is {@link Renderer#renderObject}. Defining a custom function can be useful
|
|
2113
2184
|
* if you want to modify the way objects are rendered. For example you can define things like "every
|
|
2114
2185
|
* object that has material of a certain type should perform a pre-pass with a special overwrite material".
|
|
2115
2186
|
* The custom function must always call `renderObject()` in its implementation.
|
|
2116
2187
|
*
|
|
2117
2188
|
* Use `null` as the first argument to reset the state.
|
|
2118
2189
|
*
|
|
2119
|
-
* @param {
|
|
2190
|
+
* @param {?renderObjectFunction} renderObjectFunction - The render object function.
|
|
2120
2191
|
*/
|
|
2121
2192
|
setRenderObjectFunction( renderObjectFunction ) {
|
|
2122
2193
|
|
|
@@ -2127,7 +2198,7 @@ class Renderer {
|
|
|
2127
2198
|
/**
|
|
2128
2199
|
* Returns the current render object function.
|
|
2129
2200
|
*
|
|
2130
|
-
* @return {Function
|
|
2201
|
+
* @return {?Function} The current render object function. Returns `null` if no function is set.
|
|
2131
2202
|
*/
|
|
2132
2203
|
getRenderObjectFunction() {
|
|
2133
2204
|
|
|
@@ -2140,7 +2211,7 @@ class Renderer {
|
|
|
2140
2211
|
* if the renderer has been initialized.
|
|
2141
2212
|
*
|
|
2142
2213
|
* @param {Node|Array<Node>} computeNodes - The compute node(s).
|
|
2143
|
-
* @return {Promise
|
|
2214
|
+
* @return {Promise|undefined} A Promise that resolve when the compute has finished. Only returned when the renderer has not been initialized.
|
|
2144
2215
|
*/
|
|
2145
2216
|
compute( computeNodes ) {
|
|
2146
2217
|
|
|
@@ -2252,8 +2323,8 @@ class Renderer {
|
|
|
2252
2323
|
* Checks if the given feature is supported by the selected backend.
|
|
2253
2324
|
*
|
|
2254
2325
|
* @async
|
|
2255
|
-
* @param {
|
|
2256
|
-
* @return {Promise<
|
|
2326
|
+
* @param {string} name - The feature's name.
|
|
2327
|
+
* @return {Promise<boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.
|
|
2257
2328
|
*/
|
|
2258
2329
|
async hasFeatureAsync( name ) {
|
|
2259
2330
|
|
|
@@ -2275,8 +2346,8 @@ class Renderer {
|
|
|
2275
2346
|
* Checks if the given feature is supported by the selected backend. If the
|
|
2276
2347
|
* renderer has not been initialized, this method always returns `false`.
|
|
2277
2348
|
*
|
|
2278
|
-
* @param {
|
|
2279
|
-
* @return {
|
|
2349
|
+
* @param {string} name - The feature's name.
|
|
2350
|
+
* @return {boolean} Whether the feature is supported or not.
|
|
2280
2351
|
*/
|
|
2281
2352
|
hasFeature( name ) {
|
|
2282
2353
|
|
|
@@ -2295,7 +2366,7 @@ class Renderer {
|
|
|
2295
2366
|
/**
|
|
2296
2367
|
* Returns `true` when the renderer has been initialized.
|
|
2297
2368
|
*
|
|
2298
|
-
* @return {
|
|
2369
|
+
* @return {boolean} Whether the renderer has been initialized or not.
|
|
2299
2370
|
*/
|
|
2300
2371
|
hasInitialized() {
|
|
2301
2372
|
|
|
@@ -2320,7 +2391,7 @@ class Renderer {
|
|
|
2320
2391
|
}
|
|
2321
2392
|
|
|
2322
2393
|
/**
|
|
2323
|
-
* Initializes the given
|
|
2394
|
+
* Initializes the given texture. Useful for preloading a texture rather than waiting until first render
|
|
2324
2395
|
* (which can cause noticeable lags due to decode and GPU upload overhead).
|
|
2325
2396
|
*
|
|
2326
2397
|
* This method can only be used if the renderer has been initialized.
|
|
@@ -2343,7 +2414,7 @@ class Renderer {
|
|
|
2343
2414
|
* Copies the current bound framebuffer into the given texture.
|
|
2344
2415
|
*
|
|
2345
2416
|
* @param {FramebufferTexture} framebufferTexture - The texture.
|
|
2346
|
-
* @param {Vector2|Vector4} rectangle - A two or four dimensional vector that defines the rectangular portion of the framebuffer that should be copied.
|
|
2417
|
+
* @param {?Vector2|Vector4} [rectangle=null] - A two or four dimensional vector that defines the rectangular portion of the framebuffer that should be copied.
|
|
2347
2418
|
*/
|
|
2348
2419
|
copyFramebufferToTexture( framebufferTexture, rectangle = null ) {
|
|
2349
2420
|
|
|
@@ -2403,20 +2474,21 @@ class Renderer {
|
|
|
2403
2474
|
}
|
|
2404
2475
|
|
|
2405
2476
|
/**
|
|
2406
|
-
* Copies data of source texture into a destination texture.
|
|
2477
|
+
* Copies data of the given source texture into a destination texture.
|
|
2407
2478
|
*
|
|
2408
2479
|
* @param {Texture} srcTexture - The source texture.
|
|
2409
2480
|
* @param {Texture} dstTexture - The destination texture.
|
|
2410
2481
|
* @param {Box2|Box3} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.
|
|
2411
2482
|
* @param {Vector2|Vector3} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.
|
|
2412
|
-
* @param {
|
|
2483
|
+
* @param {number} [srcLevel=0] - The source mip level to copy from.
|
|
2484
|
+
* @param {number} [dstLevel=0] - The destination mip level to copy to.
|
|
2413
2485
|
*/
|
|
2414
|
-
copyTextureToTexture( srcTexture, dstTexture, srcRegion = null, dstPosition = null,
|
|
2486
|
+
copyTextureToTexture( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = 0 ) {
|
|
2415
2487
|
|
|
2416
2488
|
this._textures.updateTexture( srcTexture );
|
|
2417
2489
|
this._textures.updateTexture( dstTexture );
|
|
2418
2490
|
|
|
2419
|
-
this.backend.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition,
|
|
2491
|
+
this.backend.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, srcLevel, dstLevel );
|
|
2420
2492
|
|
|
2421
2493
|
}
|
|
2422
2494
|
|
|
@@ -2425,12 +2497,12 @@ class Renderer {
|
|
|
2425
2497
|
*
|
|
2426
2498
|
* @async
|
|
2427
2499
|
* @param {RenderTarget} renderTarget - The render target to read from.
|
|
2428
|
-
* @param {
|
|
2429
|
-
* @param {
|
|
2430
|
-
* @param {
|
|
2431
|
-
* @param {
|
|
2432
|
-
* @param {
|
|
2433
|
-
* @param {
|
|
2500
|
+
* @param {number} x - The `x` coordinate of the copy region's origin.
|
|
2501
|
+
* @param {number} y - The `y` coordinate of the copy region's origin.
|
|
2502
|
+
* @param {number} width - The width of the copy region.
|
|
2503
|
+
* @param {number} height - The height of the copy region.
|
|
2504
|
+
* @param {number} [textureIndex=0] - The texture index of a MRT render target.
|
|
2505
|
+
* @param {number} [faceIndex=0] - The active cube face index.
|
|
2434
2506
|
* @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.
|
|
2435
2507
|
*/
|
|
2436
2508
|
async readRenderTargetPixelsAsync( renderTarget, x, y, width, height, textureIndex = 0, faceIndex = 0 ) {
|
|
@@ -2445,7 +2517,7 @@ class Renderer {
|
|
|
2445
2517
|
*
|
|
2446
2518
|
* @param {Object3D} object - The 3D object to process (usually a scene).
|
|
2447
2519
|
* @param {Camera} camera - The camera the object is rendered with.
|
|
2448
|
-
* @param {
|
|
2520
|
+
* @param {number} groupOrder - The group order is derived from the `renderOrder` of groups and is used to group 3D objects within groups.
|
|
2449
2521
|
* @param {RenderList} renderList - The current render list.
|
|
2450
2522
|
* @param {ClippingContext} clippingContext - The current clipping context.
|
|
2451
2523
|
*/
|
|
@@ -2646,7 +2718,7 @@ class Renderer {
|
|
|
2646
2718
|
* @param {Camera} camera - The camera the render list should be rendered with.
|
|
2647
2719
|
* @param {Scene} scene - The scene the render list belongs to.
|
|
2648
2720
|
* @param {LightsNode} lightsNode - The current lights node.
|
|
2649
|
-
* @param {
|
|
2721
|
+
* @param {?string} [passId=null] - An optional ID for identifying the pass.
|
|
2650
2722
|
*/
|
|
2651
2723
|
_renderObjects( renderList, camera, scene, lightsNode, passId = null ) {
|
|
2652
2724
|
|
|
@@ -2669,10 +2741,10 @@ class Renderer {
|
|
|
2669
2741
|
* @param {Camera} camera - The camera the object should be rendered with.
|
|
2670
2742
|
* @param {BufferGeometry} geometry - The object's geometry.
|
|
2671
2743
|
* @param {Material} material - The object's material.
|
|
2672
|
-
* @param {Object
|
|
2744
|
+
* @param {?Object} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
|
|
2673
2745
|
* @param {LightsNode} lightsNode - The current lights node.
|
|
2674
|
-
* @param {ClippingContext} clippingContext - The clipping context.
|
|
2675
|
-
* @param {
|
|
2746
|
+
* @param {?ClippingContext} clippingContext - The clipping context.
|
|
2747
|
+
* @param {?string} [passId=null] - An optional ID for identifying the pass.
|
|
2676
2748
|
*/
|
|
2677
2749
|
renderObject( object, scene, camera, geometry, material, group, lightsNode, clippingContext = null, passId = null ) {
|
|
2678
2750
|
|
|
@@ -2686,7 +2758,7 @@ class Renderer {
|
|
|
2686
2758
|
|
|
2687
2759
|
//
|
|
2688
2760
|
|
|
2689
|
-
if ( scene.overrideMaterial !== null ) {
|
|
2761
|
+
if ( material.allowOverride === true && scene.overrideMaterial !== null ) {
|
|
2690
2762
|
|
|
2691
2763
|
const overrideMaterial = scene.overrideMaterial;
|
|
2692
2764
|
|
|
@@ -2779,9 +2851,9 @@ class Renderer {
|
|
|
2779
2851
|
* @param {Scene} scene - The scene the 3D object belongs to.
|
|
2780
2852
|
* @param {Camera} camera - The camera the object should be rendered with.
|
|
2781
2853
|
* @param {LightsNode} lightsNode - The current lights node.
|
|
2782
|
-
* @param {{start:
|
|
2854
|
+
* @param {?{start: number, count: number}} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
|
|
2783
2855
|
* @param {ClippingContext} clippingContext - The clipping context.
|
|
2784
|
-
* @param {
|
|
2856
|
+
* @param {?string} [passId=null] - An optional ID for identifying the pass.
|
|
2785
2857
|
*/
|
|
2786
2858
|
_renderObjectDirect( object, material, scene, camera, lightsNode, group, clippingContext, passId ) {
|
|
2787
2859
|
|
|
@@ -2834,9 +2906,9 @@ class Renderer {
|
|
|
2834
2906
|
* @param {Scene} scene - The scene the 3D object belongs to.
|
|
2835
2907
|
* @param {Camera} camera - The camera the object should be rendered with.
|
|
2836
2908
|
* @param {LightsNode} lightsNode - The current lights node.
|
|
2837
|
-
* @param {{start:
|
|
2909
|
+
* @param {?{start: number, count: number}} group - Only relevant for objects using multiple materials. This represents a group entry from the respective `BufferGeometry`.
|
|
2838
2910
|
* @param {ClippingContext} clippingContext - The clipping context.
|
|
2839
|
-
* @param {
|
|
2911
|
+
* @param {?string} [passId=null] - An optional ID for identifying the pass.
|
|
2840
2912
|
*/
|
|
2841
2913
|
_createObjectPipeline( object, material, scene, camera, lightsNode, group, clippingContext, passId ) {
|
|
2842
2914
|
|
|
@@ -2866,7 +2938,7 @@ class Renderer {
|
|
|
2866
2938
|
* @param {Object3D} scene - The scene or 3D object to precompile.
|
|
2867
2939
|
* @param {Camera} camera - The camera that is used to render the scene.
|
|
2868
2940
|
* @param {Scene} targetScene - If the first argument is a 3D object, this parameter must represent the scene the 3D object is going to be added.
|
|
2869
|
-
* @return {Promise} A Promise that resolves when the compile has been finished.
|
|
2941
|
+
* @return {function(Object3D, Camera, ?Scene): Promise|undefined} A Promise that resolves when the compile has been finished.
|
|
2870
2942
|
*/
|
|
2871
2943
|
get compile() {
|
|
2872
2944
|
|