@plastic-software/three 0.167.3 → 0.174.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 +1 -1
- package/build/three.cjs +36277 -24023
- package/build/three.core.js +48830 -0
- package/build/three.core.min.js +6 -0
- package/build/three.module.js +10175 -46743
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +550 -0
- package/build/three.tsl.min.js +6 -0
- package/build/three.webgpu.js +44348 -50670
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +70301 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +3 -15
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +61 -11
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/capabilities/WebGPU.js +1 -10
- package/examples/jsm/controls/ArcballControls.js +262 -231
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +801 -777
- package/examples/jsm/controls/PointerLockControls.js +26 -20
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +119 -68
- package/examples/jsm/csm/CSM.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +7 -4
- package/examples/jsm/csm/CSMHelper.js +2 -0
- package/examples/jsm/csm/CSMShadowNode.js +442 -0
- package/examples/jsm/curves/NURBSCurve.js +33 -2
- package/examples/jsm/curves/NURBSUtils.js +3 -0
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/OutlineEffect.js +1 -1
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +181 -109
- package/examples/jsm/exporters/KTX2Exporter.js +54 -23
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +11 -9
- package/examples/jsm/exporters/USDZExporter.js +50 -11
- package/examples/jsm/geometries/DecalGeometry.js +73 -21
- package/examples/jsm/geometries/TextGeometry.js +1 -12
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
- package/examples/jsm/interactive/HTMLMesh.js +1 -0
- package/examples/jsm/interactive/InteractiveGroup.js +108 -51
- package/examples/jsm/interactive/SelectionHelper.js +3 -1
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +18 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -12
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/LineGeometry.js +25 -0
- package/examples/jsm/lines/LineMaterial.js +0 -1
- package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
- package/examples/jsm/lines/webgpu/Line2.js +2 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
- package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -0
- package/examples/jsm/loaders/3MFLoader.js +104 -2
- package/examples/jsm/loaders/BVHLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +15 -12
- package/examples/jsm/loaders/DDSLoader.js +42 -0
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +71 -22
- package/examples/jsm/loaders/GCodeLoader.js +4 -2
- package/examples/jsm/loaders/GLTFLoader.js +29 -14
- package/examples/jsm/loaders/KTX2Loader.js +160 -58
- package/examples/jsm/loaders/KTXLoader.js +4 -4
- package/examples/jsm/loaders/LDrawLoader.js +22 -136
- package/examples/jsm/loaders/LottieLoader.js +2 -1
- package/examples/jsm/loaders/MTLLoader.js +27 -7
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/NRRDLoader.js +1 -1
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +15 -12
- package/examples/jsm/loaders/PVRLoader.js +1 -1
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TDSLoader.js +17 -18
- package/examples/jsm/loaders/VRMLLoader.js +17 -17
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/ColorSpaces.js +76 -0
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/OBB.js +17 -0
- package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
- package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
- package/examples/jsm/misc/Timer.js +27 -12
- package/examples/jsm/misc/Volume.js +28 -18
- package/examples/jsm/misc/VolumeSlice.js +19 -16
- package/examples/jsm/modifiers/CurveModifier.js +10 -8
- package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
- package/examples/jsm/objects/GroundedSkybox.js +4 -4
- package/examples/jsm/objects/LensflareMesh.js +324 -0
- package/examples/jsm/objects/Reflector.js +5 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/SkyMesh.js +14 -14
- package/examples/jsm/objects/Water2.js +1 -1
- package/examples/jsm/objects/Water2Mesh.js +11 -9
- package/examples/jsm/objects/WaterMesh.js +38 -33
- package/examples/jsm/physics/JoltPhysics.js +8 -8
- package/examples/jsm/physics/RapierPhysics.js +5 -5
- package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
- package/examples/jsm/postprocessing/BloomPass.js +2 -2
- package/examples/jsm/postprocessing/EffectComposer.js +1 -2
- package/examples/jsm/postprocessing/OutlinePass.js +37 -51
- package/examples/jsm/postprocessing/OutputPass.js +2 -0
- package/examples/jsm/postprocessing/SAOPass.js +1 -2
- package/examples/jsm/postprocessing/SMAAPass.js +1 -3
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/postprocessing/SSAOPass.js +2 -4
- package/examples/jsm/postprocessing/SSRPass.js +8 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
- package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
- package/examples/jsm/renderers/SVGRenderer.js +6 -4
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/FXAAShader.js +225 -224
- package/examples/jsm/shaders/GodRaysShader.js +3 -3
- package/examples/jsm/shaders/OutputShader.js +6 -2
- package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +12 -2
- package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
- package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/examples/jsm/transpiler/TSLEncoder.js +96 -21
- package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
- package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
- package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
- package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
- package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
- package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
- package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
- package/examples/jsm/tsl/display/FXAANode.js +364 -0
- package/examples/jsm/tsl/display/FilmNode.js +100 -0
- package/examples/jsm/tsl/display/GTAONode.js +521 -0
- package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
- package/examples/jsm/tsl/display/LensflareNode.js +278 -0
- package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
- package/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/examples/jsm/tsl/display/OutlineNode.js +750 -0
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
- package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
- package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
- package/examples/jsm/tsl/display/SMAANode.js +767 -0
- package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
- package/examples/jsm/tsl/display/SSRNode.js +538 -0
- package/examples/jsm/tsl/display/Sepia.js +24 -0
- package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
- package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
- package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
- package/examples/jsm/tsl/display/TransitionNode.js +140 -0
- package/examples/jsm/tsl/display/hashBlur.js +34 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
- package/examples/jsm/tsl/math/Bayer.js +18 -0
- package/examples/jsm/tsl/utils/Raymarching.js +65 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
- package/examples/jsm/utils/CameraUtils.js +4 -1
- package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
- package/examples/jsm/utils/GeometryUtils.js +22 -19
- package/examples/jsm/utils/SceneOptimizer.js +410 -0
- package/examples/jsm/utils/SceneUtils.js +2 -2
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/UVsDebug.js +1 -1
- package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
- package/examples/jsm/webxr/Text2D.js +6 -6
- package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +14 -9
- package/src/Three.Core.js +182 -0
- package/src/Three.Legacy.js +0 -21
- package/src/Three.TSL.js +543 -0
- package/src/Three.WebGPU.Nodes.js +23 -0
- package/src/Three.WebGPU.js +13 -184
- package/src/Three.js +1 -176
- package/src/animation/AnimationClip.js +2 -2
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/AnimationUtils.js +1 -1
- package/src/animation/PropertyBinding.js +2 -2
- package/src/audio/Audio.js +379 -2
- 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 +29 -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 +173 -34
- package/src/cameras/StereoCamera.js +48 -2
- package/src/constants.js +6 -6
- package/src/core/BufferAttribute.js +4 -9
- package/src/core/BufferGeometry.js +48 -8
- package/src/core/Clock.js +1 -1
- package/src/core/EventDispatcher.js +52 -8
- package/src/core/InterleavedBuffer.js +4 -13
- package/src/core/Object3D.js +573 -3
- package/src/core/RenderTarget.js +22 -4
- package/src/core/RenderTarget3D.js +22 -0
- package/src/core/RenderTargetArray.js +22 -0
- package/src/extras/Controls.js +104 -0
- package/src/extras/DataUtils.js +48 -8
- package/src/extras/Earcut.js +18 -7
- package/src/extras/ImageUtils.js +18 -11
- package/src/extras/PMREMGenerator.js +40 -9
- package/src/extras/ShapeUtils.js +24 -2
- package/src/extras/TextureUtils.js +96 -10
- package/src/extras/core/Curve.js +153 -53
- 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 +66 -3
- 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/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 +50 -4
- package/src/geometries/DodecahedronGeometry.js +32 -0
- package/src/geometries/EdgesGeometry.js +30 -2
- package/src/geometries/ExtrudeGeometry.js +52 -0
- package/src/geometries/IcosahedronGeometry.js +32 -0
- package/src/geometries/LatheGeometry.js +43 -3
- 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 +61 -18
- 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 +24 -2
- package/src/lights/webgpu/IESSpotLight.js +21 -0
- package/src/loaders/Loader.js +132 -0
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +189 -0
- package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/src/materials/LineDashedMaterial.js +0 -1
- package/src/materials/Material.js +469 -7
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -2
- package/src/materials/MeshStandardMaterial.js +2 -2
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
- package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
- package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
- package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/src/materials/nodes/NodeMaterial.js +1180 -0
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
- package/src/materials/nodes/PointsNodeMaterial.js +153 -0
- package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
- package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
- package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
- package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
- package/src/math/Box2.js +177 -0
- package/src/math/Box3.js +243 -0
- package/src/math/Color.js +343 -0
- package/src/math/ColorManagement.js +143 -102
- 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 +96 -2
- package/src/math/MathUtils.js +182 -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 +265 -9
- package/src/math/Ray.js +160 -0
- package/src/math/Sphere.js +147 -0
- package/src/math/Spherical.js +73 -11
- package/src/math/SphericalHarmonics3.js +112 -14
- package/src/math/Triangle.js +230 -2
- package/src/math/Vector2.js +396 -10
- package/src/math/Vector3.js +550 -13
- package/src/math/Vector4.js +415 -9
- 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 +84 -166
- package/src/nodes/TSL.js +167 -0
- package/src/nodes/accessors/AccessorsUtils.js +39 -10
- package/src/nodes/accessors/Arrays.js +68 -0
- package/src/nodes/accessors/BatchNode.js +93 -26
- package/src/nodes/accessors/Bitangent.js +54 -0
- package/src/nodes/accessors/BufferAttributeNode.js +189 -11
- package/src/nodes/accessors/BufferNode.js +70 -5
- package/src/nodes/accessors/BuiltinNode.js +63 -0
- package/src/nodes/accessors/Camera.js +129 -0
- package/src/nodes/accessors/ClippingNode.js +152 -43
- package/src/nodes/accessors/CubeTextureNode.js +76 -13
- package/src/nodes/accessors/InstanceNode.js +118 -35
- package/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/src/nodes/accessors/Lights.js +129 -0
- package/src/nodes/accessors/MaterialNode.js +394 -58
- package/src/nodes/accessors/MaterialProperties.js +57 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
- package/src/nodes/accessors/ModelNode.js +159 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
- package/src/nodes/accessors/MorphNode.js +60 -13
- package/src/nodes/accessors/Normal.js +156 -0
- package/src/nodes/accessors/Object3DNode.js +154 -35
- package/src/nodes/accessors/PointUVNode.js +35 -6
- package/src/nodes/accessors/Position.js +64 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/src/nodes/accessors/ReferenceNode.js +243 -6
- package/src/nodes/accessors/ReflectVector.js +36 -0
- package/src/nodes/accessors/RendererReferenceNode.js +57 -7
- package/src/nodes/accessors/SceneNode.js +98 -6
- package/src/nodes/accessors/SkinningNode.js +214 -21
- package/src/nodes/accessors/StorageBufferNode.js +288 -28
- package/src/nodes/accessors/StorageTextureNode.js +139 -12
- package/src/nodes/accessors/Tangent.js +62 -0
- package/src/nodes/accessors/Texture3DNode.js +98 -12
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
- package/src/nodes/accessors/TextureNode.js +347 -34
- package/src/nodes/accessors/TextureSizeNode.js +51 -9
- package/src/nodes/accessors/UV.js +11 -0
- package/src/nodes/accessors/UniformArrayNode.js +241 -32
- package/src/nodes/accessors/UserDataNode.js +55 -7
- package/src/nodes/accessors/VelocityNode.js +223 -0
- package/src/nodes/accessors/VertexColorNode.js +45 -6
- package/src/nodes/code/CodeNode.js +108 -8
- package/src/nodes/code/ExpressionNode.js +38 -7
- package/src/nodes/code/FunctionCallNode.js +62 -11
- package/src/nodes/code/FunctionNode.js +54 -24
- package/src/nodes/code/ScriptableNode.js +241 -17
- package/src/nodes/code/ScriptableValueNode.js +93 -8
- package/src/nodes/core/ArrayNode.js +142 -0
- package/src/nodes/core/AssignNode.js +60 -12
- package/src/nodes/core/AttributeNode.js +55 -22
- package/src/nodes/core/BypassNode.js +59 -11
- package/src/nodes/core/CacheNode.js +64 -10
- package/src/nodes/core/ConstNode.js +38 -3
- package/src/nodes/core/ContextNode.js +87 -12
- package/src/nodes/core/IndexNode.js +102 -10
- package/src/nodes/core/InputNode.js +55 -3
- package/src/nodes/core/LightingModel.js +65 -5
- package/src/nodes/core/MRTNode.js +81 -7
- package/src/nodes/core/Node.js +368 -50
- package/src/nodes/core/NodeAttribute.js +38 -0
- package/src/nodes/core/NodeBuilder.js +1317 -83
- package/src/nodes/core/NodeCache.js +41 -2
- package/src/nodes/core/NodeCode.js +31 -0
- package/src/nodes/core/NodeFrame.js +123 -2
- package/src/nodes/core/NodeFunction.js +46 -0
- package/src/nodes/core/NodeFunctionInput.js +44 -0
- package/src/nodes/core/NodeParser.js +11 -0
- package/src/nodes/core/NodeUniform.js +52 -0
- package/src/nodes/core/NodeUtils.js +226 -6
- package/src/nodes/core/NodeVar.js +47 -1
- package/src/nodes/core/NodeVarying.js +28 -0
- package/src/nodes/core/OutputStructNode.js +61 -17
- package/src/nodes/core/ParameterNode.js +34 -4
- package/src/nodes/core/PropertyNode.js +296 -32
- package/src/nodes/core/StackNode.js +108 -8
- package/src/nodes/core/StructNode.js +120 -0
- package/src/nodes/core/StructType.js +13 -0
- package/src/nodes/core/StructTypeNode.js +116 -9
- package/src/nodes/core/TempNode.js +37 -7
- package/src/nodes/core/UniformGroupNode.js +98 -17
- package/src/nodes/core/UniformNode.js +72 -4
- package/src/nodes/core/VarNode.js +170 -13
- package/src/nodes/core/VaryingNode.js +109 -8
- package/src/nodes/core/constants.js +40 -0
- package/src/nodes/display/BlendModes.js +193 -0
- package/src/nodes/display/BumpMapNode.js +47 -10
- package/src/nodes/display/ColorAdjustment.js +141 -0
- package/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/src/nodes/display/ColorSpaceNode.js +147 -68
- package/src/nodes/display/FrontFacingNode.js +39 -6
- package/src/nodes/display/NormalMapNode.js +55 -13
- package/src/nodes/display/PassNode.js +420 -19
- package/src/nodes/display/PosterizeNode.js +40 -7
- package/src/nodes/display/RenderOutputNode.js +81 -13
- package/src/nodes/display/ScreenNode.js +286 -0
- package/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/src/nodes/display/ToneMappingNode.js +68 -175
- package/src/nodes/display/ToonOutlinePassNode.js +183 -0
- package/src/nodes/display/ViewportDepthNode.js +210 -36
- package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
- package/src/nodes/display/ViewportTextureNode.js +68 -11
- package/src/nodes/fog/Fog.js +113 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +50 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +27 -6
- package/src/nodes/functions/PhongLightingModel.js +38 -8
- package/src/nodes/functions/PhysicalLightingModel.js +215 -51
- package/src/nodes/functions/ShadowMaskModel.js +24 -1
- package/src/nodes/functions/ToonLightingModel.js +24 -5
- 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/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +62 -7
- package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
- package/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
- package/src/nodes/gpgpu/ComputeNode.js +124 -9
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
- package/src/nodes/lighting/AONode.js +24 -3
- package/src/nodes/lighting/AmbientLightNode.js +16 -8
- package/src/nodes/lighting/AnalyticLightNode.js +151 -231
- package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
- package/src/nodes/lighting/BasicLightMapNode.js +25 -5
- package/src/nodes/lighting/DirectionalLightNode.js +19 -20
- package/src/nodes/lighting/EnvironmentNode.js +34 -17
- package/src/nodes/lighting/HemisphereLightNode.js +42 -11
- package/src/nodes/lighting/IESSpotLightNode.js +18 -9
- package/src/nodes/lighting/IrradianceNode.js +23 -3
- package/src/nodes/lighting/LightProbeNode.js +29 -36
- package/src/nodes/lighting/LightUtils.js +12 -4
- package/src/nodes/lighting/LightingContextNode.js +70 -21
- package/src/nodes/lighting/LightingNode.js +22 -9
- package/src/nodes/lighting/LightsNode.js +309 -86
- package/src/nodes/lighting/PointLightNode.js +66 -32
- package/src/nodes/lighting/PointShadowNode.js +306 -0
- package/src/nodes/lighting/RectAreaLightNode.js +61 -25
- package/src/nodes/lighting/ShadowBaseNode.js +92 -0
- package/src/nodes/lighting/ShadowNode.js +812 -0
- package/src/nodes/lighting/SpotLightNode.js +73 -31
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +27 -22
- package/src/nodes/materialx/lib/mx_noise.js +70 -70
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/ConditionalNode.js +230 -0
- package/src/nodes/math/Hash.js +21 -0
- package/src/nodes/math/MathNode.js +812 -131
- package/src/nodes/math/MathUtils.js +47 -8
- package/src/nodes/math/OperatorNode.js +410 -66
- package/src/nodes/math/TriNoise3D.js +32 -32
- package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
- package/src/nodes/parsers/GLSLNodeParser.js +11 -0
- package/src/nodes/pmrem/PMREMNode.js +188 -28
- package/src/nodes/pmrem/PMREMUtils.js +24 -24
- package/src/nodes/procedural/Checker.js +22 -0
- package/src/nodes/shapes/Shapes.js +32 -0
- package/src/nodes/tsl/TSLBase.js +31 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
- package/src/nodes/utils/ArrayElementNode.js +45 -5
- package/src/nodes/utils/ConvertNode.js +39 -4
- package/src/nodes/utils/CubeMapNode.js +88 -8
- package/src/nodes/utils/Discard.js +24 -0
- package/src/nodes/utils/EquirectUVNode.js +39 -7
- package/src/nodes/utils/FlipNode.js +106 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
- package/src/nodes/utils/JoinNode.js +31 -3
- package/src/nodes/utils/LoopNode.js +95 -9
- package/src/nodes/utils/MatcapUVNode.js +27 -8
- package/src/nodes/utils/MaxMipLevelNode.js +57 -6
- package/src/nodes/utils/MemberNode.js +68 -0
- package/src/nodes/utils/Oscillators.js +41 -0
- package/src/nodes/utils/Packing.js +21 -0
- package/src/nodes/utils/PostProcessingUtils.js +95 -0
- package/src/nodes/utils/RTTNode.js +141 -9
- package/src/nodes/utils/ReflectorNode.js +295 -21
- package/src/nodes/utils/RemapNode.js +93 -10
- package/src/nodes/utils/RotateNode.js +48 -13
- package/src/nodes/utils/SetNode.js +50 -4
- package/src/nodes/utils/SplitNode.js +62 -6
- package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
- package/src/nodes/utils/SpriteUtils.js +21 -5
- package/src/nodes/utils/StorageArrayElementNode.js +64 -12
- package/src/nodes/utils/Timer.js +73 -0
- package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
- package/src/nodes/utils/UVUtils.js +27 -9
- package/src/nodes/utils/ViewportUtils.js +16 -4
- package/src/objects/BatchedMesh.js +808 -281
- 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 +120 -2
- package/src/objects/LOD.js +120 -5
- package/src/objects/Line.js +89 -6
- package/src/objects/LineLoop.js +20 -0
- package/src/objects/LineSegments.js +18 -0
- package/src/objects/Mesh.js +82 -23
- package/src/objects/Points.js +62 -0
- package/src/objects/Skeleton.js +107 -2
- package/src/objects/SkinnedMesh.js +99 -5
- package/src/objects/Sprite.js +54 -0
- package/src/renderers/WebGLRenderer.js +274 -157
- package/src/renderers/common/Animation.js +109 -12
- package/src/renderers/common/Attributes.js +40 -0
- package/src/renderers/common/Backend.js +504 -44
- package/src/renderers/common/Background.js +67 -9
- package/src/renderers/common/BindGroup.js +45 -1
- package/src/renderers/common/Binding.js +35 -0
- package/src/renderers/common/Bindings.js +136 -19
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BufferUtils.js +25 -0
- package/src/renderers/common/BundleGroup.js +83 -0
- package/src/renderers/common/ChainMap.js +45 -6
- package/src/renderers/common/ClippingContext.js +175 -80
- 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 +22 -3
- package/src/renderers/common/DataMap.js +37 -1
- package/src/renderers/common/Geometries.js +111 -14
- package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/src/renderers/common/Info.js +78 -35
- package/src/renderers/common/Lighting.js +73 -0
- package/src/renderers/common/Pipeline.js +22 -0
- package/src/renderers/common/Pipelines.js +148 -5
- package/src/renderers/common/PostProcessing.js +112 -11
- package/src/renderers/common/ProgrammableStage.js +60 -2
- package/src/renderers/common/QuadMesh.js +56 -5
- package/src/renderers/common/RenderBundle.js +14 -8
- package/src/renderers/common/RenderBundles.js +39 -10
- package/src/renderers/common/RenderContext.js +205 -7
- package/src/renderers/common/RenderContexts.js +59 -6
- package/src/renderers/common/RenderList.js +230 -21
- package/src/renderers/common/RenderLists.js +45 -6
- package/src/renderers/common/RenderObject.js +552 -41
- package/src/renderers/common/RenderObjects.js +118 -9
- package/src/renderers/common/RenderPipeline.js +24 -0
- package/src/renderers/common/Renderer.js +1537 -239
- package/src/renderers/common/RendererUtils.js +191 -0
- package/src/renderers/common/SampledTexture.js +132 -3
- package/src/renderers/common/Sampler.js +30 -0
- package/src/renderers/common/StorageBuffer.js +24 -0
- package/src/renderers/common/StorageBufferAttribute.js +31 -2
- package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
- package/src/renderers/common/StorageTexture.js +38 -0
- package/src/renderers/common/Textures.js +142 -32
- package/src/renderers/common/TimestampQueryPool.js +98 -0
- package/src/renderers/common/Uniform.js +225 -3
- package/src/renderers/common/UniformBuffer.js +19 -0
- package/src/renderers/common/UniformsGroup.js +157 -6
- package/src/renderers/common/XRManager.js +1185 -0
- package/src/renderers/common/XRRenderTarget.js +74 -0
- package/src/renderers/common/extras/PMREMGenerator.js +211 -53
- package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
- package/src/renderers/common/nodes/NodeLibrary.js +194 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
- package/src/renderers/common/nodes/NodeSampler.js +28 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
- package/src/renderers/common/nodes/NodeUniform.js +285 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
- package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
- package/src/renderers/common/nodes/Nodes.js +390 -70
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
- package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
- package/src/renderers/shaders/ShaderLib/points.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLBackground.js +24 -1
- package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLCapabilities.js +2 -0
- package/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
- package/src/renderers/webgl/WebGLProgram.js +27 -29
- package/src/renderers/webgl/WebGLPrograms.js +24 -16
- package/src/renderers/webgl/WebGLState.js +68 -11
- package/src/renderers/webgl/WebGLTextures.js +49 -10
- package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
- package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
- package/src/renderers/webgpu/WebGPUBackend.js +816 -236
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
- package/src/renderers/webgpu/WebGPURenderer.js +45 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
- package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
- package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
- package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
- package/src/renderers/webxr/WebXRManager.js +54 -32
- package/src/scenes/Fog.js +60 -0
- package/src/scenes/FogExp2.js +51 -0
- package/src/scenes/Scene.js +87 -0
- package/src/textures/Data3DTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +368 -5
- package/src/textures/VideoFrameTexture.js +35 -0
- package/src/utils.js +33 -1
- 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/controls/Controls.js +0 -32
- package/examples/jsm/exporters/MMDExporter.js +0 -217
- package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/examples/jsm/loaders/MMDLoader.js +0 -2295
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/objects/InstancedPoints.js +0 -21
- package/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/accessors/BitangentNode.js +0 -13
- package/src/nodes/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/accessors/UVNode.js +0 -3
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/core/UniformGroup.js +0 -13
- package/src/nodes/display/AfterImageNode.js +0 -152
- package/src/nodes/display/AnamorphicNode.js +0 -145
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/DenoiseNode.js +0 -198
- package/src/nodes/display/DotScreenNode.js +0 -75
- package/src/nodes/display/FXAANode.js +0 -327
- package/src/nodes/display/FilmNode.js +0 -52
- package/src/nodes/display/GTAONode.js +0 -324
- package/src/nodes/display/GaussianBlurNode.js +0 -207
- package/src/nodes/display/Lut3DNode.js +0 -53
- package/src/nodes/display/RGBShiftNode.js +0 -49
- package/src/nodes/display/SepiaNode.js +0 -18
- package/src/nodes/display/TransitionNode.js +0 -76
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/fog/FogExp2Node.js +0 -34
- package/src/nodes/fog/FogNode.js +0 -48
- package/src/nodes/fog/FogRangeNode.js +0 -35
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/loaders/NodeLoader.js +0 -110
- package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
- package/src/nodes/loaders/NodeObjectLoader.js +0 -71
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
- package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
- package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
- package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
- package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
- package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
- package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
- package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
- package/src/nodes/materials/NodeMaterial.js +0 -680
- package/src/nodes/materials/PointsNodeMaterial.js +0 -39
- package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
- package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
- package/src/nodes/math/CondNode.js +0 -139
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/OscNode.js +0 -81
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/TimerNode.js +0 -94
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { addNodeClass } from '../core/Node.js';
|
|
2
1
|
import TempNode from '../core/TempNode.js';
|
|
3
2
|
import { default as TextureNode/*, texture*/ } from '../accessors/TextureNode.js';
|
|
4
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
5
|
-
import { nodeObject } from '../
|
|
4
|
+
import { nodeObject } from '../tsl/TSLBase.js';
|
|
6
5
|
import { uniform } from '../core/UniformNode.js';
|
|
7
6
|
import { viewZToOrthographicDepth, perspectiveDepthToViewZ } from './ViewportDepthNode.js';
|
|
8
7
|
|
|
@@ -13,12 +12,34 @@ import { RenderTarget } from '../../core/RenderTarget.js';
|
|
|
13
12
|
|
|
14
13
|
const _size = /*@__PURE__*/ new Vector2();
|
|
15
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Represents the texture of a pass node.
|
|
17
|
+
*
|
|
18
|
+
* @augments TextureNode
|
|
19
|
+
*/
|
|
16
20
|
class PassTextureNode extends TextureNode {
|
|
17
21
|
|
|
22
|
+
static get type() {
|
|
23
|
+
|
|
24
|
+
return 'PassTextureNode';
|
|
25
|
+
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new pass texture node.
|
|
30
|
+
*
|
|
31
|
+
* @param {PassNode} passNode - The pass node.
|
|
32
|
+
* @param {Texture} texture - The output texture.
|
|
33
|
+
*/
|
|
18
34
|
constructor( passNode, texture ) {
|
|
19
35
|
|
|
20
36
|
super( texture );
|
|
21
37
|
|
|
38
|
+
/**
|
|
39
|
+
* A reference to the pass node.
|
|
40
|
+
*
|
|
41
|
+
* @type {PassNode}
|
|
42
|
+
*/
|
|
22
43
|
this.passNode = passNode;
|
|
23
44
|
|
|
24
45
|
this.setUpdateMatrix( false );
|
|
@@ -27,7 +48,7 @@ class PassTextureNode extends TextureNode {
|
|
|
27
48
|
|
|
28
49
|
setup( builder ) {
|
|
29
50
|
|
|
30
|
-
this.passNode.build( builder );
|
|
51
|
+
if ( builder.object.isQuadMesh ) this.passNode.build( builder );
|
|
31
52
|
|
|
32
53
|
return super.setup( builder );
|
|
33
54
|
|
|
@@ -41,17 +62,54 @@ class PassTextureNode extends TextureNode {
|
|
|
41
62
|
|
|
42
63
|
}
|
|
43
64
|
|
|
65
|
+
/**
|
|
66
|
+
* An extension of `PassTextureNode` which allows to manage more than one
|
|
67
|
+
* internal texture. Relevant for the `getPreviousTexture()` related API.
|
|
68
|
+
*
|
|
69
|
+
* @augments PassTextureNode
|
|
70
|
+
*/
|
|
44
71
|
class PassMultipleTextureNode extends PassTextureNode {
|
|
45
72
|
|
|
73
|
+
static get type() {
|
|
74
|
+
|
|
75
|
+
return 'PassMultipleTextureNode';
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Constructs a new pass texture node.
|
|
81
|
+
*
|
|
82
|
+
* @param {PassNode} passNode - The pass node.
|
|
83
|
+
* @param {string} textureName - The output texture name.
|
|
84
|
+
* @param {boolean} [previousTexture=false] - Whether previous frame data should be used or not.
|
|
85
|
+
*/
|
|
46
86
|
constructor( passNode, textureName, previousTexture = false ) {
|
|
47
87
|
|
|
88
|
+
// null is passed to the super call since this class does not
|
|
89
|
+
// use an external texture for rendering pass data into. Instead
|
|
90
|
+
// the texture is managed by the pass node itself
|
|
91
|
+
|
|
48
92
|
super( passNode, null );
|
|
49
93
|
|
|
94
|
+
/**
|
|
95
|
+
* The output texture name.
|
|
96
|
+
*
|
|
97
|
+
* @type {string}
|
|
98
|
+
*/
|
|
50
99
|
this.textureName = textureName;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Whether previous frame data should be used or not.
|
|
103
|
+
*
|
|
104
|
+
* @type {boolean}
|
|
105
|
+
*/
|
|
51
106
|
this.previousTexture = previousTexture;
|
|
52
107
|
|
|
53
108
|
}
|
|
54
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Updates the texture reference of this node.
|
|
112
|
+
*/
|
|
55
113
|
updateTexture() {
|
|
56
114
|
|
|
57
115
|
this.value = this.previousTexture ? this.passNode.getPreviousTexture( this.textureName ) : this.passNode.getTexture( this.textureName );
|
|
@@ -74,19 +132,92 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
74
132
|
|
|
75
133
|
}
|
|
76
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Represents a render pass (sometimes called beauty pass) in context of post processing.
|
|
137
|
+
* This pass produces a render for the given scene and camera and can provide multiple outputs
|
|
138
|
+
* via MRT for further processing.
|
|
139
|
+
*
|
|
140
|
+
* ```js
|
|
141
|
+
* const postProcessing = new PostProcessing( renderer );
|
|
142
|
+
*
|
|
143
|
+
* const scenePass = pass( scene, camera );
|
|
144
|
+
*
|
|
145
|
+
* postProcessing.outputNode = scenePass;
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* @augments TempNode
|
|
149
|
+
*/
|
|
77
150
|
class PassNode extends TempNode {
|
|
78
151
|
|
|
152
|
+
static get type() {
|
|
153
|
+
|
|
154
|
+
return 'PassNode';
|
|
155
|
+
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Constructs a new pass node.
|
|
160
|
+
*
|
|
161
|
+
* @param {('color'|'depth')} scope - The scope of the pass. The scope determines whether the node outputs color or depth.
|
|
162
|
+
* @param {Scene} scene - A reference to the scene.
|
|
163
|
+
* @param {Camera} camera - A reference to the camera.
|
|
164
|
+
* @param {Object} options - Options for the internal render target.
|
|
165
|
+
*/
|
|
79
166
|
constructor( scope, scene, camera, options = {} ) {
|
|
80
167
|
|
|
81
168
|
super( 'vec4' );
|
|
82
169
|
|
|
170
|
+
/**
|
|
171
|
+
* The scope of the pass. The scope determines whether the node outputs color or depth.
|
|
172
|
+
*
|
|
173
|
+
* @type {('color'|'depth')}
|
|
174
|
+
*/
|
|
83
175
|
this.scope = scope;
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* A reference to the scene.
|
|
179
|
+
*
|
|
180
|
+
* @type {Scene}
|
|
181
|
+
*/
|
|
84
182
|
this.scene = scene;
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* A reference to the camera.
|
|
186
|
+
*
|
|
187
|
+
* @type {Camera}
|
|
188
|
+
*/
|
|
85
189
|
this.camera = camera;
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Options for the internal render target.
|
|
193
|
+
*
|
|
194
|
+
* @type {Object}
|
|
195
|
+
*/
|
|
86
196
|
this.options = options;
|
|
87
197
|
|
|
198
|
+
/**
|
|
199
|
+
* The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
|
|
200
|
+
*
|
|
201
|
+
* @private
|
|
202
|
+
* @type {number}
|
|
203
|
+
* @default 1
|
|
204
|
+
*/
|
|
88
205
|
this._pixelRatio = 1;
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
|
|
209
|
+
* @private
|
|
210
|
+
* @type {number}
|
|
211
|
+
* @default 1
|
|
212
|
+
*/
|
|
89
213
|
this._width = 1;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* The pass's pixel height. Will be kept automatically kept in sync with the renderer's height.
|
|
217
|
+
* @private
|
|
218
|
+
* @type {number}
|
|
219
|
+
* @default 1
|
|
220
|
+
*/
|
|
90
221
|
this._height = 1;
|
|
91
222
|
|
|
92
223
|
const depthTexture = new DepthTexture();
|
|
@@ -98,31 +229,162 @@ class PassNode extends TempNode {
|
|
|
98
229
|
renderTarget.texture.name = 'output';
|
|
99
230
|
renderTarget.depthTexture = depthTexture;
|
|
100
231
|
|
|
232
|
+
/**
|
|
233
|
+
* The pass's render target.
|
|
234
|
+
*
|
|
235
|
+
* @type {RenderTarget}
|
|
236
|
+
*/
|
|
101
237
|
this.renderTarget = renderTarget;
|
|
102
238
|
|
|
103
|
-
|
|
104
|
-
|
|
239
|
+
/**
|
|
240
|
+
* A dictionary holding the internal result textures.
|
|
241
|
+
*
|
|
242
|
+
* @private
|
|
243
|
+
* @type {Object<string, Texture>}
|
|
244
|
+
*/
|
|
105
245
|
this._textures = {
|
|
106
246
|
output: renderTarget.texture,
|
|
107
247
|
depth: depthTexture
|
|
108
248
|
};
|
|
109
249
|
|
|
250
|
+
/**
|
|
251
|
+
* A dictionary holding the internal texture nodes.
|
|
252
|
+
*
|
|
253
|
+
* @private
|
|
254
|
+
* @type {Object<string, TextureNode>}
|
|
255
|
+
*/
|
|
110
256
|
this._textureNodes = {};
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* A dictionary holding the internal depth nodes.
|
|
260
|
+
*
|
|
261
|
+
* @private
|
|
262
|
+
* @type {Object}
|
|
263
|
+
*/
|
|
111
264
|
this._linearDepthNodes = {};
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* A dictionary holding the internal viewZ nodes.
|
|
268
|
+
*
|
|
269
|
+
* @private
|
|
270
|
+
* @type {Object}
|
|
271
|
+
*/
|
|
112
272
|
this._viewZNodes = {};
|
|
113
273
|
|
|
274
|
+
/**
|
|
275
|
+
* A dictionary holding the texture data of the previous frame.
|
|
276
|
+
* Used for computing velocity/motion vectors.
|
|
277
|
+
*
|
|
278
|
+
* @private
|
|
279
|
+
* @type {Object<string, Texture>}
|
|
280
|
+
*/
|
|
114
281
|
this._previousTextures = {};
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* A dictionary holding the texture nodes of the previous frame.
|
|
285
|
+
* Used for computing velocity/motion vectors.
|
|
286
|
+
*
|
|
287
|
+
* @private
|
|
288
|
+
* @type {Object<string, TextureNode>}
|
|
289
|
+
*/
|
|
115
290
|
this._previousTextureNodes = {};
|
|
116
291
|
|
|
292
|
+
/**
|
|
293
|
+
* The `near` property of the camera as a uniform.
|
|
294
|
+
*
|
|
295
|
+
* @private
|
|
296
|
+
* @type {UniformNode}
|
|
297
|
+
*/
|
|
117
298
|
this._cameraNear = uniform( 0 );
|
|
299
|
+
|
|
300
|
+
/**
|
|
301
|
+
* The `far` property of the camera as a uniform.
|
|
302
|
+
*
|
|
303
|
+
* @private
|
|
304
|
+
* @type {UniformNode}
|
|
305
|
+
*/
|
|
118
306
|
this._cameraFar = uniform( 0 );
|
|
119
307
|
|
|
308
|
+
/**
|
|
309
|
+
* A MRT node configuring the MRT settings.
|
|
310
|
+
*
|
|
311
|
+
* @private
|
|
312
|
+
* @type {?MRTNode}
|
|
313
|
+
* @default null
|
|
314
|
+
*/
|
|
120
315
|
this._mrt = null;
|
|
121
316
|
|
|
317
|
+
this._layers = null;
|
|
318
|
+
|
|
319
|
+
this._resolution = 1;
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* This flag can be used for type testing.
|
|
323
|
+
*
|
|
324
|
+
* @type {boolean}
|
|
325
|
+
* @readonly
|
|
326
|
+
* @default true
|
|
327
|
+
*/
|
|
122
328
|
this.isPassNode = true;
|
|
123
329
|
|
|
330
|
+
/**
|
|
331
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders the
|
|
332
|
+
* scene once per frame in its {@link PassNode#updateBefore} method.
|
|
333
|
+
*
|
|
334
|
+
* @type {string}
|
|
335
|
+
* @default 'frame'
|
|
336
|
+
*/
|
|
337
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
338
|
+
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* Sets the resolution for the pass.
|
|
343
|
+
* The resolution is a factor that is multiplied with the renderer's width and height.
|
|
344
|
+
*
|
|
345
|
+
* @param {number} resolution - The resolution to set. A value of `1` means full resolution.
|
|
346
|
+
* @return {PassNode} A reference to this pass.
|
|
347
|
+
*/
|
|
348
|
+
setResolution( resolution ) {
|
|
349
|
+
|
|
350
|
+
this._resolution = resolution;
|
|
351
|
+
|
|
352
|
+
return this;
|
|
353
|
+
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Gets the current resolution of the pass.
|
|
358
|
+
*
|
|
359
|
+
* @return {number} The current resolution. A value of `1` means full resolution.
|
|
360
|
+
* @default 1
|
|
361
|
+
*/
|
|
362
|
+
getResolution() {
|
|
363
|
+
|
|
364
|
+
return this._resolution;
|
|
365
|
+
|
|
124
366
|
}
|
|
125
367
|
|
|
368
|
+
setLayers( layers ) {
|
|
369
|
+
|
|
370
|
+
this._layers = layers;
|
|
371
|
+
|
|
372
|
+
return this;
|
|
373
|
+
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
getLayers() {
|
|
377
|
+
|
|
378
|
+
return this._layers;
|
|
379
|
+
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Sets the given MRT node to setup MRT for this pass.
|
|
384
|
+
*
|
|
385
|
+
* @param {MRTNode} mrt - The MRT object.
|
|
386
|
+
* @return {PassNode} A reference to this pass.
|
|
387
|
+
*/
|
|
126
388
|
setMRT( mrt ) {
|
|
127
389
|
|
|
128
390
|
this._mrt = mrt;
|
|
@@ -131,18 +393,34 @@ class PassNode extends TempNode {
|
|
|
131
393
|
|
|
132
394
|
}
|
|
133
395
|
|
|
396
|
+
/**
|
|
397
|
+
* Returns the current MRT node.
|
|
398
|
+
*
|
|
399
|
+
* @return {MRTNode} The current MRT node.
|
|
400
|
+
*/
|
|
134
401
|
getMRT() {
|
|
135
402
|
|
|
136
403
|
return this._mrt;
|
|
137
404
|
|
|
138
405
|
}
|
|
139
406
|
|
|
407
|
+
/**
|
|
408
|
+
* The method is overwritten so it always returns `true`.
|
|
409
|
+
*
|
|
410
|
+
* @return {boolean} Whether this node is global or not.
|
|
411
|
+
*/
|
|
140
412
|
isGlobal() {
|
|
141
413
|
|
|
142
414
|
return true;
|
|
143
415
|
|
|
144
416
|
}
|
|
145
417
|
|
|
418
|
+
/**
|
|
419
|
+
* Returns the texture for the given output name.
|
|
420
|
+
*
|
|
421
|
+
* @param {string} name - The output name to get the texture for.
|
|
422
|
+
* @return {Texture} The texture.
|
|
423
|
+
*/
|
|
146
424
|
getTexture( name ) {
|
|
147
425
|
|
|
148
426
|
let texture = this._textures[ name ];
|
|
@@ -152,7 +430,6 @@ class PassNode extends TempNode {
|
|
|
152
430
|
const refTexture = this.renderTarget.texture;
|
|
153
431
|
|
|
154
432
|
texture = refTexture.clone();
|
|
155
|
-
texture.isRenderTargetTexture = true;
|
|
156
433
|
texture.name = name;
|
|
157
434
|
|
|
158
435
|
this._textures[ name ] = texture;
|
|
@@ -165,6 +442,12 @@ class PassNode extends TempNode {
|
|
|
165
442
|
|
|
166
443
|
}
|
|
167
444
|
|
|
445
|
+
/**
|
|
446
|
+
* Returns the texture holding the data of the previous frame for the given output name.
|
|
447
|
+
*
|
|
448
|
+
* @param {string} name - The output name to get the texture for.
|
|
449
|
+
* @return {Texture} The texture holding the data of the previous frame.
|
|
450
|
+
*/
|
|
168
451
|
getPreviousTexture( name ) {
|
|
169
452
|
|
|
170
453
|
let texture = this._previousTextures[ name ];
|
|
@@ -172,7 +455,6 @@ class PassNode extends TempNode {
|
|
|
172
455
|
if ( texture === undefined ) {
|
|
173
456
|
|
|
174
457
|
texture = this.getTexture( name ).clone();
|
|
175
|
-
texture.isRenderTargetTexture = true;
|
|
176
458
|
|
|
177
459
|
this._previousTextures[ name ] = texture;
|
|
178
460
|
|
|
@@ -182,6 +464,11 @@ class PassNode extends TempNode {
|
|
|
182
464
|
|
|
183
465
|
}
|
|
184
466
|
|
|
467
|
+
/**
|
|
468
|
+
* Switches current and previous textures for the given output name.
|
|
469
|
+
*
|
|
470
|
+
* @param {string} name - The output name.
|
|
471
|
+
*/
|
|
185
472
|
toggleTexture( name ) {
|
|
186
473
|
|
|
187
474
|
const prevTexture = this._previousTextures[ name ];
|
|
@@ -203,13 +490,21 @@ class PassNode extends TempNode {
|
|
|
203
490
|
|
|
204
491
|
}
|
|
205
492
|
|
|
493
|
+
/**
|
|
494
|
+
* Returns the texture node for the given output name.
|
|
495
|
+
*
|
|
496
|
+
* @param {string} [name='output'] - The output name to get the texture node for.
|
|
497
|
+
* @return {TextureNode} The texture node.
|
|
498
|
+
*/
|
|
206
499
|
getTextureNode( name = 'output' ) {
|
|
207
500
|
|
|
208
501
|
let textureNode = this._textureNodes[ name ];
|
|
209
502
|
|
|
210
503
|
if ( textureNode === undefined ) {
|
|
211
504
|
|
|
212
|
-
|
|
505
|
+
textureNode = nodeObject( new PassMultipleTextureNode( this, name ) );
|
|
506
|
+
textureNode.updateTexture();
|
|
507
|
+
this._textureNodes[ name ] = textureNode;
|
|
213
508
|
|
|
214
509
|
}
|
|
215
510
|
|
|
@@ -217,13 +512,23 @@ class PassNode extends TempNode {
|
|
|
217
512
|
|
|
218
513
|
}
|
|
219
514
|
|
|
515
|
+
/**
|
|
516
|
+
* Returns the previous texture node for the given output name.
|
|
517
|
+
*
|
|
518
|
+
* @param {string} [name='output'] - The output name to get the previous texture node for.
|
|
519
|
+
* @return {TextureNode} The previous texture node.
|
|
520
|
+
*/
|
|
220
521
|
getPreviousTextureNode( name = 'output' ) {
|
|
221
522
|
|
|
222
523
|
let textureNode = this._previousTextureNodes[ name ];
|
|
223
524
|
|
|
224
525
|
if ( textureNode === undefined ) {
|
|
225
526
|
|
|
226
|
-
this.
|
|
527
|
+
if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name );
|
|
528
|
+
|
|
529
|
+
textureNode = nodeObject( new PassMultipleTextureNode( this, name, true ) );
|
|
530
|
+
textureNode.updateTexture();
|
|
531
|
+
this._previousTextureNodes[ name ] = textureNode;
|
|
227
532
|
|
|
228
533
|
}
|
|
229
534
|
|
|
@@ -231,6 +536,12 @@ class PassNode extends TempNode {
|
|
|
231
536
|
|
|
232
537
|
}
|
|
233
538
|
|
|
539
|
+
/**
|
|
540
|
+
* Returns a viewZ node of this pass.
|
|
541
|
+
*
|
|
542
|
+
* @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.
|
|
543
|
+
* @return {Node} The viewZ node.
|
|
544
|
+
*/
|
|
234
545
|
getViewZNode( name = 'depth' ) {
|
|
235
546
|
|
|
236
547
|
let viewZNode = this._viewZNodes[ name ];
|
|
@@ -248,6 +559,12 @@ class PassNode extends TempNode {
|
|
|
248
559
|
|
|
249
560
|
}
|
|
250
561
|
|
|
562
|
+
/**
|
|
563
|
+
* Returns a linear depth node of this pass.
|
|
564
|
+
*
|
|
565
|
+
* @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.
|
|
566
|
+
* @return {Node} The linear depth node.
|
|
567
|
+
*/
|
|
251
568
|
getLinearDepthNode( name = 'depth' ) {
|
|
252
569
|
|
|
253
570
|
let linearDepthNode = this._linearDepthNodes[ name ];
|
|
@@ -272,14 +589,14 @@ class PassNode extends TempNode {
|
|
|
272
589
|
|
|
273
590
|
this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
|
|
274
591
|
|
|
275
|
-
// Disable MSAA for WebGL backend for now
|
|
592
|
+
// TODO: Disable MSAA for WebGL backend for now
|
|
276
593
|
if ( renderer.backend.isWebGLBackend === true ) {
|
|
277
594
|
|
|
278
595
|
this.renderTarget.samples = 0;
|
|
279
596
|
|
|
280
597
|
}
|
|
281
598
|
|
|
282
|
-
this.renderTarget.
|
|
599
|
+
this.renderTarget.texture.type = renderer.getColorBufferType();
|
|
283
600
|
|
|
284
601
|
return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
|
|
285
602
|
|
|
@@ -288,20 +605,48 @@ class PassNode extends TempNode {
|
|
|
288
605
|
updateBefore( frame ) {
|
|
289
606
|
|
|
290
607
|
const { renderer } = frame;
|
|
291
|
-
const { scene
|
|
608
|
+
const { scene } = this;
|
|
609
|
+
|
|
610
|
+
let camera;
|
|
611
|
+
let pixelRatio;
|
|
292
612
|
|
|
293
|
-
|
|
613
|
+
const outputRenderTarget = renderer.getOutputRenderTarget();
|
|
294
614
|
|
|
295
|
-
|
|
615
|
+
if ( outputRenderTarget && outputRenderTarget.isXRRenderTarget === true ) {
|
|
296
616
|
|
|
297
|
-
|
|
617
|
+
pixelRatio = 1;
|
|
618
|
+
camera = renderer.xr.getCamera();
|
|
619
|
+
|
|
620
|
+
renderer.xr.updateCamera( camera );
|
|
621
|
+
|
|
622
|
+
_size.set( outputRenderTarget.width, outputRenderTarget.height );
|
|
623
|
+
|
|
624
|
+
} else {
|
|
625
|
+
|
|
626
|
+
camera = this.camera;
|
|
627
|
+
pixelRatio = renderer.getPixelRatio();
|
|
628
|
+
|
|
629
|
+
renderer.getSize( _size );
|
|
630
|
+
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
this._pixelRatio = pixelRatio;
|
|
634
|
+
|
|
635
|
+
this.setSize( _size.width, _size.height );
|
|
298
636
|
|
|
299
637
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
300
638
|
const currentMRT = renderer.getMRT();
|
|
639
|
+
const currentMask = camera.layers.mask;
|
|
301
640
|
|
|
302
641
|
this._cameraNear.value = camera.near;
|
|
303
642
|
this._cameraFar.value = camera.far;
|
|
304
643
|
|
|
644
|
+
if ( this._layers !== null ) {
|
|
645
|
+
|
|
646
|
+
camera.layers.mask = this._layers.mask;
|
|
647
|
+
|
|
648
|
+
}
|
|
649
|
+
|
|
305
650
|
for ( const name in this._previousTextures ) {
|
|
306
651
|
|
|
307
652
|
this.toggleTexture( name );
|
|
@@ -316,20 +661,33 @@ class PassNode extends TempNode {
|
|
|
316
661
|
renderer.setRenderTarget( currentRenderTarget );
|
|
317
662
|
renderer.setMRT( currentMRT );
|
|
318
663
|
|
|
664
|
+
camera.layers.mask = currentMask;
|
|
665
|
+
|
|
319
666
|
}
|
|
320
667
|
|
|
668
|
+
/**
|
|
669
|
+
* Sets the size of the pass's render target. Honors the pixel ratio.
|
|
670
|
+
*
|
|
671
|
+
* @param {number} width - The width to set.
|
|
672
|
+
* @param {number} height - The height to set.
|
|
673
|
+
*/
|
|
321
674
|
setSize( width, height ) {
|
|
322
675
|
|
|
323
676
|
this._width = width;
|
|
324
677
|
this._height = height;
|
|
325
678
|
|
|
326
|
-
const effectiveWidth = this._width * this._pixelRatio;
|
|
327
|
-
const effectiveHeight = this._height * this._pixelRatio;
|
|
679
|
+
const effectiveWidth = this._width * this._pixelRatio * this._resolution;
|
|
680
|
+
const effectiveHeight = this._height * this._pixelRatio * this._resolution;
|
|
328
681
|
|
|
329
682
|
this.renderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
330
683
|
|
|
331
684
|
}
|
|
332
685
|
|
|
686
|
+
/**
|
|
687
|
+
* Sets the pixel ratio the pass's render target and updates the size.
|
|
688
|
+
*
|
|
689
|
+
* @param {number} pixelRatio - The pixel ratio to set.
|
|
690
|
+
*/
|
|
333
691
|
setPixelRatio( pixelRatio ) {
|
|
334
692
|
|
|
335
693
|
this._pixelRatio = pixelRatio;
|
|
@@ -338,6 +696,9 @@ class PassNode extends TempNode {
|
|
|
338
696
|
|
|
339
697
|
}
|
|
340
698
|
|
|
699
|
+
/**
|
|
700
|
+
* Frees internal resources. Should be called when the node is no longer in use.
|
|
701
|
+
*/
|
|
341
702
|
dispose() {
|
|
342
703
|
|
|
343
704
|
this.renderTarget.dispose();
|
|
@@ -347,13 +708,53 @@ class PassNode extends TempNode {
|
|
|
347
708
|
|
|
348
709
|
}
|
|
349
710
|
|
|
711
|
+
/**
|
|
712
|
+
* @static
|
|
713
|
+
* @type {'color'}
|
|
714
|
+
* @default 'color'
|
|
715
|
+
*/
|
|
350
716
|
PassNode.COLOR = 'color';
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* @static
|
|
720
|
+
* @type {'depth'}
|
|
721
|
+
* @default 'depth'
|
|
722
|
+
*/
|
|
351
723
|
PassNode.DEPTH = 'depth';
|
|
352
724
|
|
|
353
725
|
export default PassNode;
|
|
354
726
|
|
|
727
|
+
/**
|
|
728
|
+
* TSL function for creating a pass node.
|
|
729
|
+
*
|
|
730
|
+
* @tsl
|
|
731
|
+
* @function
|
|
732
|
+
* @param {Scene} scene - A reference to the scene.
|
|
733
|
+
* @param {Camera} camera - A reference to the camera.
|
|
734
|
+
* @param {Object} options - Options for the internal render target.
|
|
735
|
+
* @returns {PassNode}
|
|
736
|
+
*/
|
|
355
737
|
export const pass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.COLOR, scene, camera, options ) );
|
|
738
|
+
|
|
739
|
+
/**
|
|
740
|
+
* TSL function for creating a pass texture node.
|
|
741
|
+
*
|
|
742
|
+
* @tsl
|
|
743
|
+
* @function
|
|
744
|
+
* @param {PassNode} pass - The pass node.
|
|
745
|
+
* @param {Texture} texture - The output texture.
|
|
746
|
+
* @returns {PassTextureNode}
|
|
747
|
+
*/
|
|
356
748
|
export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode( pass, texture ) );
|
|
357
|
-
export const depthPass = ( scene, camera ) => nodeObject( new PassNode( PassNode.DEPTH, scene, camera ) );
|
|
358
749
|
|
|
359
|
-
|
|
750
|
+
/**
|
|
751
|
+
* TSL function for creating a depth pass node.
|
|
752
|
+
*
|
|
753
|
+
* @tsl
|
|
754
|
+
* @function
|
|
755
|
+
* @param {Scene} scene - A reference to the scene.
|
|
756
|
+
* @param {Camera} camera - A reference to the camera.
|
|
757
|
+
* @param {Object} options - Options for the internal render target.
|
|
758
|
+
* @returns {PassNode}
|
|
759
|
+
*/
|
|
760
|
+
export const depthPass = ( scene, camera, options ) => nodeObject( new PassNode( PassNode.DEPTH, scene, camera, options ) );
|