@needle-tools/three 0.169.20-experimental.0 → 0.183.2-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +5 -6
- package/build/three.cjs +54184 -56703
- package/build/three.core.js +59506 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +11645 -73000
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +648 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +53912 -51652
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +53888 -51806
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +5 -15
- package/examples/jsm/animation/AnimationClipCreator.js +58 -6
- package/examples/jsm/animation/CCDIKSolver.js +152 -45
- package/examples/jsm/capabilities/WebGL.js +28 -29
- package/examples/jsm/capabilities/WebGPU.js +19 -17
- package/examples/jsm/controls/ArcballControls.js +474 -178
- package/examples/jsm/controls/DragControls.js +100 -58
- package/examples/jsm/controls/FirstPersonControls.js +116 -6
- package/examples/jsm/controls/FlyControls.js +50 -2
- package/examples/jsm/controls/MapControls.js +96 -8
- package/examples/jsm/controls/OrbitControls.js +496 -57
- package/examples/jsm/controls/PointerLockControls.js +115 -22
- package/examples/jsm/controls/TrackballControls.js +166 -14
- package/examples/jsm/controls/TransformControls.js +336 -26
- package/examples/jsm/csm/CSM.js +232 -18
- package/examples/jsm/csm/CSMFrustum.js +61 -4
- package/examples/jsm/csm/CSMHelper.js +50 -0
- package/examples/jsm/csm/CSMShader.js +13 -1
- package/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/examples/jsm/curves/CurveExtras.js +303 -31
- package/examples/jsm/curves/NURBSCurve.js +91 -16
- package/examples/jsm/curves/NURBSSurface.js +52 -6
- package/examples/jsm/curves/NURBSUtils.js +102 -112
- package/examples/jsm/curves/NURBSVolume.js +24 -4
- package/examples/jsm/effects/AnaglyphEffect.js +134 -7
- package/examples/jsm/effects/AsciiEffect.js +69 -22
- package/examples/jsm/effects/OutlineEffect.js +61 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +30 -0
- package/examples/jsm/effects/StereoEffect.js +31 -0
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/examples/jsm/environments/RoomEnvironment.js +83 -42
- package/examples/jsm/exporters/DRACOExporter.js +56 -14
- package/examples/jsm/exporters/EXRExporter.js +40 -9
- package/examples/jsm/exporters/GLTFExporter.js +502 -169
- package/examples/jsm/exporters/OBJExporter.js +21 -1
- package/examples/jsm/exporters/PLYExporter.js +44 -12
- package/examples/jsm/exporters/STLExporter.js +27 -5
- package/examples/jsm/exporters/USDZExporter.js +781 -291
- package/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/examples/jsm/geometries/DecalGeometry.js +91 -30
- package/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/examples/jsm/geometries/TextGeometry.js +48 -29
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeHelper.js +36 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +38 -1
- package/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/examples/jsm/helpers/RapierHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/examples/jsm/helpers/TextureHelper.js +28 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/examples/jsm/helpers/ViewHelper.js +181 -9
- package/examples/jsm/inspector/Inspector.js +487 -0
- package/examples/jsm/inspector/RendererInspector.js +425 -0
- package/examples/jsm/inspector/tabs/Console.js +238 -0
- package/examples/jsm/inspector/tabs/Parameters.js +348 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +1975 -0
- package/examples/jsm/inspector/ui/Style.js +1613 -0
- package/examples/jsm/inspector/ui/Tab.js +233 -0
- package/examples/jsm/inspector/ui/Values.js +439 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +43 -12
- package/examples/jsm/interactive/InteractiveGroup.js +170 -52
- package/examples/jsm/interactive/SelectionBox.js +106 -9
- package/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +76 -58
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +42 -0
- package/examples/jsm/lights/LightProbeGenerator.js +44 -7
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +50 -14
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +16 -0
- package/examples/jsm/lines/Line2.js +41 -4
- package/examples/jsm/lines/LineGeometry.js +80 -2
- package/examples/jsm/lines/LineMaterial.js +105 -5
- package/examples/jsm/lines/LineSegments2.js +54 -4
- package/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/examples/jsm/lines/Wireframe.js +41 -4
- package/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/examples/jsm/lines/webgpu/Line2.js +28 -2
- package/examples/jsm/lines/webgpu/LineSegments2.js +59 -24
- package/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/examples/jsm/loaders/3DMLoader.js +78 -6
- package/examples/jsm/loaders/3MFLoader.js +148 -7
- package/examples/jsm/loaders/AMFLoader.js +34 -14
- package/examples/jsm/loaders/BVHLoader.js +59 -12
- package/examples/jsm/loaders/ColladaLoader.js +61 -4027
- package/examples/jsm/loaders/DDSLoader.js +68 -1
- package/examples/jsm/loaders/DRACOLoader.js +146 -22
- package/examples/jsm/loaders/EXRLoader.js +255 -34
- package/examples/jsm/loaders/FBXLoader.js +80 -42
- package/examples/jsm/loaders/FontLoader.js +83 -6
- package/examples/jsm/loaders/GCodeLoader.js +71 -14
- package/examples/jsm/loaders/GLTFLoader.js +381 -263
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/examples/jsm/loaders/HDRLoader.js +485 -0
- package/examples/jsm/loaders/IESLoader.js +42 -0
- package/examples/jsm/loaders/KMZLoader.js +39 -6
- package/examples/jsm/loaders/KTX2Loader.js +124 -48
- package/examples/jsm/loaders/KTXLoader.js +31 -10
- package/examples/jsm/loaders/LDrawLoader.js +192 -145
- package/examples/jsm/loaders/LUT3dlLoader.js +47 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +46 -9
- package/examples/jsm/loaders/LUTImageLoader.js +79 -38
- package/examples/jsm/loaders/LWOLoader.js +54 -59
- package/examples/jsm/loaders/LottieLoader.js +54 -1
- package/examples/jsm/loaders/MD2Loader.js +37 -1
- package/examples/jsm/loaders/MDDLoader.js +57 -12
- package/examples/jsm/loaders/MTLLoader.js +60 -35
- package/examples/jsm/loaders/MaterialXLoader.js +268 -34
- package/examples/jsm/loaders/NRRDLoader.js +40 -8
- package/examples/jsm/loaders/OBJLoader.js +51 -2
- package/examples/jsm/loaders/PCDLoader.js +173 -21
- package/examples/jsm/loaders/PDBLoader.js +41 -2
- package/examples/jsm/loaders/PLYLoader.js +70 -39
- package/examples/jsm/loaders/PVRLoader.js +25 -6
- package/examples/jsm/loaders/RGBELoader.js +6 -438
- package/examples/jsm/loaders/STLLoader.js +48 -38
- package/examples/jsm/loaders/SVGLoader.js +119 -25
- package/examples/jsm/loaders/TDSLoader.js +92 -74
- package/examples/jsm/loaders/TGALoader.js +23 -2
- package/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/examples/jsm/loaders/TTFLoader.js +50 -3
- package/examples/jsm/loaders/USDLoader.js +279 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -858
- package/examples/jsm/loaders/UltraHDRLoader.js +338 -166
- package/examples/jsm/loaders/VOXLoader.js +688 -87
- package/examples/jsm/loaders/VRMLLoader.js +121 -12
- package/examples/jsm/loaders/VTKLoader.js +77 -25
- package/examples/jsm/loaders/XYZLoader.js +36 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/lwo/IFFParser.js +77 -77
- package/examples/jsm/loaders/usd/USDAParser.js +822 -0
- package/examples/jsm/loaders/usd/USDCParser.js +1852 -0
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/Capsule.js +91 -14
- package/examples/jsm/math/ColorConverter.js +22 -0
- package/examples/jsm/math/ColorSpaces.js +74 -2
- package/examples/jsm/math/ConvexHull.js +517 -93
- package/examples/jsm/math/ImprovedNoise.js +32 -15
- package/examples/jsm/math/Lut.js +113 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/examples/jsm/math/OBB.js +141 -29
- package/examples/jsm/math/Octree.js +283 -7
- package/examples/jsm/math/SimplexNoise.js +68 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +96 -20
- package/examples/jsm/misc/Gyroscope.js +12 -0
- package/examples/jsm/misc/MD2Character.js +117 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +100 -54
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/examples/jsm/misc/RollerCoaster.js +57 -0
- package/examples/jsm/misc/TubePainter.js +437 -40
- package/examples/jsm/misc/Volume.js +123 -76
- package/examples/jsm/misc/VolumeSlice.js +95 -49
- package/examples/jsm/modifiers/CurveModifier.js +66 -38
- package/examples/jsm/modifiers/CurveModifierGPU.js +42 -19
- package/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +24 -10
- package/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/examples/jsm/objects/Lensflare.js +94 -2
- package/examples/jsm/objects/LensflareMesh.js +64 -10
- package/examples/jsm/objects/MarchingCubes.js +90 -5
- package/examples/jsm/objects/Reflector.js +76 -2
- package/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/examples/jsm/objects/Refractor.js +62 -0
- package/examples/jsm/objects/ShadowMesh.js +54 -4
- package/examples/jsm/objects/Sky.js +106 -16
- package/examples/jsm/objects/SkyMesh.js +211 -38
- package/examples/jsm/objects/Water.js +49 -8
- package/examples/jsm/objects/Water2.js +49 -7
- package/examples/jsm/objects/Water2Mesh.js +50 -9
- package/examples/jsm/objects/WaterMesh.js +136 -43
- package/examples/jsm/physics/AmmoPhysics.js +60 -7
- package/examples/jsm/physics/JoltPhysics.js +65 -12
- package/examples/jsm/physics/RapierPhysics.js +217 -21
- package/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/examples/jsm/postprocessing/EffectComposer.js +140 -6
- package/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/examples/jsm/postprocessing/GlitchPass.js +86 -34
- package/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/examples/jsm/postprocessing/LUTPass.js +38 -8
- package/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/examples/jsm/postprocessing/OutlinePass.js +272 -135
- package/examples/jsm/postprocessing/OutputPass.js +65 -14
- package/examples/jsm/postprocessing/Pass.js +100 -4
- package/examples/jsm/postprocessing/RenderPass.js +94 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +120 -21
- package/examples/jsm/postprocessing/SAOPass.js +128 -55
- package/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/examples/jsm/postprocessing/SSAARenderPass.js +118 -35
- package/examples/jsm/postprocessing/SSAOPass.js +173 -60
- package/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/examples/jsm/postprocessing/SavePass.js +69 -16
- package/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +168 -59
- package/examples/jsm/renderers/CSS2DRenderer.js +98 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +111 -7
- package/examples/jsm/renderers/Projector.js +288 -32
- package/examples/jsm/renderers/SVGRenderer.js +323 -61
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +3 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +5 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/examples/jsm/shaders/BasicShader.js +8 -1
- package/examples/jsm/shaders/BleachBypassShader.js +10 -3
- package/examples/jsm/shaders/BlendShader.js +8 -1
- package/examples/jsm/shaders/BokehShader.js +9 -3
- package/examples/jsm/shaders/BokehShader2.js +11 -4
- package/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/examples/jsm/shaders/ColorifyShader.js +8 -1
- package/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/examples/jsm/shaders/CopyShader.js +8 -1
- package/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/examples/jsm/shaders/ExposureShader.js +8 -1
- package/examples/jsm/shaders/FXAAShader.js +233 -221
- package/examples/jsm/shaders/FilmShader.js +13 -0
- package/examples/jsm/shaders/FocusShader.js +8 -3
- package/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/examples/jsm/shaders/GTAOShader.js +55 -45
- package/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/examples/jsm/shaders/HalftoneShader.js +24 -4
- package/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +8 -4
- package/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/examples/jsm/shaders/MirrorShader.js +10 -4
- package/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/examples/jsm/shaders/OutputShader.js +19 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +30 -17
- package/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/examples/jsm/shaders/SAOShader.js +27 -5
- package/examples/jsm/shaders/SMAAShader.js +24 -1
- package/examples/jsm/shaders/SSAOShader.js +37 -6
- package/examples/jsm/shaders/SSRShader.js +32 -6
- package/examples/jsm/shaders/SepiaShader.js +8 -3
- package/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/examples/jsm/shaders/ToonShader.js +29 -6
- package/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -6
- package/examples/jsm/shaders/VelocityShader.js +8 -1
- package/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/examples/jsm/shaders/VignetteShader.js +8 -3
- package/examples/jsm/shaders/VolumeShader.js +11 -2
- package/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/examples/jsm/textures/FlakesTexture.js +14 -0
- package/examples/jsm/transpiler/AST.js +436 -31
- package/examples/jsm/transpiler/GLSLDecoder.js +380 -135
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -1
- package/examples/jsm/transpiler/TSLEncoder.js +363 -97
- package/examples/jsm/transpiler/Transpiler.js +50 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +839 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +549 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/{src/nodes → examples/jsm/tsl}/display/BleachBypass.js +11 -4
- package/examples/jsm/tsl/display/BloomNode.js +534 -0
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/examples/jsm/tsl/display/GTAONode.js +571 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +389 -0
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/examples/jsm/tsl/display/PixelationPassNode.js +335 -0
- package/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/{src/nodes → examples/jsm/tsl}/display/SSAAPassNode.js +120 -49
- package/examples/jsm/tsl/display/SSGINode.js +642 -0
- package/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/examples/jsm/tsl/display/SSSNode.js +490 -0
- package/{src/nodes → examples/jsm/tsl}/display/Sepia.js +9 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +61 -19
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +192 -0
- package/{src/nodes → examples/jsm/tsl}/display/StereoPassNode.js +48 -12
- package/examples/jsm/tsl/display/TRAANode.js +726 -0
- package/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/examples/jsm/tsl/math/Bayer.js +73 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +91 -29
- package/examples/jsm/utils/CameraUtils.js +15 -6
- package/examples/jsm/utils/GeometryCompressionUtils.js +23 -30
- package/examples/jsm/utils/GeometryUtils.js +32 -27
- package/examples/jsm/utils/LDrawUtils.js +14 -5
- package/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/examples/jsm/utils/SceneUtils.js +53 -3
- package/examples/jsm/utils/ShadowMapViewer.js +72 -33
- package/examples/jsm/utils/ShadowMapViewerGPU.js +61 -29
- package/examples/jsm/utils/SkeletonUtils.js +48 -0
- package/examples/jsm/utils/SortUtils.js +17 -5
- package/examples/jsm/utils/UVsDebug.js +12 -4
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +16 -0
- package/examples/jsm/utils/{TextureUtilsGPU.js → WebGPUTextureUtils.js} +20 -2
- package/examples/jsm/utils/WorkerPool.js +67 -2
- package/examples/jsm/webxr/ARButton.js +19 -0
- package/examples/jsm/webxr/OculusHandModel.js +84 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/examples/jsm/webxr/Text2D.js +20 -6
- package/examples/jsm/webxr/VRButton.js +31 -0
- package/examples/jsm/webxr/XRButton.js +23 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +94 -3
- package/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +96 -6
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/examples/jsm/webxr/XRPlanes.js +18 -0
- package/package.json +29 -37
- package/src/Three.Core.js +198 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +641 -0
- package/src/Three.WebGPU.Nodes.js +14 -186
- package/src/Three.WebGPU.js +16 -186
- package/src/Three.js +2 -197
- package/src/animation/AnimationAction.js +263 -31
- package/src/animation/AnimationClip.js +162 -7
- package/src/animation/AnimationMixer.js +105 -15
- package/src/animation/AnimationObjectGroup.js +45 -21
- package/src/animation/AnimationUtils.js +163 -24
- package/src/animation/KeyframeTrack.js +191 -17
- package/src/animation/PropertyBinding.js +91 -16
- 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 +386 -8
- package/src/audio/AudioAnalyser.js +58 -1
- package/src/audio/AudioContext.js +15 -0
- package/src/audio/AudioListener.js +94 -13
- package/src/audio/PositionalAudio.js +107 -0
- package/src/cameras/ArrayCamera.js +37 -0
- package/src/cameras/Camera.js +61 -0
- package/src/cameras/CubeCamera.js +86 -0
- package/src/cameras/OrthographicCamera.js +110 -1
- package/src/cameras/PerspectiveCamera.js +174 -35
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +1546 -11
- package/src/core/BufferAttribute.js +417 -3
- package/src/core/BufferGeometry.js +407 -22
- package/src/core/Clock.js +69 -8
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/GLBufferAttribute.js +113 -2
- 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 +141 -7
- package/src/core/InterleavedBufferAttribute.js +200 -2
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +673 -26
- package/src/core/Raycaster.js +136 -2
- package/src/core/RenderTarget.js +256 -27
- package/src/core/RenderTarget3D.js +48 -0
- package/src/core/Timer.js +184 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +89 -1
- package/src/extras/DataUtils.js +50 -9
- package/src/extras/Earcut.js +18 -779
- package/src/extras/ImageUtils.js +22 -14
- package/src/extras/PMREMGenerator.js +316 -67
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +101 -15
- package/src/extras/core/Curve.js +156 -55
- package/src/extras/core/CurvePath.js +63 -22
- package/src/extras/core/Interpolations.js +34 -2
- package/src/extras/core/Path.js +134 -1
- package/src/extras/core/Shape.js +66 -3
- package/src/extras/core/ShapePath.js +80 -4
- 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 +39 -0
- package/src/geometries/CapsuleGeometry.js +196 -11
- package/src/geometries/CircleGeometry.js +41 -0
- package/src/geometries/ConeGeometry.js +39 -0
- package/src/geometries/CylinderGeometry.js +42 -2
- package/src/geometries/DodecahedronGeometry.js +33 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +148 -52
- package/src/geometries/IcosahedronGeometry.js +33 -0
- package/src/geometries/LatheGeometry.js +44 -3
- package/src/geometries/OctahedronGeometry.js +33 -0
- package/src/geometries/PlaneGeometry.js +35 -0
- package/src/geometries/PolyhedronGeometry.js +30 -1
- package/src/geometries/RingGeometry.js +37 -0
- package/src/geometries/ShapeGeometry.js +38 -0
- package/src/geometries/SphereGeometry.js +38 -0
- package/src/geometries/TetrahedronGeometry.js +33 -0
- package/src/geometries/TorusGeometry.js +44 -3
- package/src/geometries/TorusKnotGeometry.js +39 -0
- package/src/geometries/TubeGeometry.js +50 -0
- package/src/geometries/WireframeGeometry.js +32 -0
- package/src/helpers/ArrowHelper.js +62 -5
- 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 +103 -27
- package/src/helpers/DirectionalLightHelper.js +55 -0
- package/src/helpers/GridHelper.js +26 -0
- package/src/helpers/HemisphereLightHelper.js +42 -0
- package/src/helpers/PlaneHelper.js +33 -0
- package/src/helpers/PointLightHelper.js +43 -24
- package/src/helpers/PolarGridHelper.js +30 -0
- package/src/helpers/SkeletonHelper.js +73 -7
- package/src/helpers/SpotLightHelper.js +43 -0
- package/src/lights/AmbientLight.js +25 -0
- package/src/lights/DirectionalLight.js +70 -0
- package/src/lights/DirectionalLightShadow.js +15 -0
- package/src/lights/HemisphereLight.js +42 -0
- package/src/lights/Light.js +37 -11
- package/src/lights/LightProbe.js +37 -9
- package/src/lights/LightShadow.js +202 -7
- package/src/lights/PointLight.js +74 -0
- package/src/lights/PointLightShadow.js +15 -80
- package/src/lights/RectAreaLight.js +59 -0
- package/src/lights/SpotLight.js +124 -1
- package/src/lights/SpotLightShadow.js +33 -3
- package/src/lights/webgpu/IESSpotLight.js +22 -0
- package/src/lights/webgpu/ProjectorLight.js +46 -0
- package/src/loaders/AnimationLoader.js +34 -2
- package/src/loaders/AudioLoader.js +34 -2
- package/src/loaders/BufferGeometryLoader.js +38 -13
- package/src/loaders/Cache.js +75 -2
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +45 -4
- package/src/loaders/FileLoader.js +85 -5
- package/src/loaders/ImageBitmapLoader.js +113 -11
- package/src/loaders/ImageLoader.js +85 -8
- package/src/loaders/Loader.js +150 -0
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +187 -0
- package/src/loaders/MaterialLoader.js +62 -3
- package/src/loaders/ObjectLoader.js +131 -31
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +68 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
- package/src/loaders/nodes/NodeObjectLoader.js +61 -0
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -1
- package/src/materials/Material.js +502 -8
- package/src/materials/MeshBasicMaterial.js +168 -2
- package/src/materials/MeshDepthMaterial.js +94 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +283 -0
- package/src/materials/MeshMatcapMaterial.js +164 -0
- package/src/materials/MeshNormalMaterial.js +114 -0
- package/src/materials/MeshPhongMaterial.js +298 -0
- package/src/materials/MeshPhysicalMaterial.js +296 -4
- package/src/materials/MeshStandardMaterial.js +300 -2
- package/src/materials/MeshToonMaterial.js +219 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +234 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +158 -53
- package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +81 -6
- package/src/materials/nodes/MeshBasicNodeMaterial.js +59 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +23 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +27 -4
- package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +276 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +98 -10
- package/src/materials/nodes/MeshStandardNodeMaterial.js +83 -4
- package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
- package/src/materials/nodes/NodeMaterial.js +789 -74
- package/src/materials/nodes/NodeMaterials.js +0 -1
- package/src/materials/nodes/PointsNodeMaterial.js +180 -11
- package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +86 -23
- package/src/materials/nodes/VolumeNodeMaterial.js +57 -84
- package/src/materials/nodes/manager/NodeMaterialObserver.js +329 -12
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +271 -0
- package/src/math/Color.js +355 -11
- package/src/math/ColorManagement.js +158 -92
- package/src/math/Cylindrical.js +65 -6
- package/src/math/Euler.js +139 -5
- package/src/math/Frustum.js +108 -9
- package/src/math/FrustumArray.js +258 -0
- package/src/math/Interpolant.js +87 -8
- package/src/math/Line3.js +221 -2
- package/src/math/MathUtils.js +408 -20
- package/src/math/Matrix2.js +70 -0
- package/src/math/Matrix3.js +229 -4
- package/src/math/Matrix4.js +489 -94
- package/src/math/Plane.js +164 -2
- package/src/math/Quaternion.js +322 -90
- package/src/math/Ray.js +162 -0
- package/src/math/Sphere.js +175 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +206 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -15
- package/src/math/Vector4.js +415 -9
- package/src/math/interpolants/BezierInterpolant.js +108 -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 +91 -88
- package/src/nodes/TSL.js +32 -38
- package/src/nodes/accessors/AccessorsUtils.js +37 -9
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +49 -14
- package/src/nodes/accessors/Bitangent.js +82 -13
- package/src/nodes/accessors/BufferAttributeNode.js +269 -8
- package/src/nodes/accessors/BufferNode.js +91 -2
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +400 -10
- package/src/nodes/accessors/ClippingNode.js +149 -45
- package/src/nodes/accessors/CubeTextureNode.js +137 -7
- package/src/nodes/accessors/InstanceNode.js +245 -40
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +88 -0
- package/src/nodes/accessors/MaterialNode.js +355 -13
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +52 -14
- package/src/nodes/accessors/ModelNode.js +117 -5
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -39
- package/src/nodes/accessors/MorphNode.js +73 -26
- package/src/nodes/accessors/Normal.js +174 -19
- package/src/nodes/accessors/Object3DNode.js +146 -12
- package/src/nodes/accessors/PointUVNode.js +25 -0
- package/src/nodes/accessors/Position.js +119 -7
- package/src/nodes/accessors/ReferenceBaseNode.js +190 -4
- package/src/nodes/accessors/ReferenceNode.js +223 -8
- package/src/nodes/accessors/ReflectVector.js +29 -3
- package/src/nodes/accessors/RendererReferenceNode.js +45 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +180 -43
- package/src/nodes/accessors/StorageBufferNode.js +278 -26
- package/src/nodes/accessors/StorageTextureNode.js +205 -12
- package/src/nodes/accessors/Tangent.js +48 -10
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +104 -11
- package/src/nodes/accessors/TextureBicubic.js +31 -4
- package/src/nodes/accessors/TextureNode.js +564 -52
- package/src/nodes/accessors/TextureSizeNode.js +42 -1
- package/src/nodes/accessors/UV.js +9 -1
- package/src/nodes/accessors/UniformArrayNode.js +226 -34
- package/src/nodes/accessors/UserDataNode.js +46 -2
- package/src/nodes/accessors/VelocityNode.js +93 -3
- package/src/nodes/accessors/VertexColorNode.js +39 -4
- package/src/nodes/code/CodeNode.js +101 -8
- package/src/nodes/code/ExpressionNode.js +29 -2
- package/src/nodes/code/FunctionCallNode.js +98 -10
- package/src/nodes/code/FunctionNode.js +69 -2
- package/src/nodes/core/ArrayNode.js +174 -0
- package/src/nodes/core/AssignNode.js +80 -9
- package/src/nodes/core/AttributeNode.js +47 -4
- package/src/nodes/core/BypassNode.js +47 -3
- package/src/nodes/core/ConstNode.js +32 -0
- package/src/nodes/core/ContextNode.js +220 -14
- package/src/nodes/core/IndexNode.js +72 -7
- package/src/nodes/core/InputNode.js +50 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/IsolateNode.js +133 -0
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +113 -2
- package/src/nodes/core/Node.js +595 -36
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1840 -121
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +153 -24
- package/src/nodes/core/NodeFunction.js +48 -1
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +13 -1
- package/src/nodes/core/NodeUniform.js +53 -1
- package/src/nodes/core/NodeUtils.js +201 -51
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +47 -1
- package/src/nodes/core/OutputStructNode.js +54 -12
- package/src/nodes/core/ParameterNode.js +60 -2
- package/src/nodes/core/PropertyNode.js +286 -7
- package/src/nodes/core/StackNode.js +337 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +134 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +126 -6
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/TempNode.js +31 -5
- package/src/nodes/core/UniformGroupNode.js +85 -7
- package/src/nodes/core/UniformNode.js +163 -16
- package/src/nodes/core/VarNode.js +317 -10
- package/src/nodes/core/VaryingNode.js +115 -13
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +171 -0
- package/src/nodes/display/BumpMapNode.js +38 -2
- package/src/nodes/display/ColorAdjustment.js +118 -6
- package/src/nodes/display/ColorSpaceFunctions.js +22 -6
- package/src/nodes/display/ColorSpaceNode.js +97 -47
- package/src/nodes/display/FrontFacingNode.js +64 -7
- package/src/nodes/display/NormalMapNode.js +101 -54
- package/src/nodes/display/PassNode.js +690 -33
- package/src/nodes/display/RenderOutputNode.js +94 -4
- package/src/nodes/display/ScreenNode.js +138 -27
- package/src/nodes/display/ToneMappingFunctions.js +62 -10
- package/src/nodes/display/ToneMappingNode.js +88 -8
- package/src/nodes/display/ToonOutlinePassNode.js +84 -4
- package/src/nodes/display/ViewportDepthNode.js +227 -10
- package/src/nodes/display/ViewportDepthTextureNode.js +39 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +35 -1
- package/src/nodes/display/ViewportTextureNode.js +171 -7
- package/src/nodes/fog/Fog.js +97 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +45 -1
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/BasicLightingModel.js +28 -6
- package/src/nodes/functions/PhongLightingModel.js +36 -6
- package/src/nodes/functions/PhysicalLightingModel.js +336 -91
- package/src/nodes/functions/ShadowMaskModel.js +30 -3
- package/src/nodes/functions/ToonLightingModel.js +21 -2
- package/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/src/nodes/geometry/RangeNode.js +97 -8
- package/src/nodes/gpgpu/AtomicFunctionNode.js +198 -23
- package/src/nodes/gpgpu/BarrierNode.js +52 -3
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +135 -6
- package/src/nodes/gpgpu/ComputeNode.js +212 -16
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +143 -9
- package/src/nodes/lighting/AONode.js +18 -0
- package/src/nodes/lighting/AmbientLightNode.js +10 -0
- package/src/nodes/lighting/AnalyticLightNode.js +186 -399
- package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
- package/src/nodes/lighting/BasicLightMapNode.js +17 -0
- package/src/nodes/lighting/DirectionalLightNode.js +12 -11
- package/src/nodes/lighting/EnvironmentNode.js +59 -19
- package/src/nodes/lighting/HemisphereLightNode.js +33 -2
- package/src/nodes/lighting/IESSpotLightNode.js +13 -1
- package/src/nodes/lighting/IrradianceNode.js +17 -0
- package/src/nodes/lighting/LightProbeNode.js +20 -0
- package/src/nodes/lighting/LightUtils.js +11 -3
- package/src/nodes/lighting/LightingContextNode.js +52 -4
- package/src/nodes/lighting/LightingNode.js +15 -6
- package/src/nodes/lighting/LightsNode.js +238 -35
- package/src/nodes/lighting/PointLightNode.js +60 -25
- package/src/nodes/lighting/PointShadowNode.js +325 -0
- package/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/src/nodes/lighting/RectAreaLightNode.js +50 -14
- package/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/src/nodes/lighting/ShadowFilterNode.js +264 -0
- package/src/nodes/lighting/ShadowNode.js +867 -0
- package/src/nodes/lighting/SpotLightNode.js +99 -18
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +166 -2
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +110 -21
- package/src/nodes/math/Hash.js +8 -0
- package/src/nodes/math/MathNode.js +820 -97
- package/src/nodes/math/MathUtils.js +47 -1
- package/src/nodes/math/OperatorNode.js +517 -84
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/TriNoise3D.js +17 -7
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +180 -23
- package/src/nodes/pmrem/PMREMUtils.js +114 -5
- package/src/nodes/procedural/Checker.js +8 -0
- package/src/nodes/shapes/Shapes.js +33 -0
- package/src/nodes/tsl/TSLBase.js +10 -4
- package/src/nodes/tsl/TSLCore.js +732 -160
- package/src/nodes/utils/ArrayElementNode.js +55 -4
- package/src/nodes/utils/ConvertNode.js +31 -0
- package/src/nodes/utils/CubeMapNode.js +79 -2
- package/src/nodes/utils/DebugNode.js +83 -0
- package/src/nodes/utils/Discard.js +18 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +118 -0
- package/src/nodes/utils/FlipNode.js +38 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +91 -22
- package/src/nodes/utils/JoinNode.js +57 -4
- package/src/nodes/utils/LoopNode.js +193 -55
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MaxMipLevelNode.js +49 -1
- package/src/nodes/utils/MemberNode.js +120 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +30 -1
- package/src/nodes/utils/PostProcessingUtils.js +154 -0
- package/src/nodes/utils/RTTNode.js +165 -9
- package/src/nodes/utils/ReflectorNode.js +407 -21
- package/src/nodes/utils/RemapNode.js +81 -2
- package/src/nodes/utils/RotateNode.js +41 -1
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SetNode.js +44 -1
- package/src/nodes/utils/SplitNode.js +66 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/SpriteUtils.js +16 -0
- package/src/nodes/utils/StorageArrayElementNode.js +56 -3
- package/src/nodes/utils/Timer.js +26 -0
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/nodes/utils/UVUtils.js +48 -0
- package/src/nodes/utils/ViewportUtils.js +12 -0
- package/src/objects/BatchedMesh.js +798 -309
- package/src/objects/Bone.js +24 -0
- package/src/objects/ClippingGroup.js +68 -0
- package/src/objects/Group.js +24 -0
- package/src/objects/InstancedMesh.js +131 -2
- package/src/objects/LOD.js +99 -5
- package/src/objects/Line.js +90 -7
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +20 -1
- package/src/objects/Mesh.js +84 -0
- package/src/objects/Points.js +60 -0
- package/src/objects/Skeleton.js +120 -5
- package/src/objects/SkinnedMesh.js +102 -6
- package/src/objects/Sprite.js +65 -1
- package/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/src/renderers/WebGLCubeRenderTarget.js +41 -5
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +1016 -278
- package/src/renderers/common/Animation.js +123 -14
- package/src/renderers/common/Attributes.js +41 -1
- package/src/renderers/common/Backend.js +623 -44
- package/src/renderers/common/Background.js +99 -16
- package/src/renderers/common/BindGroup.js +37 -2
- package/src/renderers/common/Binding.js +46 -0
- package/src/renderers/common/Bindings.js +211 -20
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +89 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +57 -0
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +73 -10
- package/src/renderers/common/ClippingContext.js +172 -87
- package/src/renderers/common/Color4.js +40 -0
- package/src/renderers/common/ComputePipeline.js +24 -0
- package/src/renderers/common/Constants.js +2 -1
- package/src/renderers/common/CubeRenderTarget.js +77 -7
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +163 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +81 -36
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Lighting.js +57 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +150 -7
- package/src/renderers/common/PostProcessing.js +22 -84
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +63 -6
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +40 -10
- package/src/renderers/common/RenderContext.js +219 -4
- package/src/renderers/common/RenderContexts.js +54 -17
- package/src/renderers/common/RenderList.js +233 -24
- package/src/renderers/common/RenderLists.js +46 -6
- package/src/renderers/common/RenderObject.js +548 -46
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +133 -15
- package/src/renderers/common/RenderPipeline.js +216 -6
- package/src/renderers/common/Renderer.js +2155 -332
- package/src/renderers/common/RendererUtils.js +200 -0
- package/src/renderers/common/SampledTexture.js +99 -39
- package/src/renderers/common/Sampler.js +148 -1
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageBuffer.js +38 -2
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +65 -0
- package/src/renderers/common/Textures.js +273 -57
- package/src/renderers/common/TimestampQueryPool.js +163 -0
- package/src/renderers/common/Uniform.js +233 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +235 -26
- package/src/renderers/common/XRManager.js +1677 -0
- package/src/renderers/common/XRRenderTarget.js +91 -0
- package/src/renderers/common/extras/PMREMGenerator.js +371 -108
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +95 -17
- package/src/renderers/common/nodes/NodeManager.js +852 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +84 -8
- package/src/renderers/common/nodes/NodeSampler.js +41 -1
- package/src/renderers/common/nodes/NodeStorageBuffer.js +48 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +81 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/shaders/DFGLUTData.js +49 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +154 -59
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +230 -181
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +14 -2
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -5
- package/src/renderers/shaders/UniformsLib.js +2 -7
- package/src/renderers/shaders/UniformsUtils.js +21 -2
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLBackground.js +30 -5
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +7 -14
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLGeometries.js +10 -35
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +87 -148
- package/src/renderers/webgl/WebGLPrograms.js +53 -51
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +204 -28
- package/src/renderers/webgl/WebGLState.js +88 -56
- package/src/renderers/webgl/WebGLTextures.js +293 -59
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +7 -5
- package/src/renderers/webgl-fallback/WebGLBackend.js +1416 -293
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +785 -92
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +62 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +3 -3
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +584 -20
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +468 -80
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +72 -24
- package/src/renderers/webgpu/WebGPUBackend.js +1517 -428
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +31 -4
- package/src/renderers/webgpu/WebGPURenderer.js +55 -4
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +23 -16
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +37 -42
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +1335 -241
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +32 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +144 -20
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +460 -116
- package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -4
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +283 -69
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +225 -178
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +583 -191
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +150 -28
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +52 -7
- package/src/renderers/webxr/WebXRManager.js +275 -15
- 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/CubeDepthTexture.js +76 -0
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +79 -2
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -11
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +106 -4
- package/src/textures/Texture.js +488 -6
- package/src/textures/VideoFrameTexture.js +72 -0
- package/src/textures/VideoTexture.js +78 -6
- package/src/utils.js +322 -3
- package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +0 -729
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/RGBMLoader.js +0 -1081
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -432
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -144
- package/examples/jsm/misc/Timer.js +0 -128
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/GodRaysShader.js +0 -321
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
- package/src/nodes/accessors/SceneNode.js +0 -55
- package/src/nodes/code/ScriptableNode.js +0 -505
- package/src/nodes/code/ScriptableValueNode.js +0 -170
- package/src/nodes/core/CacheNode.js +0 -50
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -158
- package/src/nodes/display/AnaglyphPassNode.js +0 -67
- package/src/nodes/display/AnamorphicNode.js +0 -151
- package/src/nodes/display/BlendMode.js +0 -54
- package/src/nodes/display/BloomNode.js +0 -341
- package/src/nodes/display/DenoiseNode.js +0 -204
- package/src/nodes/display/DepthOfFieldNode.js +0 -124
- package/src/nodes/display/DotScreenNode.js +0 -66
- package/src/nodes/display/FXAANode.js +0 -332
- package/src/nodes/display/FilmNode.js +0 -56
- package/src/nodes/display/GTAONode.js +0 -331
- package/src/nodes/display/GaussianBlurNode.js +0 -213
- package/src/nodes/display/Lut3DNode.js +0 -57
- package/src/nodes/display/MotionBlur.js +0 -25
- package/src/nodes/display/ParallaxBarrierPassNode.js +0 -58
- package/src/nodes/display/PixelationPassNode.js +0 -213
- package/src/nodes/display/PosterizeNode.js +0 -33
- package/src/nodes/display/RGBShiftNode.js +0 -53
- package/src/nodes/display/StereoCompositePassNode.js +0 -110
- package/src/nodes/display/TransitionNode.js +0 -80
- package/src/nodes/fog/FogExp2Node.js +0 -35
- package/src/nodes/fog/FogNode.js +0 -50
- package/src/nodes/fog/FogRangeNode.js +0 -36
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/src/nodes/utils/EquirectUVNode.js +0 -36
- package/src/nodes/utils/MatcapUVNode.js +0 -33
- package/src/nodes/utils/OscNode.js +0 -85
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -45
- package/src/nodes/utils/TimerNode.js +0 -97
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -64
- package/src/renderers/common/nodes/Nodes.js +0 -534
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -136
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { default as TextureNode/*, texture*/ } from '../accessors/TextureNode.js';
|
|
3
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
4
|
-
import {
|
|
4
|
+
import { context } from '../tsl/TSLBase.js';
|
|
5
5
|
import { uniform } from '../core/UniformNode.js';
|
|
6
6
|
import { viewZToOrthographicDepth, perspectiveDepthToViewZ } from './ViewportDepthNode.js';
|
|
7
7
|
|
|
8
8
|
import { HalfFloatType/*, FloatType*/ } from '../../constants.js';
|
|
9
9
|
import { Vector2 } from '../../math/Vector2.js';
|
|
10
|
+
import { Vector4 } from '../../math/Vector4.js';
|
|
10
11
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
11
12
|
import { RenderTarget } from '../../core/RenderTarget.js';
|
|
13
|
+
import { warn } from '../../utils.js';
|
|
12
14
|
|
|
13
15
|
const _size = /*@__PURE__*/ new Vector2();
|
|
14
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Represents the texture of a pass node.
|
|
19
|
+
*
|
|
20
|
+
* @augments TextureNode
|
|
21
|
+
*/
|
|
15
22
|
class PassTextureNode extends TextureNode {
|
|
16
23
|
|
|
17
24
|
static get type() {
|
|
@@ -20,19 +27,40 @@ class PassTextureNode extends TextureNode {
|
|
|
20
27
|
|
|
21
28
|
}
|
|
22
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Constructs a new pass texture node.
|
|
32
|
+
*
|
|
33
|
+
* @param {PassNode} passNode - The pass node.
|
|
34
|
+
* @param {Texture} texture - The output texture.
|
|
35
|
+
*/
|
|
23
36
|
constructor( passNode, texture ) {
|
|
24
37
|
|
|
25
38
|
super( texture );
|
|
26
39
|
|
|
40
|
+
/**
|
|
41
|
+
* A reference to the pass node.
|
|
42
|
+
*
|
|
43
|
+
* @type {PassNode}
|
|
44
|
+
*/
|
|
27
45
|
this.passNode = passNode;
|
|
28
46
|
|
|
47
|
+
/**
|
|
48
|
+
* This flag can be used for type testing.
|
|
49
|
+
*
|
|
50
|
+
* @type {boolean}
|
|
51
|
+
* @default true
|
|
52
|
+
* @readonly
|
|
53
|
+
*/
|
|
54
|
+
this.isPassTextureNode = true;
|
|
55
|
+
|
|
29
56
|
this.setUpdateMatrix( false );
|
|
30
57
|
|
|
31
58
|
}
|
|
32
59
|
|
|
33
60
|
setup( builder ) {
|
|
34
61
|
|
|
35
|
-
|
|
62
|
+
const properties = builder.getNodeProperties( this );
|
|
63
|
+
properties.passNode = this.passNode;
|
|
36
64
|
|
|
37
65
|
return super.setup( builder );
|
|
38
66
|
|
|
@@ -46,6 +74,12 @@ class PassTextureNode extends TextureNode {
|
|
|
46
74
|
|
|
47
75
|
}
|
|
48
76
|
|
|
77
|
+
/**
|
|
78
|
+
* An extension of `PassTextureNode` which allows to manage more than one
|
|
79
|
+
* internal texture. Relevant for the `getPreviousTexture()` related API.
|
|
80
|
+
*
|
|
81
|
+
* @augments PassTextureNode
|
|
82
|
+
*/
|
|
49
83
|
class PassMultipleTextureNode extends PassTextureNode {
|
|
50
84
|
|
|
51
85
|
static get type() {
|
|
@@ -54,15 +88,49 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
54
88
|
|
|
55
89
|
}
|
|
56
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Constructs a new pass texture node.
|
|
93
|
+
*
|
|
94
|
+
* @param {PassNode} passNode - The pass node.
|
|
95
|
+
* @param {string} textureName - The output texture name.
|
|
96
|
+
* @param {boolean} [previousTexture=false] - Whether previous frame data should be used or not.
|
|
97
|
+
*/
|
|
57
98
|
constructor( passNode, textureName, previousTexture = false ) {
|
|
58
99
|
|
|
100
|
+
// null is passed to the super call since this class does not
|
|
101
|
+
// use an external texture for rendering pass data into. Instead
|
|
102
|
+
// the texture is managed by the pass node itself
|
|
103
|
+
|
|
59
104
|
super( passNode, null );
|
|
60
105
|
|
|
106
|
+
/**
|
|
107
|
+
* The output texture name.
|
|
108
|
+
*
|
|
109
|
+
* @type {string}
|
|
110
|
+
*/
|
|
61
111
|
this.textureName = textureName;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Whether previous frame data should be used or not.
|
|
115
|
+
*
|
|
116
|
+
* @type {boolean}
|
|
117
|
+
*/
|
|
62
118
|
this.previousTexture = previousTexture;
|
|
63
119
|
|
|
120
|
+
/**
|
|
121
|
+
* This flag can be used for type testing.
|
|
122
|
+
*
|
|
123
|
+
* @type {boolean}
|
|
124
|
+
* @default true
|
|
125
|
+
* @readonly
|
|
126
|
+
*/
|
|
127
|
+
this.isPassMultipleTextureNode = true;
|
|
128
|
+
|
|
64
129
|
}
|
|
65
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Updates the texture reference of this node.
|
|
133
|
+
*/
|
|
66
134
|
updateTexture() {
|
|
67
135
|
|
|
68
136
|
this.value = this.previousTexture ? this.passNode.getPreviousTexture( this.textureName ) : this.passNode.getTexture( this.textureName );
|
|
@@ -79,12 +147,37 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
79
147
|
|
|
80
148
|
clone() {
|
|
81
149
|
|
|
82
|
-
|
|
150
|
+
const newNode = new this.constructor( this.passNode, this.textureName, this.previousTexture );
|
|
151
|
+
newNode.uvNode = this.uvNode;
|
|
152
|
+
newNode.levelNode = this.levelNode;
|
|
153
|
+
newNode.biasNode = this.biasNode;
|
|
154
|
+
newNode.sampler = this.sampler;
|
|
155
|
+
newNode.depthNode = this.depthNode;
|
|
156
|
+
newNode.compareNode = this.compareNode;
|
|
157
|
+
newNode.gradNode = this.gradNode;
|
|
158
|
+
newNode.offsetNode = this.offsetNode;
|
|
159
|
+
|
|
160
|
+
return newNode;
|
|
83
161
|
|
|
84
162
|
}
|
|
85
163
|
|
|
86
164
|
}
|
|
87
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Represents a render pass (sometimes called beauty pass) in context of post processing.
|
|
168
|
+
* This pass produces a render for the given scene and camera and can provide multiple outputs
|
|
169
|
+
* via MRT for further processing.
|
|
170
|
+
*
|
|
171
|
+
* ```js
|
|
172
|
+
* const postProcessing = new RenderPipeline( renderer );
|
|
173
|
+
*
|
|
174
|
+
* const scenePass = pass( scene, camera );
|
|
175
|
+
*
|
|
176
|
+
* postProcessing.outputNode = scenePass;
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @augments TempNode
|
|
180
|
+
*/
|
|
88
181
|
class PassNode extends TempNode {
|
|
89
182
|
|
|
90
183
|
static get type() {
|
|
@@ -93,17 +186,69 @@ class PassNode extends TempNode {
|
|
|
93
186
|
|
|
94
187
|
}
|
|
95
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Constructs a new pass node.
|
|
191
|
+
*
|
|
192
|
+
* @param {('color'|'depth')} scope - The scope of the pass. The scope determines whether the node outputs color or depth.
|
|
193
|
+
* @param {Scene} scene - A reference to the scene.
|
|
194
|
+
* @param {Camera} camera - A reference to the camera.
|
|
195
|
+
* @param {Object} options - Options for the internal render target.
|
|
196
|
+
*/
|
|
96
197
|
constructor( scope, scene, camera, options = {} ) {
|
|
97
198
|
|
|
98
199
|
super( 'vec4' );
|
|
99
200
|
|
|
201
|
+
/**
|
|
202
|
+
* The scope of the pass. The scope determines whether the node outputs color or depth.
|
|
203
|
+
*
|
|
204
|
+
* @type {('color'|'depth')}
|
|
205
|
+
*/
|
|
100
206
|
this.scope = scope;
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* A reference to the scene.
|
|
210
|
+
*
|
|
211
|
+
* @type {Scene}
|
|
212
|
+
*/
|
|
101
213
|
this.scene = scene;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* A reference to the camera.
|
|
217
|
+
*
|
|
218
|
+
* @type {Camera}
|
|
219
|
+
*/
|
|
102
220
|
this.camera = camera;
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Options for the internal render target.
|
|
224
|
+
*
|
|
225
|
+
* @type {Object}
|
|
226
|
+
*/
|
|
103
227
|
this.options = options;
|
|
104
228
|
|
|
229
|
+
/**
|
|
230
|
+
* The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
|
|
231
|
+
*
|
|
232
|
+
* @private
|
|
233
|
+
* @type {number}
|
|
234
|
+
* @default 1
|
|
235
|
+
*/
|
|
105
236
|
this._pixelRatio = 1;
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
|
|
240
|
+
* @private
|
|
241
|
+
* @type {number}
|
|
242
|
+
* @default 1
|
|
243
|
+
*/
|
|
106
244
|
this._width = 1;
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* The pass's pixel height. Will be kept automatically kept in sync with the renderer's height.
|
|
248
|
+
* @private
|
|
249
|
+
* @type {number}
|
|
250
|
+
* @default 1
|
|
251
|
+
*/
|
|
107
252
|
this._height = 1;
|
|
108
253
|
|
|
109
254
|
const depthTexture = new DepthTexture();
|
|
@@ -115,51 +260,307 @@ class PassNode extends TempNode {
|
|
|
115
260
|
renderTarget.texture.name = 'output';
|
|
116
261
|
renderTarget.depthTexture = depthTexture;
|
|
117
262
|
|
|
263
|
+
/**
|
|
264
|
+
* The pass's render target.
|
|
265
|
+
*
|
|
266
|
+
* @type {RenderTarget}
|
|
267
|
+
*/
|
|
118
268
|
this.renderTarget = renderTarget;
|
|
119
269
|
|
|
120
|
-
|
|
121
|
-
|
|
270
|
+
/**
|
|
271
|
+
* An optional override material for the pass.
|
|
272
|
+
*
|
|
273
|
+
* @type {Material|null}
|
|
274
|
+
*/
|
|
275
|
+
this.overrideMaterial = null;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Whether the pass is transparent.
|
|
279
|
+
*
|
|
280
|
+
* @type {boolean}
|
|
281
|
+
* @default false
|
|
282
|
+
*/
|
|
283
|
+
this.transparent = true;
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Whether the pass is opaque.
|
|
287
|
+
*
|
|
288
|
+
* @type {boolean}
|
|
289
|
+
* @default true
|
|
290
|
+
*/
|
|
291
|
+
this.opaque = true;
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* An optional global context for the pass.
|
|
295
|
+
*
|
|
296
|
+
* @type {ContextNode|null}
|
|
297
|
+
*/
|
|
298
|
+
this.contextNode = null;
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* A cache for the context node.
|
|
302
|
+
*
|
|
303
|
+
* @private
|
|
304
|
+
* @type {?Object}
|
|
305
|
+
* @default null
|
|
306
|
+
*/
|
|
307
|
+
this._contextNodeCache = null;
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* A dictionary holding the internal result textures.
|
|
311
|
+
*
|
|
312
|
+
* @private
|
|
313
|
+
* @type {Object<string, Texture>}
|
|
314
|
+
*/
|
|
122
315
|
this._textures = {
|
|
123
316
|
output: renderTarget.texture,
|
|
124
317
|
depth: depthTexture
|
|
125
318
|
};
|
|
126
319
|
|
|
320
|
+
/**
|
|
321
|
+
* A dictionary holding the internal texture nodes.
|
|
322
|
+
*
|
|
323
|
+
* @private
|
|
324
|
+
* @type {Object<string, TextureNode>}
|
|
325
|
+
*/
|
|
127
326
|
this._textureNodes = {};
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* A dictionary holding the internal depth nodes.
|
|
330
|
+
*
|
|
331
|
+
* @private
|
|
332
|
+
* @type {Object}
|
|
333
|
+
*/
|
|
128
334
|
this._linearDepthNodes = {};
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* A dictionary holding the internal viewZ nodes.
|
|
338
|
+
*
|
|
339
|
+
* @private
|
|
340
|
+
* @type {Object}
|
|
341
|
+
*/
|
|
129
342
|
this._viewZNodes = {};
|
|
130
343
|
|
|
344
|
+
/**
|
|
345
|
+
* A dictionary holding the texture data of the previous frame.
|
|
346
|
+
* Used for computing velocity/motion vectors.
|
|
347
|
+
*
|
|
348
|
+
* @private
|
|
349
|
+
* @type {Object<string, Texture>}
|
|
350
|
+
*/
|
|
131
351
|
this._previousTextures = {};
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* A dictionary holding the texture nodes of the previous frame.
|
|
355
|
+
* Used for computing velocity/motion vectors.
|
|
356
|
+
*
|
|
357
|
+
* @private
|
|
358
|
+
* @type {Object<string, TextureNode>}
|
|
359
|
+
*/
|
|
132
360
|
this._previousTextureNodes = {};
|
|
133
361
|
|
|
362
|
+
/**
|
|
363
|
+
* The `near` property of the camera as a uniform.
|
|
364
|
+
*
|
|
365
|
+
* @private
|
|
366
|
+
* @type {UniformNode}
|
|
367
|
+
*/
|
|
134
368
|
this._cameraNear = uniform( 0 );
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* The `far` property of the camera as a uniform.
|
|
372
|
+
*
|
|
373
|
+
* @private
|
|
374
|
+
* @type {UniformNode}
|
|
375
|
+
*/
|
|
135
376
|
this._cameraFar = uniform( 0 );
|
|
136
377
|
|
|
378
|
+
/**
|
|
379
|
+
* A MRT node configuring the MRT settings.
|
|
380
|
+
*
|
|
381
|
+
* @private
|
|
382
|
+
* @type {?MRTNode}
|
|
383
|
+
* @default null
|
|
384
|
+
*/
|
|
137
385
|
this._mrt = null;
|
|
138
386
|
|
|
387
|
+
/**
|
|
388
|
+
* Layer object for configuring the camera that is used
|
|
389
|
+
* to produce the pass.
|
|
390
|
+
*
|
|
391
|
+
* @private
|
|
392
|
+
* @type {?Layers}
|
|
393
|
+
* @default null
|
|
394
|
+
*/
|
|
395
|
+
this._layers = null;
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Scales the resolution of the internal render target.
|
|
399
|
+
*
|
|
400
|
+
* @private
|
|
401
|
+
* @type {number}
|
|
402
|
+
* @default 1
|
|
403
|
+
*/
|
|
404
|
+
this._resolutionScale = 1;
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Custom viewport definition.
|
|
408
|
+
*
|
|
409
|
+
* @private
|
|
410
|
+
* @type {?Vector4}
|
|
411
|
+
* @default null
|
|
412
|
+
*/
|
|
413
|
+
this._viewport = null;
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Custom scissor definition.
|
|
417
|
+
*
|
|
418
|
+
* @private
|
|
419
|
+
* @type {?Vector4}
|
|
420
|
+
* @default null
|
|
421
|
+
*/
|
|
422
|
+
this._scissor = null;
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* This flag can be used for type testing.
|
|
426
|
+
*
|
|
427
|
+
* @type {boolean}
|
|
428
|
+
* @readonly
|
|
429
|
+
* @default true
|
|
430
|
+
*/
|
|
139
431
|
this.isPassNode = true;
|
|
140
432
|
|
|
433
|
+
/**
|
|
434
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
|
|
435
|
+
* scene once per frame in its {@link PassNode#updateBefore} method.
|
|
436
|
+
*
|
|
437
|
+
* @type {string}
|
|
438
|
+
* @default 'frame'
|
|
439
|
+
*/
|
|
440
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* This flag is used for global cache.
|
|
444
|
+
*
|
|
445
|
+
* @type {boolean}
|
|
446
|
+
* @default true
|
|
447
|
+
*/
|
|
448
|
+
this.global = true;
|
|
449
|
+
|
|
141
450
|
}
|
|
142
451
|
|
|
143
|
-
|
|
452
|
+
/**
|
|
453
|
+
* Sets the resolution scale for the pass.
|
|
454
|
+
* The resolution scale is a factor that is multiplied with the renderer's width and height.
|
|
455
|
+
*
|
|
456
|
+
* @param {number} resolutionScale - The resolution scale to set. A value of `1` means full resolution.
|
|
457
|
+
* @return {PassNode} A reference to this pass.
|
|
458
|
+
*/
|
|
459
|
+
setResolutionScale( resolutionScale ) {
|
|
144
460
|
|
|
145
|
-
this.
|
|
461
|
+
this._resolutionScale = resolutionScale;
|
|
146
462
|
|
|
147
463
|
return this;
|
|
148
464
|
|
|
149
465
|
}
|
|
150
466
|
|
|
151
|
-
|
|
467
|
+
/**
|
|
468
|
+
* Gets the current resolution scale of the pass.
|
|
469
|
+
*
|
|
470
|
+
* @return {number} The current resolution scale. A value of `1` means full resolution.
|
|
471
|
+
*/
|
|
472
|
+
getResolutionScale() {
|
|
152
473
|
|
|
153
|
-
return this.
|
|
474
|
+
return this._resolutionScale;
|
|
475
|
+
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Sets the resolution for the pass.
|
|
480
|
+
* The resolution is a factor that is multiplied with the renderer's width and height.
|
|
481
|
+
*
|
|
482
|
+
* @param {number} resolution - The resolution to set. A value of `1` means full resolution.
|
|
483
|
+
* @return {PassNode} A reference to this pass.
|
|
484
|
+
* @deprecated since r181. Use {@link PassNode#setResolutionScale `setResolutionScale()`} instead.
|
|
485
|
+
*/
|
|
486
|
+
setResolution( resolution ) { // @deprecated, r181
|
|
487
|
+
|
|
488
|
+
warn( 'PassNode: .setResolution() is deprecated. Use .setResolutionScale() instead.' );
|
|
489
|
+
|
|
490
|
+
return this.setResolutionScale( resolution );
|
|
491
|
+
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Gets the current resolution of the pass.
|
|
496
|
+
*
|
|
497
|
+
* @return {number} The current resolution. A value of `1` means full resolution.
|
|
498
|
+
* @deprecated since r181. Use {@link PassNode#getResolutionScale `getResolutionScale()`} instead.
|
|
499
|
+
*/
|
|
500
|
+
getResolution() { // @deprecated, r181
|
|
501
|
+
|
|
502
|
+
warn( 'PassNode: .getResolution() is deprecated. Use .getResolutionScale() instead.' );
|
|
503
|
+
|
|
504
|
+
return this.getResolutionScale();
|
|
154
505
|
|
|
155
506
|
}
|
|
156
507
|
|
|
157
|
-
|
|
508
|
+
/**
|
|
509
|
+
* Sets the layer configuration that should be used when rendering the pass.
|
|
510
|
+
*
|
|
511
|
+
* @param {Layers} layers - The layers object to set.
|
|
512
|
+
* @return {PassNode} A reference to this pass.
|
|
513
|
+
*/
|
|
514
|
+
setLayers( layers ) {
|
|
158
515
|
|
|
159
|
-
|
|
516
|
+
this._layers = layers;
|
|
517
|
+
|
|
518
|
+
return this;
|
|
160
519
|
|
|
161
520
|
}
|
|
162
521
|
|
|
522
|
+
/**
|
|
523
|
+
* Gets the current layer configuration of the pass.
|
|
524
|
+
*
|
|
525
|
+
* @return {?Layers} .
|
|
526
|
+
*/
|
|
527
|
+
getLayers() {
|
|
528
|
+
|
|
529
|
+
return this._layers;
|
|
530
|
+
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Sets the given MRT node to setup MRT for this pass.
|
|
535
|
+
*
|
|
536
|
+
* @param {MRTNode} mrt - The MRT object.
|
|
537
|
+
* @return {PassNode} A reference to this pass.
|
|
538
|
+
*/
|
|
539
|
+
setMRT( mrt ) {
|
|
540
|
+
|
|
541
|
+
this._mrt = mrt;
|
|
542
|
+
|
|
543
|
+
return this;
|
|
544
|
+
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* Returns the current MRT node.
|
|
549
|
+
*
|
|
550
|
+
* @return {MRTNode} The current MRT node.
|
|
551
|
+
*/
|
|
552
|
+
getMRT() {
|
|
553
|
+
|
|
554
|
+
return this._mrt;
|
|
555
|
+
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Returns the texture for the given output name.
|
|
560
|
+
*
|
|
561
|
+
* @param {string} name - The output name to get the texture for.
|
|
562
|
+
* @return {Texture} The texture.
|
|
563
|
+
*/
|
|
163
564
|
getTexture( name ) {
|
|
164
565
|
|
|
165
566
|
let texture = this._textures[ name ];
|
|
@@ -169,7 +570,6 @@ class PassNode extends TempNode {
|
|
|
169
570
|
const refTexture = this.renderTarget.texture;
|
|
170
571
|
|
|
171
572
|
texture = refTexture.clone();
|
|
172
|
-
texture.isRenderTargetTexture = true;
|
|
173
573
|
texture.name = name;
|
|
174
574
|
|
|
175
575
|
this._textures[ name ] = texture;
|
|
@@ -182,6 +582,12 @@ class PassNode extends TempNode {
|
|
|
182
582
|
|
|
183
583
|
}
|
|
184
584
|
|
|
585
|
+
/**
|
|
586
|
+
* Returns the texture holding the data of the previous frame for the given output name.
|
|
587
|
+
*
|
|
588
|
+
* @param {string} name - The output name to get the texture for.
|
|
589
|
+
* @return {Texture} The texture holding the data of the previous frame.
|
|
590
|
+
*/
|
|
185
591
|
getPreviousTexture( name ) {
|
|
186
592
|
|
|
187
593
|
let texture = this._previousTextures[ name ];
|
|
@@ -189,7 +595,6 @@ class PassNode extends TempNode {
|
|
|
189
595
|
if ( texture === undefined ) {
|
|
190
596
|
|
|
191
597
|
texture = this.getTexture( name ).clone();
|
|
192
|
-
texture.isRenderTargetTexture = true;
|
|
193
598
|
|
|
194
599
|
this._previousTextures[ name ] = texture;
|
|
195
600
|
|
|
@@ -199,6 +604,11 @@ class PassNode extends TempNode {
|
|
|
199
604
|
|
|
200
605
|
}
|
|
201
606
|
|
|
607
|
+
/**
|
|
608
|
+
* Switches current and previous textures for the given output name.
|
|
609
|
+
*
|
|
610
|
+
* @param {string} name - The output name.
|
|
611
|
+
*/
|
|
202
612
|
toggleTexture( name ) {
|
|
203
613
|
|
|
204
614
|
const prevTexture = this._previousTextures[ name ];
|
|
@@ -220,14 +630,21 @@ class PassNode extends TempNode {
|
|
|
220
630
|
|
|
221
631
|
}
|
|
222
632
|
|
|
633
|
+
/**
|
|
634
|
+
* Returns the texture node for the given output name.
|
|
635
|
+
*
|
|
636
|
+
* @param {string} [name='output'] - The output name to get the texture node for.
|
|
637
|
+
* @return {TextureNode} The texture node.
|
|
638
|
+
*/
|
|
223
639
|
getTextureNode( name = 'output' ) {
|
|
224
640
|
|
|
225
641
|
let textureNode = this._textureNodes[ name ];
|
|
226
642
|
|
|
227
643
|
if ( textureNode === undefined ) {
|
|
228
644
|
|
|
229
|
-
|
|
230
|
-
|
|
645
|
+
textureNode = new PassMultipleTextureNode( this, name );
|
|
646
|
+
textureNode.updateTexture();
|
|
647
|
+
this._textureNodes[ name ] = textureNode;
|
|
231
648
|
|
|
232
649
|
}
|
|
233
650
|
|
|
@@ -235,6 +652,12 @@ class PassNode extends TempNode {
|
|
|
235
652
|
|
|
236
653
|
}
|
|
237
654
|
|
|
655
|
+
/**
|
|
656
|
+
* Returns the previous texture node for the given output name.
|
|
657
|
+
*
|
|
658
|
+
* @param {string} [name='output'] - The output name to get the previous texture node for.
|
|
659
|
+
* @return {TextureNode} The previous texture node.
|
|
660
|
+
*/
|
|
238
661
|
getPreviousTextureNode( name = 'output' ) {
|
|
239
662
|
|
|
240
663
|
let textureNode = this._previousTextureNodes[ name ];
|
|
@@ -243,8 +666,9 @@ class PassNode extends TempNode {
|
|
|
243
666
|
|
|
244
667
|
if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name );
|
|
245
668
|
|
|
246
|
-
|
|
247
|
-
|
|
669
|
+
textureNode = new PassMultipleTextureNode( this, name, true );
|
|
670
|
+
textureNode.updateTexture();
|
|
671
|
+
this._previousTextureNodes[ name ] = textureNode;
|
|
248
672
|
|
|
249
673
|
}
|
|
250
674
|
|
|
@@ -252,6 +676,12 @@ class PassNode extends TempNode {
|
|
|
252
676
|
|
|
253
677
|
}
|
|
254
678
|
|
|
679
|
+
/**
|
|
680
|
+
* Returns a viewZ node of this pass.
|
|
681
|
+
*
|
|
682
|
+
* @param {string} [name='depth'] - The output name to get the viewZ node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
|
|
683
|
+
* @return {Node} The viewZ node.
|
|
684
|
+
*/
|
|
255
685
|
getViewZNode( name = 'depth' ) {
|
|
256
686
|
|
|
257
687
|
let viewZNode = this._viewZNodes[ name ];
|
|
@@ -269,6 +699,12 @@ class PassNode extends TempNode {
|
|
|
269
699
|
|
|
270
700
|
}
|
|
271
701
|
|
|
702
|
+
/**
|
|
703
|
+
* Returns a linear depth node of this pass.
|
|
704
|
+
*
|
|
705
|
+
* @param {string} [name='depth'] - The output name to get the linear depth node for. In most cases the default `'depth'` can be used however the parameter exists for custom depth outputs.
|
|
706
|
+
* @return {Node} The linear depth node.
|
|
707
|
+
*/
|
|
272
708
|
getLinearDepthNode( name = 'depth' ) {
|
|
273
709
|
|
|
274
710
|
let linearDepthNode = this._linearDepthNodes[ name ];
|
|
@@ -289,18 +725,37 @@ class PassNode extends TempNode {
|
|
|
289
725
|
|
|
290
726
|
}
|
|
291
727
|
|
|
292
|
-
|
|
728
|
+
/**
|
|
729
|
+
* Precompiles the pass.
|
|
730
|
+
*
|
|
731
|
+
* Note that this method must be called after the pass configuration is complete.
|
|
732
|
+
* So calls like `setMRT()` and `getTextureNode()` must proceed the precompilation.
|
|
733
|
+
*
|
|
734
|
+
* @async
|
|
735
|
+
* @param {Renderer} renderer - The renderer.
|
|
736
|
+
* @return {Promise} A Promise that resolves when the compile has been finished.
|
|
737
|
+
* @see {@link Renderer#compileAsync}
|
|
738
|
+
*/
|
|
739
|
+
async compileAsync( renderer ) {
|
|
293
740
|
|
|
294
|
-
|
|
741
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
|
742
|
+
const currentMRT = renderer.getMRT();
|
|
295
743
|
|
|
296
|
-
|
|
297
|
-
|
|
744
|
+
renderer.setRenderTarget( this.renderTarget );
|
|
745
|
+
renderer.setMRT( this._mrt );
|
|
298
746
|
|
|
299
|
-
|
|
747
|
+
await renderer.compileAsync( this.scene, this.camera );
|
|
300
748
|
|
|
301
|
-
|
|
749
|
+
renderer.setRenderTarget( currentRenderTarget );
|
|
750
|
+
renderer.setMRT( currentMRT );
|
|
751
|
+
|
|
752
|
+
}
|
|
302
753
|
|
|
303
|
-
|
|
754
|
+
setup( { renderer } ) {
|
|
755
|
+
|
|
756
|
+
this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
|
|
757
|
+
|
|
758
|
+
this.renderTarget.texture.type = renderer.getOutputBufferType();
|
|
304
759
|
|
|
305
760
|
return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
|
|
306
761
|
|
|
@@ -309,48 +764,205 @@ class PassNode extends TempNode {
|
|
|
309
764
|
updateBefore( frame ) {
|
|
310
765
|
|
|
311
766
|
const { renderer } = frame;
|
|
312
|
-
const { scene
|
|
767
|
+
const { scene } = this;
|
|
768
|
+
|
|
769
|
+
let camera;
|
|
770
|
+
let pixelRatio;
|
|
771
|
+
|
|
772
|
+
const outputRenderTarget = renderer.getOutputRenderTarget();
|
|
773
|
+
|
|
774
|
+
if ( outputRenderTarget && outputRenderTarget.isXRRenderTarget === true ) {
|
|
775
|
+
|
|
776
|
+
pixelRatio = 1;
|
|
777
|
+
camera = renderer.xr.getCamera();
|
|
778
|
+
|
|
779
|
+
renderer.xr.updateCamera( camera );
|
|
313
780
|
|
|
314
|
-
|
|
781
|
+
_size.set( outputRenderTarget.width, outputRenderTarget.height );
|
|
315
782
|
|
|
316
|
-
|
|
783
|
+
} else {
|
|
317
784
|
|
|
318
|
-
|
|
785
|
+
camera = this.camera;
|
|
786
|
+
pixelRatio = renderer.getPixelRatio();
|
|
787
|
+
|
|
788
|
+
renderer.getSize( _size );
|
|
789
|
+
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
this._pixelRatio = pixelRatio;
|
|
793
|
+
|
|
794
|
+
this.setSize( _size.width, _size.height );
|
|
319
795
|
|
|
320
796
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
321
797
|
const currentMRT = renderer.getMRT();
|
|
798
|
+
const currentAutoClear = renderer.autoClear;
|
|
799
|
+
const currentTransparent = renderer.transparent;
|
|
800
|
+
const currentOpaque = renderer.opaque;
|
|
801
|
+
const currentMask = camera.layers.mask;
|
|
802
|
+
const currentContextNode = renderer.contextNode;
|
|
803
|
+
const currentOverrideMaterial = scene.overrideMaterial;
|
|
322
804
|
|
|
323
805
|
this._cameraNear.value = camera.near;
|
|
324
806
|
this._cameraFar.value = camera.far;
|
|
325
807
|
|
|
808
|
+
if ( this._layers !== null ) {
|
|
809
|
+
|
|
810
|
+
camera.layers.mask = this._layers.mask;
|
|
811
|
+
|
|
812
|
+
}
|
|
813
|
+
|
|
326
814
|
for ( const name in this._previousTextures ) {
|
|
327
815
|
|
|
328
816
|
this.toggleTexture( name );
|
|
329
817
|
|
|
330
818
|
}
|
|
331
819
|
|
|
820
|
+
if ( this.overrideMaterial !== null ) {
|
|
821
|
+
|
|
822
|
+
scene.overrideMaterial = this.overrideMaterial;
|
|
823
|
+
|
|
824
|
+
}
|
|
825
|
+
|
|
332
826
|
renderer.setRenderTarget( this.renderTarget );
|
|
333
827
|
renderer.setMRT( this._mrt );
|
|
828
|
+
renderer.autoClear = true;
|
|
829
|
+
renderer.transparent = this.transparent;
|
|
830
|
+
renderer.opaque = this.opaque;
|
|
831
|
+
|
|
832
|
+
if ( this.contextNode !== null ) {
|
|
833
|
+
|
|
834
|
+
if ( this._contextNodeCache === null || this._contextNodeCache.version !== this.version ) {
|
|
835
|
+
|
|
836
|
+
this._contextNodeCache = {
|
|
837
|
+
version: this.version,
|
|
838
|
+
context: context( { ...renderer.contextNode.getFlowContextData(), ...this.contextNode.getFlowContextData() } )
|
|
839
|
+
};
|
|
840
|
+
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
renderer.contextNode = this._contextNodeCache.context;
|
|
844
|
+
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
const currentSceneName = scene.name;
|
|
848
|
+
|
|
849
|
+
scene.name = this.name ? this.name : scene.name;
|
|
334
850
|
|
|
335
851
|
renderer.render( scene, camera );
|
|
336
852
|
|
|
853
|
+
scene.name = currentSceneName;
|
|
854
|
+
scene.overrideMaterial = currentOverrideMaterial;
|
|
855
|
+
|
|
337
856
|
renderer.setRenderTarget( currentRenderTarget );
|
|
338
857
|
renderer.setMRT( currentMRT );
|
|
858
|
+
renderer.autoClear = currentAutoClear;
|
|
859
|
+
renderer.transparent = currentTransparent;
|
|
860
|
+
renderer.opaque = currentOpaque;
|
|
861
|
+
renderer.contextNode = currentContextNode;
|
|
862
|
+
|
|
863
|
+
camera.layers.mask = currentMask;
|
|
339
864
|
|
|
340
865
|
}
|
|
341
866
|
|
|
867
|
+
/**
|
|
868
|
+
* Sets the size of the pass's render target. Honors the pixel ratio.
|
|
869
|
+
*
|
|
870
|
+
* @param {number} width - The width to set.
|
|
871
|
+
* @param {number} height - The height to set.
|
|
872
|
+
*/
|
|
342
873
|
setSize( width, height ) {
|
|
343
874
|
|
|
344
875
|
this._width = width;
|
|
345
876
|
this._height = height;
|
|
346
877
|
|
|
347
|
-
const effectiveWidth = this._width * this._pixelRatio;
|
|
348
|
-
const effectiveHeight = this._height * this._pixelRatio;
|
|
878
|
+
const effectiveWidth = Math.floor( this._width * this._pixelRatio * this._resolutionScale );
|
|
879
|
+
const effectiveHeight = Math.floor( this._height * this._pixelRatio * this._resolutionScale );
|
|
349
880
|
|
|
350
881
|
this.renderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
351
882
|
|
|
883
|
+
if ( this._scissor !== null ) this.renderTarget.scissor.copy( this._scissor );
|
|
884
|
+
if ( this._viewport !== null ) this.renderTarget.viewport.copy( this._viewport );
|
|
885
|
+
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* This method allows to define the pass's scissor rectangle. By default, the scissor rectangle is kept
|
|
890
|
+
* in sync with the pass's dimensions. To reverse the process and use auto-sizing again, call the method
|
|
891
|
+
* with `null` as the single argument.
|
|
892
|
+
*
|
|
893
|
+
* @param {?(number | Vector4)} x - The horizontal coordinate for the lower left corner of the box in logical pixel unit.
|
|
894
|
+
* Instead of passing four arguments, the method also works with a single four-dimensional vector.
|
|
895
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the box in logical pixel unit.
|
|
896
|
+
* @param {number} width - The width of the scissor box in logical pixel unit.
|
|
897
|
+
* @param {number} height - The height of the scissor box in logical pixel unit.
|
|
898
|
+
*/
|
|
899
|
+
setScissor( x, y, width, height ) {
|
|
900
|
+
|
|
901
|
+
if ( x === null ) {
|
|
902
|
+
|
|
903
|
+
this._scissor = null;
|
|
904
|
+
|
|
905
|
+
} else {
|
|
906
|
+
|
|
907
|
+
if ( this._scissor === null ) this._scissor = new Vector4();
|
|
908
|
+
|
|
909
|
+
if ( x.isVector4 ) {
|
|
910
|
+
|
|
911
|
+
this._scissor.copy( x );
|
|
912
|
+
|
|
913
|
+
} else {
|
|
914
|
+
|
|
915
|
+
this._scissor.set( x, y, width, height );
|
|
916
|
+
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
this._scissor.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
920
|
+
|
|
921
|
+
}
|
|
922
|
+
|
|
352
923
|
}
|
|
353
924
|
|
|
925
|
+
/**
|
|
926
|
+
* This method allows to define the pass's viewport. By default, the viewport is kept in sync
|
|
927
|
+
* with the pass's dimensions. To reverse the process and use auto-sizing again, call the method
|
|
928
|
+
* with `null` as the single argument.
|
|
929
|
+
*
|
|
930
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
931
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
932
|
+
* @param {number} width - The width of the viewport in logical pixel unit.
|
|
933
|
+
* @param {number} height - The height of the viewport in logical pixel unit.
|
|
934
|
+
*/
|
|
935
|
+
setViewport( x, y, width, height ) {
|
|
936
|
+
|
|
937
|
+
if ( x === null ) {
|
|
938
|
+
|
|
939
|
+
this._viewport = null;
|
|
940
|
+
|
|
941
|
+
} else {
|
|
942
|
+
|
|
943
|
+
if ( this._viewport === null ) this._viewport = new Vector4();
|
|
944
|
+
|
|
945
|
+
if ( x.isVector4 ) {
|
|
946
|
+
|
|
947
|
+
this._viewport.copy( x );
|
|
948
|
+
|
|
949
|
+
} else {
|
|
950
|
+
|
|
951
|
+
this._viewport.set( x, y, width, height );
|
|
952
|
+
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
this._viewport.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
956
|
+
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
/**
|
|
962
|
+
* Sets the pixel ratio the pass's render target and updates the size.
|
|
963
|
+
*
|
|
964
|
+
* @param {number} pixelRatio - The pixel ratio to set.
|
|
965
|
+
*/
|
|
354
966
|
setPixelRatio( pixelRatio ) {
|
|
355
967
|
|
|
356
968
|
this._pixelRatio = pixelRatio;
|
|
@@ -359,6 +971,9 @@ class PassNode extends TempNode {
|
|
|
359
971
|
|
|
360
972
|
}
|
|
361
973
|
|
|
974
|
+
/**
|
|
975
|
+
* Frees internal resources. Should be called when the node is no longer in use.
|
|
976
|
+
*/
|
|
362
977
|
dispose() {
|
|
363
978
|
|
|
364
979
|
this.renderTarget.dispose();
|
|
@@ -368,11 +983,53 @@ class PassNode extends TempNode {
|
|
|
368
983
|
|
|
369
984
|
}
|
|
370
985
|
|
|
986
|
+
/**
|
|
987
|
+
* @static
|
|
988
|
+
* @type {'color'}
|
|
989
|
+
* @default 'color'
|
|
990
|
+
*/
|
|
371
991
|
PassNode.COLOR = 'color';
|
|
992
|
+
|
|
993
|
+
/**
|
|
994
|
+
* @static
|
|
995
|
+
* @type {'depth'}
|
|
996
|
+
* @default 'depth'
|
|
997
|
+
*/
|
|
372
998
|
PassNode.DEPTH = 'depth';
|
|
373
999
|
|
|
374
1000
|
export default PassNode;
|
|
375
1001
|
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
1002
|
+
/**
|
|
1003
|
+
* TSL function for creating a pass node.
|
|
1004
|
+
*
|
|
1005
|
+
* @tsl
|
|
1006
|
+
* @function
|
|
1007
|
+
* @param {Scene} scene - A reference to the scene.
|
|
1008
|
+
* @param {Camera} camera - A reference to the camera.
|
|
1009
|
+
* @param {Object} options - Options for the internal render target.
|
|
1010
|
+
* @returns {PassNode}
|
|
1011
|
+
*/
|
|
1012
|
+
export const pass = ( scene, camera, options ) => new PassNode( PassNode.COLOR, scene, camera, options );
|
|
1013
|
+
|
|
1014
|
+
/**
|
|
1015
|
+
* TSL function for creating a pass texture node.
|
|
1016
|
+
*
|
|
1017
|
+
* @tsl
|
|
1018
|
+
* @function
|
|
1019
|
+
* @param {PassNode} pass - The pass node.
|
|
1020
|
+
* @param {Texture} texture - The output texture.
|
|
1021
|
+
* @returns {PassTextureNode}
|
|
1022
|
+
*/
|
|
1023
|
+
export const passTexture = ( pass, texture ) => new PassTextureNode( pass, texture );
|
|
1024
|
+
|
|
1025
|
+
/**
|
|
1026
|
+
* TSL function for creating a depth pass node.
|
|
1027
|
+
*
|
|
1028
|
+
* @tsl
|
|
1029
|
+
* @function
|
|
1030
|
+
* @param {Scene} scene - A reference to the scene.
|
|
1031
|
+
* @param {Camera} camera - A reference to the camera.
|
|
1032
|
+
* @param {Object} options - Options for the internal render target.
|
|
1033
|
+
* @returns {PassNode}
|
|
1034
|
+
*/
|
|
1035
|
+
export const depthPass = ( scene, camera, options ) => new PassNode( PassNode.DEPTH, scene, camera, options );
|