@unikia/upe-renderer 0.186.110 → 0.187.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HalfFloatType, Vector2, RenderTarget, RendererUtils, QuadMesh, NodeMaterial,
|
|
1
|
+
import { HalfFloatType, Vector2, RenderTarget, RendererUtils, QuadMesh, NodeMaterial, Node, NodeUpdateType, Matrix4, DepthTexture } from 'three/webgpu';
|
|
2
2
|
import { float, Fn, max, texture, uniform, uv, vec2, convertToTexture, passTexture, velocity, ivec2, mix, context, OnBeforeRenderPipeline, OnAfterRenderPipeline } from 'three/tsl';
|
|
3
3
|
import { clipAABB, computeHaltonOffsets, flickerReduction, sampleCurrentDepth, samplePreviousDepth } from '../utils/TAAUtils.js';
|
|
4
4
|
|
|
@@ -17,10 +17,10 @@ let _rendererState;
|
|
|
17
17
|
*
|
|
18
18
|
* Note: MSAA must be disabled when TRAA is in use.
|
|
19
19
|
*
|
|
20
|
-
* @augments
|
|
20
|
+
* @augments Node
|
|
21
21
|
* @three_import import { traa } from 'three/addons/tsl/display/TRAANode.js';
|
|
22
22
|
*/
|
|
23
|
-
class TRAANode extends
|
|
23
|
+
class TRAANode extends Node {
|
|
24
24
|
|
|
25
25
|
static get type() {
|
|
26
26
|
|
|
@@ -234,15 +234,7 @@ class TRAANode extends TempNode {
|
|
|
234
234
|
* @private
|
|
235
235
|
* @type {TextureNode}
|
|
236
236
|
*/
|
|
237
|
-
this._previousDepthNode = texture(
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* Sync the post processing stack with the TRAA node.
|
|
241
|
-
*
|
|
242
|
-
* @private
|
|
243
|
-
* @type {boolean}
|
|
244
|
-
*/
|
|
245
|
-
this._needsPostProcessingSync = false;
|
|
237
|
+
this._previousDepthNode = texture( this._historyRenderTarget.depthTexture );
|
|
246
238
|
|
|
247
239
|
/**
|
|
248
240
|
* The node used to render the scene's velocity.
|
|
@@ -367,16 +359,6 @@ class TRAANode extends TempNode {
|
|
|
367
359
|
const width = beautyRenderTarget.texture.width;
|
|
368
360
|
const height = beautyRenderTarget.texture.height;
|
|
369
361
|
|
|
370
|
-
//
|
|
371
|
-
|
|
372
|
-
if ( this._needsPostProcessingSync === true ) {
|
|
373
|
-
|
|
374
|
-
this.setViewOffset( width, height );
|
|
375
|
-
|
|
376
|
-
this._needsPostProcessingSync = false;
|
|
377
|
-
|
|
378
|
-
}
|
|
379
|
-
|
|
380
362
|
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
381
363
|
|
|
382
364
|
//
|
|
@@ -388,11 +370,6 @@ class TRAANode extends TempNode {
|
|
|
388
370
|
|
|
389
371
|
if ( needsRestart === true ) {
|
|
390
372
|
|
|
391
|
-
// make sure render targets are initialized after the resize which triggers a dispose()
|
|
392
|
-
|
|
393
|
-
renderer.initRenderTarget( this._historyRenderTarget );
|
|
394
|
-
renderer.initRenderTarget( this._resolveRenderTarget );
|
|
395
|
-
|
|
396
373
|
// make sure to reset the history with the contents of the beauty buffer otherwise subsequent frames after the
|
|
397
374
|
// resize will fade from a darker color to the correct one because the history was cleared with black.
|
|
398
375
|
|
|
@@ -425,7 +402,6 @@ class TRAANode extends TempNode {
|
|
|
425
402
|
|
|
426
403
|
const currentDepth = this.depthNode.value;
|
|
427
404
|
renderer.copyTextureToTexture( currentDepth, this._historyRenderTarget.depthTexture );
|
|
428
|
-
this._previousDepthNode.value = this._historyRenderTarget.depthTexture;
|
|
429
405
|
|
|
430
406
|
}
|
|
431
407
|
|
|
@@ -443,12 +419,14 @@ class TRAANode extends TempNode {
|
|
|
443
419
|
*/
|
|
444
420
|
setup( builder ) {
|
|
445
421
|
|
|
422
|
+
this.depthNode.build( builder );
|
|
423
|
+
this.velocityNode.build( builder );
|
|
424
|
+
this.beautyNode.build( builder );
|
|
425
|
+
|
|
446
426
|
if ( builder.renderPipeline && ! builder.context.renderPipelineState.viewOffsetOwner ) {
|
|
447
427
|
|
|
448
428
|
builder.context.renderPipelineState.viewOffsetOwner = this;
|
|
449
429
|
|
|
450
|
-
this._needsPostProcessingSync = true;
|
|
451
|
-
|
|
452
430
|
OnBeforeRenderPipeline( () => {
|
|
453
431
|
|
|
454
432
|
const size = builder.renderer.getDrawingBufferSize( _size );
|
|
@@ -464,11 +442,8 @@ class TRAANode extends TempNode {
|
|
|
464
442
|
|
|
465
443
|
}
|
|
466
444
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
this._historyRenderTarget.depthTexture.type = FloatType;
|
|
470
|
-
|
|
471
|
-
}
|
|
445
|
+
this._historyRenderTarget.depthTexture.format = this.depthNode.value.format;
|
|
446
|
+
this._historyRenderTarget.depthTexture.type = this.depthNode.value.type;
|
|
472
447
|
|
|
473
448
|
if ( builder.context.velocity !== undefined ) {
|
|
474
449
|
|
|
@@ -525,14 +500,7 @@ class TRAANode extends TempNode {
|
|
|
525
500
|
const weight = max( phase, phase.oneMinus() );
|
|
526
501
|
return weight.x.mul( weight.y ).oneMinus().div( 0.75 );
|
|
527
502
|
|
|
528
|
-
} )
|
|
529
|
-
name: 'subpixelCorrection',
|
|
530
|
-
type: 'float',
|
|
531
|
-
inputs: [
|
|
532
|
-
{ name: 'velocityUV', type: 'vec2' },
|
|
533
|
-
{ name: 'textureSize', type: 'ivec2' }
|
|
534
|
-
]
|
|
535
|
-
} );
|
|
503
|
+
}, { velocityUV: 'vec2', textureSize: 'ivec2', return: 'float' } );
|
|
536
504
|
|
|
537
505
|
const historyNode = texture( this._historyRenderTarget.texture );
|
|
538
506
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EPSILON, Fn, If, abs, convertToTexture, dFdx, dFdy, dot, exp, float, floor, fwidth, getViewPosition, ivec2, luminance, max, min, mix, nodeObject, normalize, passTexture, screenCoordinate, select, smoothstep, sqrt, struct, texture, textureLoad, uniform, unpackRGBToNormal, uv, vec2, vec3, vec4, velocity, context, OnBeforeRenderPipeline, OnAfterRenderPipeline } from 'three/tsl';
|
|
2
|
-
import { DepthTexture, HalfFloatType, Matrix4, NodeMaterial, NodeUpdateType, QuadMesh, RenderTarget, RendererUtils,
|
|
1
|
+
import { EPSILON, Fn, If, abs, convertToTexture, dFdx, dFdy, dot, exp, float, floor, fwidth, getViewPosition, ivec2, luminance, max, min, mix, nodeObject, normalize, passTexture, screenCoordinate, select, smoothstep, sqrt, struct, texture, textureLoad, uniform, unpackRGBToNormal, uv, vec2, vec3, vec4, velocity, context, OnBeforeRenderPipeline, OnAfterRenderPipeline, isBackgroundDepth } from 'three/tsl';
|
|
2
|
+
import { DepthTexture, HalfFloatType, Matrix4, NodeMaterial, NodeUpdateType, QuadMesh, RenderTarget, RendererUtils, Node, Vector2, Vector3 } from 'three/webgpu';
|
|
3
3
|
import { ENV_RAY_LENGTH, ENV_RAY_LENGTH_THRESHOLD } from '../utils/SpecularHelpers.js';
|
|
4
4
|
|
|
5
5
|
// Reprojection helpers
|
|
@@ -13,15 +13,7 @@ const beautyTexelFromScreen = Fn( ( [ screenTexel, beautySize, resolveSize ] ) =
|
|
|
13
13
|
|
|
14
14
|
return ivec2( floor( vec2( screenTexel ).mul( beautySize ).div( resolveSize ) ) );
|
|
15
15
|
|
|
16
|
-
} )
|
|
17
|
-
name: 'beautyTexelFromScreen',
|
|
18
|
-
type: 'ivec2',
|
|
19
|
-
inputs: [
|
|
20
|
-
{ name: 'screenTexel', type: 'ivec2' },
|
|
21
|
-
{ name: 'beautySize', type: 'vec2' },
|
|
22
|
-
{ name: 'resolveSize', type: 'vec2' }
|
|
23
|
-
]
|
|
24
|
-
} );
|
|
16
|
+
}, { screenTexel: 'ivec2', beautySize: 'vec2', resolveSize: 'vec2', return: 'ivec2' } );
|
|
25
17
|
|
|
26
18
|
/**
|
|
27
19
|
* Projects a world-space position into previous-frame UV coordinates.
|
|
@@ -45,15 +37,7 @@ const projectWorldToUV = Fn( ( [ worldPos, previousViewMatrix, previousProjectio
|
|
|
45
37
|
|
|
46
38
|
return resultUV;
|
|
47
39
|
|
|
48
|
-
} )
|
|
49
|
-
name: 'projectWorldToUV',
|
|
50
|
-
type: 'vec2',
|
|
51
|
-
inputs: [
|
|
52
|
-
{ name: 'worldPos', type: 'vec3' },
|
|
53
|
-
{ name: 'previousViewMatrix', type: 'mat4' },
|
|
54
|
-
{ name: 'previousProjectionMatrix', type: 'mat4' }
|
|
55
|
-
]
|
|
56
|
-
} );
|
|
40
|
+
}, { worldPos: 'vec3', previousViewMatrix: 'mat4', previousProjectionMatrix: 'mat4', return: 'vec2' } );
|
|
57
41
|
|
|
58
42
|
// YCoCg variance clipping
|
|
59
43
|
|
|
@@ -112,15 +96,7 @@ const clipToAABB = Fn( ( [ history, boxMin, boxMax ] ) => {
|
|
|
112
96
|
|
|
113
97
|
return maxUnit.greaterThan( 1 ).select( pClip.add( vClip.div( maxUnit ) ), history );
|
|
114
98
|
|
|
115
|
-
} )
|
|
116
|
-
name: 'clipToAABB',
|
|
117
|
-
type: 'vec3',
|
|
118
|
-
inputs: [
|
|
119
|
-
{ name: 'history', type: 'vec3' },
|
|
120
|
-
{ name: 'boxMin', type: 'vec3' },
|
|
121
|
-
{ name: 'boxMax', type: 'vec3' }
|
|
122
|
-
]
|
|
123
|
-
} );
|
|
99
|
+
}, { history: 'vec3', boxMin: 'vec3', boxMax: 'vec3', return: 'vec3' } );
|
|
124
100
|
|
|
125
101
|
const neighborhoodStruct = struct( {
|
|
126
102
|
mean: 'vec3',
|
|
@@ -387,7 +363,7 @@ const reprojectionStretchConfidence = Fn( ( [ historyUV, resolution ] ) => {
|
|
|
387
363
|
|
|
388
364
|
return sigMin.saturate();
|
|
389
365
|
|
|
390
|
-
} );
|
|
366
|
+
}, { historyUV: 'vec2', resolution: 'vec2', return: 'float' } );
|
|
391
367
|
|
|
392
368
|
// Specular reprojection
|
|
393
369
|
|
|
@@ -409,6 +385,13 @@ const reprojectHitPoint = Fn( ( [
|
|
|
409
385
|
|
|
410
386
|
return projectWorldToUV( parallaxHitPoint, previousViewMatrix, previousProjectionMatrix );
|
|
411
387
|
|
|
388
|
+
}, {
|
|
389
|
+
rayOrig: 'vec3',
|
|
390
|
+
rayLength: 'float',
|
|
391
|
+
cameraWorldPosition: 'vec3',
|
|
392
|
+
previousViewMatrix: 'mat4',
|
|
393
|
+
previousProjectionMatrix: 'mat4',
|
|
394
|
+
return: 'vec2'
|
|
412
395
|
} );
|
|
413
396
|
|
|
414
397
|
/**
|
|
@@ -420,11 +403,7 @@ const velocityToUVOffset = Fn( ( [ velocity ] ) => {
|
|
|
420
403
|
|
|
421
404
|
return velocity.mul( vec2( 0.5, - 0.5 ) );
|
|
422
405
|
|
|
423
|
-
} )
|
|
424
|
-
name: 'velocityToUVOffset',
|
|
425
|
-
type: 'vec2',
|
|
426
|
-
inputs: [ { name: 'velocity', type: 'vec2' } ]
|
|
427
|
-
} );
|
|
406
|
+
}, { velocity: 'vec2', return: 'vec2' } );
|
|
428
407
|
|
|
429
408
|
/**
|
|
430
409
|
* Current and previous-frame camera matrices for temporal reprojection passes.
|
|
@@ -513,10 +492,10 @@ const VARIANCE_GAMMA_MAX = 1;
|
|
|
513
492
|
* - {@link https://alextardif.com/TAA.html}
|
|
514
493
|
* - {@link https://www.elopezr.com/temporal-aa-and-the-quest-for-the-holy-trail/}
|
|
515
494
|
*
|
|
516
|
-
* @augments
|
|
495
|
+
* @augments Node
|
|
517
496
|
* @three_import import { temporalReproject } from 'three/addons/tsl/display/TemporalReprojectNode.js';
|
|
518
497
|
*/
|
|
519
|
-
class TemporalReprojectNode extends
|
|
498
|
+
class TemporalReprojectNode extends Node {
|
|
520
499
|
|
|
521
500
|
static get type() {
|
|
522
501
|
|
|
@@ -660,16 +639,29 @@ class TemporalReprojectNode extends TempNode {
|
|
|
660
639
|
|
|
661
640
|
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
662
641
|
|
|
663
|
-
const
|
|
642
|
+
const currentDepth = this.depthNode.value;
|
|
643
|
+
const historyDepth = this._historyRenderTarget.depthTexture;
|
|
644
|
+
|
|
645
|
+
const depthFormatChanged = historyDepth.format !== currentDepth.format || historyDepth.type !== currentDepth.type;
|
|
646
|
+
|
|
647
|
+
// The texture copy requires matching formats, e.g. float depth with reversed depth or depth/stencil.
|
|
648
|
+
// Checked here since updateBefore() can run before setup() when driven by another node.
|
|
649
|
+
|
|
650
|
+
if ( depthFormatChanged === true ) {
|
|
651
|
+
|
|
652
|
+
historyDepth.format = currentDepth.format;
|
|
653
|
+
historyDepth.type = currentDepth.type;
|
|
654
|
+
historyDepth.needsUpdate = true;
|
|
655
|
+
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
const needsRestart = depthFormatChanged === true || this._historyRenderTarget.width !== width || this._historyRenderTarget.height !== height;
|
|
664
659
|
this.setSize( width, height );
|
|
665
660
|
|
|
666
661
|
let historySwappedForRestart = false;
|
|
667
662
|
|
|
668
663
|
if ( needsRestart === true ) {
|
|
669
664
|
|
|
670
|
-
renderer.initRenderTarget( this._historyRenderTarget );
|
|
671
|
-
renderer.initRenderTarget( this._resolveRenderTarget );
|
|
672
|
-
|
|
673
665
|
this._previousNormalTexture.dispose();
|
|
674
666
|
this._previousNormalTexture = this.normalNode.value.clone();
|
|
675
667
|
this._previousNormalNode.value = this._previousNormalTexture;
|
|
@@ -708,16 +700,15 @@ class TemporalReprojectNode extends TempNode {
|
|
|
708
700
|
|
|
709
701
|
}
|
|
710
702
|
|
|
711
|
-
const currentDepth = this.depthNode.value;
|
|
712
703
|
const srcW = currentDepth.image !== null && currentDepth.image !== undefined ? currentDepth.image.width : 0;
|
|
713
704
|
const srcH = currentDepth.image !== null && currentDepth.image !== undefined ? currentDepth.image.height : 0;
|
|
714
705
|
|
|
715
706
|
if ( srcW > 0 && srcH > 0 ) {
|
|
716
707
|
|
|
717
|
-
renderer.copyTextureToTexture( currentDepth,
|
|
708
|
+
renderer.copyTextureToTexture( currentDepth, historyDepth );
|
|
718
709
|
renderer.copyTextureToTexture( this.normalNode.value, this._previousNormalTexture );
|
|
719
710
|
|
|
720
|
-
this._previousDepthNode.value =
|
|
711
|
+
this._previousDepthNode.value = historyDepth;
|
|
721
712
|
|
|
722
713
|
}
|
|
723
714
|
|
|
@@ -727,6 +718,10 @@ class TemporalReprojectNode extends TempNode {
|
|
|
727
718
|
|
|
728
719
|
setup( builder ) {
|
|
729
720
|
|
|
721
|
+
// Ensures the pass providing the depth updates before this node.
|
|
722
|
+
|
|
723
|
+
this.depthNode.build( builder );
|
|
724
|
+
|
|
730
725
|
const sharedContext = context( builder.getSharedContext() );
|
|
731
726
|
|
|
732
727
|
if ( builder.renderPipeline && ! builder.context.renderPipelineState.viewOffsetOwner ) {
|
|
@@ -788,7 +783,7 @@ class TemporalReprojectNode extends TempNode {
|
|
|
788
783
|
|
|
789
784
|
const screenTexel = ivec2( floor( screenCoordinate.xy.sub( 0.5 ) ) );
|
|
790
785
|
const depth = textureLoad( this.depthNode, screenTexel ).r.toVar();
|
|
791
|
-
|
|
786
|
+
isBackgroundDepth( depth ).discard();
|
|
792
787
|
|
|
793
788
|
const beautySize = this.beautyNode.size();
|
|
794
789
|
const beautyTexel = beautyTexelFromScreen( screenTexel, beautySize, this._resolution );
|
|
@@ -1019,11 +1014,11 @@ export default TemporalReprojectNode;
|
|
|
1019
1014
|
* @param {TemporalReprojectNodeOptions} [options]
|
|
1020
1015
|
* @returns {TemporalReprojectNode}
|
|
1021
1016
|
*/
|
|
1022
|
-
export const temporalReproject = ( beautyNode, depthNode, normalNode, velocityNode, camera, options = {} ) =>
|
|
1017
|
+
export const temporalReproject = ( beautyNode, depthNode, normalNode, velocityNode, camera, options = {} ) => new TemporalReprojectNode(
|
|
1023
1018
|
convertToTexture( beautyNode ),
|
|
1024
1019
|
nodeObject( depthNode ),
|
|
1025
1020
|
nodeObject( normalNode ),
|
|
1026
1021
|
nodeObject( velocityNode ),
|
|
1027
1022
|
camera,
|
|
1028
1023
|
options
|
|
1029
|
-
)
|
|
1024
|
+
);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Node } from 'three/webgpu';
|
|
2
2
|
import { nodeObject, Fn, float, uv, convertToTexture, vec4, If, int, clamp, sub, mix } from 'three/tsl';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Post processing node for creating a transition effect between scenes.
|
|
6
6
|
*
|
|
7
|
-
* @augments
|
|
7
|
+
* @augments Node
|
|
8
8
|
* @three_import import { transition } from 'three/addons/tsl/display/TransitionNode.js';
|
|
9
9
|
*/
|
|
10
|
-
class TransitionNode extends
|
|
10
|
+
class TransitionNode extends Node {
|
|
11
11
|
|
|
12
12
|
static get type() {
|
|
13
13
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { float, Fn, vec2, vec4, uv, min, screenSize, convertToTexture } from 'three/tsl';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Applies a lens dirt effect. The lens dirt texture is revealed wherever the
|
|
5
|
+
* scene's luminance is bright. The input is typically a blurred luminance of
|
|
6
|
+
* the scene, e.g. the result of a bloom pass. A wider blur reveals the dirt
|
|
7
|
+
* over a larger area around bright spots.
|
|
8
|
+
*
|
|
9
|
+
* @tsl
|
|
10
|
+
* @function
|
|
11
|
+
* @param {Node<vec4>} textureNode - The node that represents the scene's blurred luminance.
|
|
12
|
+
* @param {TextureNode} dirtTextureNode - The lens dirt texture.
|
|
13
|
+
* @param {Node<float>} [intensity=float(1)] - Defines the intensity of the lens dirt.
|
|
14
|
+
* @return {Node<vec4>} The lens dirt.
|
|
15
|
+
*/
|
|
16
|
+
export const lensDirt = /*#__PURE__*/ Fn( ( [ textureNode, dirtTextureNode, intensity = float( 1 ) ] ) => {
|
|
17
|
+
|
|
18
|
+
textureNode = convertToTexture( textureNode );
|
|
19
|
+
|
|
20
|
+
const targetUV = textureNode.uvNode || uv();
|
|
21
|
+
|
|
22
|
+
const dirtSize = vec2( dirtTextureNode.size( 0 ) ).toConst();
|
|
23
|
+
const aspect = screenSize.x.div( screenSize.y ).div( dirtSize.x.div( dirtSize.y ) ).toConst();
|
|
24
|
+
const dirtUV = targetUV.sub( 0.5 ).mul( vec2( min( aspect, 1 ), min( aspect.reciprocal(), 1 ) ) ).add( 0.5 ).toConst();
|
|
25
|
+
|
|
26
|
+
const dirt = dirtTextureNode.sample( dirtUV ).rgb.mul( textureNode.sample( targetUV ).rgb ).mul( intensity );
|
|
27
|
+
|
|
28
|
+
return vec4( dirt, 1 );
|
|
29
|
+
|
|
30
|
+
} );
|