super-three 0.181.0 → 0.185.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 +3 -4
- package/build/three.cjs +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +4 -19
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- 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/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -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_pars_begin.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
- 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 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -1,11 +1,11 @@
|
|
|
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
|
-
import { HalfFloatType
|
|
8
|
+
import { HalfFloatType, FloatType } from '../../constants.js';
|
|
9
9
|
import { Vector2 } from '../../math/Vector2.js';
|
|
10
10
|
import { Vector4 } from '../../math/Vector4.js';
|
|
11
11
|
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
@@ -44,13 +44,23 @@ class PassTextureNode extends TextureNode {
|
|
|
44
44
|
*/
|
|
45
45
|
this.passNode = passNode;
|
|
46
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
|
+
|
|
47
56
|
this.setUpdateMatrix( false );
|
|
48
57
|
|
|
49
58
|
}
|
|
50
59
|
|
|
51
60
|
setup( builder ) {
|
|
52
61
|
|
|
53
|
-
|
|
62
|
+
const properties = builder.getNodeProperties( this );
|
|
63
|
+
properties.passNode = this.passNode;
|
|
54
64
|
|
|
55
65
|
return super.setup( builder );
|
|
56
66
|
|
|
@@ -107,6 +117,15 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
107
117
|
*/
|
|
108
118
|
this.previousTexture = previousTexture;
|
|
109
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
|
+
|
|
110
129
|
}
|
|
111
130
|
|
|
112
131
|
/**
|
|
@@ -136,6 +155,7 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
136
155
|
newNode.depthNode = this.depthNode;
|
|
137
156
|
newNode.compareNode = this.compareNode;
|
|
138
157
|
newNode.gradNode = this.gradNode;
|
|
158
|
+
newNode.gatherNode = this.gatherNode;
|
|
139
159
|
newNode.offsetNode = this.offsetNode;
|
|
140
160
|
|
|
141
161
|
return newNode;
|
|
@@ -150,7 +170,7 @@ class PassMultipleTextureNode extends PassTextureNode {
|
|
|
150
170
|
* via MRT for further processing.
|
|
151
171
|
*
|
|
152
172
|
* ```js
|
|
153
|
-
* const postProcessing = new
|
|
173
|
+
* const postProcessing = new RenderPipeline( renderer );
|
|
154
174
|
*
|
|
155
175
|
* const scenePass = pass( scene, camera );
|
|
156
176
|
*
|
|
@@ -207,15 +227,6 @@ class PassNode extends TempNode {
|
|
|
207
227
|
*/
|
|
208
228
|
this.options = options;
|
|
209
229
|
|
|
210
|
-
/**
|
|
211
|
-
* The pass's pixel ratio. Will be kept automatically kept in sync with the renderer's pixel ratio.
|
|
212
|
-
*
|
|
213
|
-
* @private
|
|
214
|
-
* @type {number}
|
|
215
|
-
* @default 1
|
|
216
|
-
*/
|
|
217
|
-
this._pixelRatio = 1;
|
|
218
|
-
|
|
219
230
|
/**
|
|
220
231
|
* The pass's pixel width. Will be kept automatically kept in sync with the renderer's width.
|
|
221
232
|
* @private
|
|
@@ -232,14 +243,21 @@ class PassNode extends TempNode {
|
|
|
232
243
|
*/
|
|
233
244
|
this._height = 1;
|
|
234
245
|
|
|
235
|
-
const
|
|
236
|
-
depthTexture.isRenderTargetTexture = true;
|
|
237
|
-
//depthTexture.type = FloatType;
|
|
238
|
-
depthTexture.name = 'depth';
|
|
239
|
-
|
|
240
|
-
const renderTarget = new RenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType, ...options, } );
|
|
246
|
+
const renderTarget = new RenderTarget( this._width, this._height, { type: HalfFloatType, ...options, } );
|
|
241
247
|
renderTarget.texture.name = 'output';
|
|
242
|
-
|
|
248
|
+
|
|
249
|
+
let depthTexture = null;
|
|
250
|
+
|
|
251
|
+
if ( this.scope === PassNode.DEPTH || options.depthBuffer !== false ) {
|
|
252
|
+
|
|
253
|
+
depthTexture = new DepthTexture();
|
|
254
|
+
depthTexture.isRenderTargetTexture = true;
|
|
255
|
+
//depthTexture.type = FloatType;
|
|
256
|
+
depthTexture.name = 'depth';
|
|
257
|
+
|
|
258
|
+
renderTarget.depthTexture = depthTexture;
|
|
259
|
+
|
|
260
|
+
}
|
|
243
261
|
|
|
244
262
|
/**
|
|
245
263
|
* The pass's render target.
|
|
@@ -248,17 +266,61 @@ class PassNode extends TempNode {
|
|
|
248
266
|
*/
|
|
249
267
|
this.renderTarget = renderTarget;
|
|
250
268
|
|
|
269
|
+
/**
|
|
270
|
+
* An optional override material for the pass.
|
|
271
|
+
*
|
|
272
|
+
* @type {Material|null}
|
|
273
|
+
*/
|
|
274
|
+
this.overrideMaterial = null;
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Whether the pass is transparent.
|
|
278
|
+
*
|
|
279
|
+
* @type {boolean}
|
|
280
|
+
* @default false
|
|
281
|
+
*/
|
|
282
|
+
this.transparent = true;
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Whether the pass is opaque.
|
|
286
|
+
*
|
|
287
|
+
* @type {boolean}
|
|
288
|
+
* @default true
|
|
289
|
+
*/
|
|
290
|
+
this.opaque = true;
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* An optional global context for the pass.
|
|
294
|
+
*
|
|
295
|
+
* @type {ContextNode|null}
|
|
296
|
+
*/
|
|
297
|
+
this.contextNode = null;
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* A cache for the context node.
|
|
301
|
+
*
|
|
302
|
+
* @private
|
|
303
|
+
* @type {?Object}
|
|
304
|
+
* @default null
|
|
305
|
+
*/
|
|
306
|
+
this._contextNodeCache = null;
|
|
307
|
+
|
|
251
308
|
/**
|
|
252
309
|
* A dictionary holding the internal result textures.
|
|
253
310
|
*
|
|
254
311
|
* @private
|
|
255
|
-
* @type {
|
|
312
|
+
* @type {{ output: Texture, depth: ?DepthTexture }}
|
|
256
313
|
*/
|
|
257
314
|
this._textures = {
|
|
258
|
-
output: renderTarget.texture
|
|
259
|
-
depth: depthTexture
|
|
315
|
+
output: renderTarget.texture
|
|
260
316
|
};
|
|
261
317
|
|
|
318
|
+
if ( depthTexture !== null ) {
|
|
319
|
+
|
|
320
|
+
this._textures.depth = depthTexture;
|
|
321
|
+
|
|
322
|
+
}
|
|
323
|
+
|
|
262
324
|
/**
|
|
263
325
|
* A dictionary holding the internal texture nodes.
|
|
264
326
|
*
|
|
@@ -509,6 +571,12 @@ class PassNode extends TempNode {
|
|
|
509
571
|
|
|
510
572
|
if ( texture === undefined ) {
|
|
511
573
|
|
|
574
|
+
if ( name === 'depth' ) {
|
|
575
|
+
|
|
576
|
+
throw new Error( 'THREE.PassNode: Depth texture is not available for this pass.' );
|
|
577
|
+
|
|
578
|
+
}
|
|
579
|
+
|
|
512
580
|
const refTexture = this.renderTarget.texture;
|
|
513
581
|
|
|
514
582
|
texture = refTexture.clone();
|
|
@@ -584,7 +652,7 @@ class PassNode extends TempNode {
|
|
|
584
652
|
|
|
585
653
|
if ( textureNode === undefined ) {
|
|
586
654
|
|
|
587
|
-
textureNode =
|
|
655
|
+
textureNode = new PassMultipleTextureNode( this, name );
|
|
588
656
|
textureNode.updateTexture();
|
|
589
657
|
this._textureNodes[ name ] = textureNode;
|
|
590
658
|
|
|
@@ -608,7 +676,7 @@ class PassNode extends TempNode {
|
|
|
608
676
|
|
|
609
677
|
if ( this._textureNodes[ name ] === undefined ) this.getTextureNode( name );
|
|
610
678
|
|
|
611
|
-
textureNode =
|
|
679
|
+
textureNode = new PassMultipleTextureNode( this, name, true );
|
|
612
680
|
textureNode.updateTexture();
|
|
613
681
|
this._previousTextureNodes[ name ] = textureNode;
|
|
614
682
|
|
|
@@ -697,7 +765,13 @@ class PassNode extends TempNode {
|
|
|
697
765
|
|
|
698
766
|
this.renderTarget.samples = this.options.samples === undefined ? renderer.samples : this.options.samples;
|
|
699
767
|
|
|
700
|
-
this.renderTarget.texture.type = renderer.
|
|
768
|
+
this.renderTarget.texture.type = renderer.getOutputBufferType();
|
|
769
|
+
|
|
770
|
+
if ( renderer.reversedDepthBuffer === true && this.renderTarget.depthTexture !== null ) {
|
|
771
|
+
|
|
772
|
+
this.renderTarget.depthTexture.type = FloatType;
|
|
773
|
+
|
|
774
|
+
}
|
|
701
775
|
|
|
702
776
|
return this.scope === PassNode.COLOR ? this.getTextureNode() : this.getLinearDepthNode();
|
|
703
777
|
|
|
@@ -709,13 +783,11 @@ class PassNode extends TempNode {
|
|
|
709
783
|
const { scene } = this;
|
|
710
784
|
|
|
711
785
|
let camera;
|
|
712
|
-
let pixelRatio;
|
|
713
786
|
|
|
714
787
|
const outputRenderTarget = renderer.getOutputRenderTarget();
|
|
715
788
|
|
|
716
789
|
if ( outputRenderTarget && outputRenderTarget.isXRRenderTarget === true ) {
|
|
717
790
|
|
|
718
|
-
pixelRatio = 1;
|
|
719
791
|
camera = renderer.xr.getCamera();
|
|
720
792
|
|
|
721
793
|
renderer.xr.updateCamera( camera );
|
|
@@ -725,20 +797,21 @@ class PassNode extends TempNode {
|
|
|
725
797
|
} else {
|
|
726
798
|
|
|
727
799
|
camera = this.camera;
|
|
728
|
-
pixelRatio = renderer.getPixelRatio();
|
|
729
800
|
|
|
730
|
-
renderer.
|
|
801
|
+
renderer.getDrawingBufferSize( _size );
|
|
731
802
|
|
|
732
803
|
}
|
|
733
804
|
|
|
734
|
-
this._pixelRatio = pixelRatio;
|
|
735
|
-
|
|
736
805
|
this.setSize( _size.width, _size.height );
|
|
737
806
|
|
|
738
807
|
const currentRenderTarget = renderer.getRenderTarget();
|
|
739
808
|
const currentMRT = renderer.getMRT();
|
|
740
809
|
const currentAutoClear = renderer.autoClear;
|
|
810
|
+
const currentTransparent = renderer.transparent;
|
|
811
|
+
const currentOpaque = renderer.opaque;
|
|
741
812
|
const currentMask = camera.layers.mask;
|
|
813
|
+
const currentContextNode = renderer.contextNode;
|
|
814
|
+
const currentOverrideMaterial = scene.overrideMaterial;
|
|
742
815
|
|
|
743
816
|
this._cameraNear.value = camera.near;
|
|
744
817
|
this._cameraFar.value = camera.far;
|
|
@@ -755,9 +828,32 @@ class PassNode extends TempNode {
|
|
|
755
828
|
|
|
756
829
|
}
|
|
757
830
|
|
|
831
|
+
if ( this.overrideMaterial !== null ) {
|
|
832
|
+
|
|
833
|
+
scene.overrideMaterial = this.overrideMaterial;
|
|
834
|
+
|
|
835
|
+
}
|
|
836
|
+
|
|
758
837
|
renderer.setRenderTarget( this.renderTarget );
|
|
759
838
|
renderer.setMRT( this._mrt );
|
|
760
839
|
renderer.autoClear = true;
|
|
840
|
+
renderer.transparent = this.transparent;
|
|
841
|
+
renderer.opaque = this.opaque;
|
|
842
|
+
|
|
843
|
+
if ( this.contextNode !== null ) {
|
|
844
|
+
|
|
845
|
+
if ( this._contextNodeCache === null || this._contextNodeCache.version !== this.version ) {
|
|
846
|
+
|
|
847
|
+
this._contextNodeCache = {
|
|
848
|
+
version: this.version,
|
|
849
|
+
context: context( { ...renderer.contextNode.getFlowContextData(), ...this.contextNode.getFlowContextData() } )
|
|
850
|
+
};
|
|
851
|
+
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
renderer.contextNode = this._contextNodeCache.context;
|
|
855
|
+
|
|
856
|
+
}
|
|
761
857
|
|
|
762
858
|
const currentSceneName = scene.name;
|
|
763
859
|
|
|
@@ -766,10 +862,14 @@ class PassNode extends TempNode {
|
|
|
766
862
|
renderer.render( scene, camera );
|
|
767
863
|
|
|
768
864
|
scene.name = currentSceneName;
|
|
865
|
+
scene.overrideMaterial = currentOverrideMaterial;
|
|
769
866
|
|
|
770
867
|
renderer.setRenderTarget( currentRenderTarget );
|
|
771
868
|
renderer.setMRT( currentMRT );
|
|
772
869
|
renderer.autoClear = currentAutoClear;
|
|
870
|
+
renderer.transparent = currentTransparent;
|
|
871
|
+
renderer.opaque = currentOpaque;
|
|
872
|
+
renderer.contextNode = currentContextNode;
|
|
773
873
|
|
|
774
874
|
camera.layers.mask = currentMask;
|
|
775
875
|
|
|
@@ -786,13 +886,31 @@ class PassNode extends TempNode {
|
|
|
786
886
|
this._width = width;
|
|
787
887
|
this._height = height;
|
|
788
888
|
|
|
789
|
-
const effectiveWidth = Math.floor( this._width * this.
|
|
790
|
-
const effectiveHeight = Math.floor( this._height * this.
|
|
889
|
+
const effectiveWidth = Math.floor( this._width * this._resolutionScale );
|
|
890
|
+
const effectiveHeight = Math.floor( this._height * this._resolutionScale );
|
|
791
891
|
|
|
792
892
|
this.renderTarget.setSize( effectiveWidth, effectiveHeight );
|
|
793
893
|
|
|
794
|
-
|
|
795
|
-
|
|
894
|
+
// scissor
|
|
895
|
+
|
|
896
|
+
if ( this._scissor !== null ) {
|
|
897
|
+
|
|
898
|
+
this.renderTarget.scissor.copy( this._scissor ).multiplyScalar( this._resolutionScale ).floor();
|
|
899
|
+
this.renderTarget.scissorTest = true;
|
|
900
|
+
|
|
901
|
+
} else {
|
|
902
|
+
|
|
903
|
+
this.renderTarget.scissorTest = false;
|
|
904
|
+
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// viewport
|
|
908
|
+
|
|
909
|
+
if ( this._viewport !== null ) {
|
|
910
|
+
|
|
911
|
+
this.renderTarget.viewport.copy( this._viewport ).multiplyScalar( this._resolutionScale ).floor();
|
|
912
|
+
|
|
913
|
+
}
|
|
796
914
|
|
|
797
915
|
}
|
|
798
916
|
|
|
@@ -827,8 +945,6 @@ class PassNode extends TempNode {
|
|
|
827
945
|
|
|
828
946
|
}
|
|
829
947
|
|
|
830
|
-
this._scissor.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
831
|
-
|
|
832
948
|
}
|
|
833
949
|
|
|
834
950
|
}
|
|
@@ -863,25 +979,10 @@ class PassNode extends TempNode {
|
|
|
863
979
|
|
|
864
980
|
}
|
|
865
981
|
|
|
866
|
-
this._viewport.multiplyScalar( this._pixelRatio * this._resolutionScale ).floor();
|
|
867
|
-
|
|
868
982
|
}
|
|
869
983
|
|
|
870
984
|
}
|
|
871
985
|
|
|
872
|
-
/**
|
|
873
|
-
* Sets the pixel ratio the pass's render target and updates the size.
|
|
874
|
-
*
|
|
875
|
-
* @param {number} pixelRatio - The pixel ratio to set.
|
|
876
|
-
*/
|
|
877
|
-
setPixelRatio( pixelRatio ) {
|
|
878
|
-
|
|
879
|
-
this._pixelRatio = pixelRatio;
|
|
880
|
-
|
|
881
|
-
this.setSize( this._width, this._height );
|
|
882
|
-
|
|
883
|
-
}
|
|
884
|
-
|
|
885
986
|
/**
|
|
886
987
|
* Frees internal resources. Should be called when the node is no longer in use.
|
|
887
988
|
*/
|
|
@@ -920,7 +1021,7 @@ export default PassNode;
|
|
|
920
1021
|
* @param {Object} options - Options for the internal render target.
|
|
921
1022
|
* @returns {PassNode}
|
|
922
1023
|
*/
|
|
923
|
-
export const pass = ( scene, camera, options ) =>
|
|
1024
|
+
export const pass = ( scene, camera, options ) => new PassNode( PassNode.COLOR, scene, camera, options );
|
|
924
1025
|
|
|
925
1026
|
/**
|
|
926
1027
|
* TSL function for creating a pass texture node.
|
|
@@ -931,7 +1032,7 @@ export const pass = ( scene, camera, options ) => nodeObject( new PassNode( Pass
|
|
|
931
1032
|
* @param {Texture} texture - The output texture.
|
|
932
1033
|
* @returns {PassTextureNode}
|
|
933
1034
|
*/
|
|
934
|
-
export const passTexture = ( pass, texture ) =>
|
|
1035
|
+
export const passTexture = ( pass, texture ) => new PassTextureNode( pass, texture );
|
|
935
1036
|
|
|
936
1037
|
/**
|
|
937
1038
|
* TSL function for creating a depth pass node.
|
|
@@ -943,4 +1044,4 @@ export const passTexture = ( pass, texture ) => nodeObject( new PassTextureNode(
|
|
|
943
1044
|
* @param {Object} options - Options for the internal render target.
|
|
944
1045
|
* @returns {PassNode}
|
|
945
1046
|
*/
|
|
946
|
-
export const depthPass = ( scene, camera, options ) =>
|
|
1047
|
+
export const depthPass = ( scene, camera, options ) => new PassNode( PassNode.DEPTH, scene, camera, options );
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Fn, vec4 } from '../tsl/TSLCore.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Premultiplies the RGB channels of a color by its alpha channel.
|
|
5
|
+
*
|
|
6
|
+
* This function is useful for converting a non-premultiplied alpha color
|
|
7
|
+
* into a premultiplied alpha format, where the RGB values are scaled
|
|
8
|
+
* by the alpha value. Premultiplied alpha is often used in graphics
|
|
9
|
+
* rendering for certain operations, such as compositing and image processing.
|
|
10
|
+
*
|
|
11
|
+
* @tsl
|
|
12
|
+
* @function
|
|
13
|
+
* @param {Node<vec4>} color - The input color with non-premultiplied alpha.
|
|
14
|
+
* @return {Node<vec4>} The color with premultiplied alpha.
|
|
15
|
+
*/
|
|
16
|
+
export const premultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
17
|
+
|
|
18
|
+
return vec4( color.rgb.mul( color.a ), color.a );
|
|
19
|
+
|
|
20
|
+
}, { color: 'vec4', return: 'vec4' } );
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Unpremultiplies the RGB channels of a color by its alpha channel.
|
|
24
|
+
*
|
|
25
|
+
* This function is useful for converting a premultiplied alpha color
|
|
26
|
+
* back into a non-premultiplied alpha format, where the RGB values are
|
|
27
|
+
* divided by the alpha value. Unpremultiplied alpha is often used in graphics
|
|
28
|
+
* rendering for certain operations, such as compositing and image processing.
|
|
29
|
+
*
|
|
30
|
+
* @tsl
|
|
31
|
+
* @function
|
|
32
|
+
* @param {Node<vec4>} color - The input color with premultiplied alpha.
|
|
33
|
+
* @return {Node<vec4>} The color with non-premultiplied alpha.
|
|
34
|
+
*/
|
|
35
|
+
export const unpremultiplyAlpha = /*@__PURE__*/ Fn( ( [ color ] ) => {
|
|
36
|
+
|
|
37
|
+
return color.a.equal( 0 ).select( vec4( 0 ), vec4( color.rgb.div( color.a ), color.a ) );
|
|
38
|
+
|
|
39
|
+
}, { color: 'vec4', return: 'vec4' } );
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import TempNode from '../core/TempNode.js';
|
|
2
|
-
import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
|
|
2
|
+
import { addMethodChaining, nodeObject, vec4 } from '../tsl/TSLCore.js';
|
|
3
|
+
import { premultiplyAlpha, unpremultiplyAlpha } from './PremultiplyAlphaFunctions.js';
|
|
3
4
|
|
|
4
5
|
import { NoColorSpace, NoToneMapping } from '../../constants.js';
|
|
5
6
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
|
-
* Normally, tone mapping and color conversion happens automatically
|
|
9
|
-
* before outputting pixel
|
|
10
|
-
* post processing setups this
|
|
9
|
+
* Normally, tone mapping and color conversion happens automatically just
|
|
10
|
+
* before outputting a pixel to the default (screen) framebuffer. In certain
|
|
11
|
+
* post processing setups this is too late because some effects such as FXAA
|
|
11
12
|
* require e.g. sRGB input. For such scenarios, `RenderOutputNode` can be used
|
|
12
13
|
* to apply tone mapping and color space conversion at an arbitrary point
|
|
13
14
|
* in the effect chain.
|
|
14
15
|
*
|
|
15
16
|
* When applying tone mapping and color space conversion manually with this node,
|
|
16
|
-
* you have to set {@link
|
|
17
|
+
* you have to set {@link RenderPipeline#outputColorTransform} to `false`.
|
|
17
18
|
*
|
|
18
19
|
* ```js
|
|
19
|
-
* const postProcessing = new
|
|
20
|
+
* const postProcessing = new RenderPipeline( renderer );
|
|
20
21
|
* postProcessing.outputColorTransform = false;
|
|
21
22
|
*
|
|
22
23
|
* const scenePass = pass( scene, camera );
|
|
@@ -108,9 +109,15 @@ class RenderOutputNode extends TempNode {
|
|
|
108
109
|
|
|
109
110
|
let outputNode = this.colorNode || context.color;
|
|
110
111
|
|
|
111
|
-
//
|
|
112
|
+
// clamp alpha
|
|
113
|
+
outputNode = vec4( outputNode.rgb, outputNode.a.clamp( 0.0, 1.0 ) );
|
|
114
|
+
|
|
115
|
+
// unpremultiply
|
|
116
|
+
outputNode = unpremultiplyAlpha( outputNode );
|
|
112
117
|
|
|
118
|
+
// tone mapping
|
|
113
119
|
const toneMapping = ( this._toneMapping !== null ? this._toneMapping : context.toneMapping ) || NoToneMapping;
|
|
120
|
+
|
|
114
121
|
const outputColorSpace = ( this.outputColorSpace !== null ? this.outputColorSpace : context.outputColorSpace ) || NoColorSpace;
|
|
115
122
|
|
|
116
123
|
if ( toneMapping !== NoToneMapping ) {
|
|
@@ -120,13 +127,15 @@ class RenderOutputNode extends TempNode {
|
|
|
120
127
|
}
|
|
121
128
|
|
|
122
129
|
// working to output color space
|
|
123
|
-
|
|
124
130
|
if ( outputColorSpace !== NoColorSpace && outputColorSpace !== ColorManagement.workingColorSpace ) {
|
|
125
131
|
|
|
126
132
|
outputNode = outputNode.workingToColorSpace( outputColorSpace );
|
|
127
133
|
|
|
128
134
|
}
|
|
129
135
|
|
|
136
|
+
// premultiply in output color space
|
|
137
|
+
outputNode = premultiplyAlpha( outputNode );
|
|
138
|
+
|
|
130
139
|
return outputNode;
|
|
131
140
|
|
|
132
141
|
}
|
|
@@ -136,7 +145,7 @@ class RenderOutputNode extends TempNode {
|
|
|
136
145
|
export default RenderOutputNode;
|
|
137
146
|
|
|
138
147
|
/**
|
|
139
|
-
* TSL function for creating a
|
|
148
|
+
* TSL function for creating a render output node.
|
|
140
149
|
*
|
|
141
150
|
* @tsl
|
|
142
151
|
* @function
|
|
@@ -145,6 +154,6 @@ export default RenderOutputNode;
|
|
|
145
154
|
* @param {?string} [outputColorSpace=null] - The output color space.
|
|
146
155
|
* @returns {RenderOutputNode}
|
|
147
156
|
*/
|
|
148
|
-
export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) =>
|
|
157
|
+
export const renderOutput = ( color, toneMapping = null, outputColorSpace = null ) => new RenderOutputNode( nodeObject( color ), toneMapping, outputColorSpace );
|
|
149
158
|
|
|
150
159
|
addMethodChaining( 'renderOutput', renderOutput );
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
|
+
import StackTrace from '../core/StackTrace.js';
|
|
2
3
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
4
|
import { uniform } from '../core/UniformNode.js';
|
|
4
5
|
import { Fn, nodeImmutable, vec2 } from '../tsl/TSLBase.js';
|
|
@@ -49,6 +50,7 @@ class ScreenNode extends Node {
|
|
|
49
50
|
/**
|
|
50
51
|
* This output node.
|
|
51
52
|
*
|
|
53
|
+
* @private
|
|
52
54
|
* @type {?Node}
|
|
53
55
|
* @default null
|
|
54
56
|
*/
|
|
@@ -70,7 +72,7 @@ class ScreenNode extends Node {
|
|
|
70
72
|
*
|
|
71
73
|
* @return {('float'|'vec2'|'vec4')} The node type.
|
|
72
74
|
*/
|
|
73
|
-
|
|
75
|
+
generateNodeType() {
|
|
74
76
|
|
|
75
77
|
if ( this.scope === ScreenNode.DPR ) return 'float';
|
|
76
78
|
if ( this.scope === ScreenNode.VIEWPORT ) return 'vec4';
|
|
@@ -283,7 +285,7 @@ export const viewportUV = /*@__PURE__*/ viewportCoordinate.div( viewportSize );
|
|
|
283
285
|
*/
|
|
284
286
|
export const viewportResolution = /*@__PURE__*/ ( Fn( () => { // @deprecated, r169
|
|
285
287
|
|
|
286
|
-
warn( 'TSL: "viewportResolution" is deprecated. Use "screenSize" instead.' );
|
|
288
|
+
warn( 'TSL: "viewportResolution" is deprecated. Use "screenSize" instead.', new StackTrace() );
|
|
287
289
|
|
|
288
290
|
return screenSize;
|
|
289
291
|
|
|
@@ -134,7 +134,7 @@ export default ToneMappingNode;
|
|
|
134
134
|
* @param {Node<vec3> | Color} color - The color node to process.
|
|
135
135
|
* @returns {ToneMappingNode<vec3>}
|
|
136
136
|
*/
|
|
137
|
-
export const toneMapping = ( mapping, exposure, color ) =>
|
|
137
|
+
export const toneMapping = ( mapping, exposure, color ) => new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) );
|
|
138
138
|
|
|
139
139
|
/**
|
|
140
140
|
* TSL object that represents the global tone mapping exposure of the renderer.
|
|
@@ -14,7 +14,7 @@ import PassNode from './PassNode.js';
|
|
|
14
14
|
* will receive the outline.
|
|
15
15
|
*
|
|
16
16
|
* ```js
|
|
17
|
-
* const postProcessing = new
|
|
17
|
+
* const postProcessing = new RenderPipeline( renderer );
|
|
18
18
|
*
|
|
19
19
|
* const scenePass = toonOutlinePass( scene, camera );
|
|
20
20
|
*
|
|
@@ -188,4 +188,4 @@ export default ToonOutlinePassNode;
|
|
|
188
188
|
* @param {number} [alpha=1] - Defines the outline's alpha.
|
|
189
189
|
* @returns {ToonOutlinePassNode}
|
|
190
190
|
*/
|
|
191
|
-
export const toonOutlinePass = ( scene, camera, color = new Color( 0, 0, 0 ), thickness = 0.003, alpha = 1 ) =>
|
|
191
|
+
export const toonOutlinePass = ( scene, camera, color = new Color( 0, 0, 0 ), thickness = 0.003, alpha = 1 ) => new ToonOutlinePassNode( scene, camera, nodeObject( color ), nodeObject( thickness ), nodeObject( alpha ) );
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
|
-
import { float, log, log2, nodeImmutable, nodeProxy } from '../tsl/TSLBase.js';
|
|
2
|
+
import { float, Fn, log, log2, nodeImmutable, nodeProxy } from '../tsl/TSLBase.js';
|
|
3
3
|
import { cameraNear, cameraFar } from '../accessors/Camera.js';
|
|
4
4
|
import { positionView } from '../accessors/Position.js';
|
|
5
5
|
import { viewportDepthTexture } from './ViewportDepthTextureNode.js';
|
|
@@ -86,7 +86,7 @@ class ViewportDepthNode extends Node {
|
|
|
86
86
|
|
|
87
87
|
if ( value !== null ) {
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
node = depthBase().assign( value );
|
|
90
90
|
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -152,6 +152,18 @@ export default ViewportDepthNode;
|
|
|
152
152
|
*/
|
|
153
153
|
export const viewZToOrthographicDepth = ( viewZ, near, far ) => viewZ.add( near ).div( near.sub( far ) );
|
|
154
154
|
|
|
155
|
+
/**
|
|
156
|
+
* TSL function for converting a viewZ value to a reversed orthographic depth value.
|
|
157
|
+
*
|
|
158
|
+
* @tsl
|
|
159
|
+
* @function
|
|
160
|
+
* @param {Node<float>} viewZ - The viewZ node.
|
|
161
|
+
* @param {Node<float>} near - The camera's near value.
|
|
162
|
+
* @param {Node<float>} far - The camera's far value.
|
|
163
|
+
* @returns {Node<float>}
|
|
164
|
+
*/
|
|
165
|
+
export const viewZToReversedOrthographicDepth = ( viewZ, near, far ) => viewZ.add( far ).div( far.sub( near ) );
|
|
166
|
+
|
|
155
167
|
/**
|
|
156
168
|
* TSL function for converting an orthographic depth value to a viewZ value.
|
|
157
169
|
*
|
|
@@ -162,7 +174,19 @@ export const viewZToOrthographicDepth = ( viewZ, near, far ) => viewZ.add( near
|
|
|
162
174
|
* @param {Node<float>} far - The camera's far value.
|
|
163
175
|
* @returns {Node<float>}
|
|
164
176
|
*/
|
|
165
|
-
export const orthographicDepthToViewZ = ( depth, near, far
|
|
177
|
+
export const orthographicDepthToViewZ = /*@__PURE__*/ Fn( ( [ depth, near, far ], builder ) => {
|
|
178
|
+
|
|
179
|
+
if ( builder.renderer.reversedDepthBuffer === true ) {
|
|
180
|
+
|
|
181
|
+
return far.sub( near ).mul( depth ).sub( far );
|
|
182
|
+
|
|
183
|
+
} else {
|
|
184
|
+
|
|
185
|
+
return near.sub( far ).mul( depth ).sub( near );
|
|
186
|
+
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
} );
|
|
166
190
|
|
|
167
191
|
/**
|
|
168
192
|
* TSL function for converting a viewZ value to a perspective depth value.
|
|
@@ -178,6 +202,18 @@ export const orthographicDepthToViewZ = ( depth, near, far ) => near.sub( far ).
|
|
|
178
202
|
*/
|
|
179
203
|
export const viewZToPerspectiveDepth = ( viewZ, near, far ) => near.add( viewZ ).mul( far ).div( far.sub( near ).mul( viewZ ) );
|
|
180
204
|
|
|
205
|
+
/**
|
|
206
|
+
* TSL function for converting a viewZ value to a reversed perspective depth value.
|
|
207
|
+
*
|
|
208
|
+
* @tsl
|
|
209
|
+
* @function
|
|
210
|
+
* @param {Node<float>} viewZ - The viewZ node.
|
|
211
|
+
* @param {Node<float>} near - The camera's near value.
|
|
212
|
+
* @param {Node<float>} far - The camera's far value.
|
|
213
|
+
* @returns {Node<float>}
|
|
214
|
+
*/
|
|
215
|
+
export const viewZToReversedPerspectiveDepth = ( viewZ, near, far ) => near.mul( viewZ.add( far ) ).div( viewZ.mul( near.sub( far ) ) );
|
|
216
|
+
|
|
181
217
|
/**
|
|
182
218
|
* TSL function for converting a perspective depth value to a viewZ value.
|
|
183
219
|
*
|
|
@@ -188,7 +224,19 @@ export const viewZToPerspectiveDepth = ( viewZ, near, far ) => near.add( viewZ )
|
|
|
188
224
|
* @param {Node<float>} far - The camera's far value.
|
|
189
225
|
* @returns {Node<float>}
|
|
190
226
|
*/
|
|
191
|
-
export const perspectiveDepthToViewZ = ( depth, near, far
|
|
227
|
+
export const perspectiveDepthToViewZ = /*@__PURE__*/ Fn( ( [ depth, near, far ], builder ) => {
|
|
228
|
+
|
|
229
|
+
if ( builder.renderer.reversedDepthBuffer === true ) {
|
|
230
|
+
|
|
231
|
+
return near.mul( far ).div( near.sub( far ).mul( depth ).sub( near ) );
|
|
232
|
+
|
|
233
|
+
} else {
|
|
234
|
+
|
|
235
|
+
return near.mul( far ).div( far.sub( near ).mul( depth ).sub( far ) );
|
|
236
|
+
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
} );
|
|
192
240
|
|
|
193
241
|
/**
|
|
194
242
|
* TSL function for converting a viewZ value to a logarithmic depth value.
|