@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,20 +1,28 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
2
|
import NodeError from '../core/NodeError.js';
|
|
3
3
|
import { getValueType } from '../core/NodeUtils.js';
|
|
4
|
-
import { buffer } from '../accessors/BufferNode.js';
|
|
5
|
-
import { instancedBufferAttribute } from '../accessors/BufferAttributeNode.js';
|
|
6
4
|
import { instanceIndex } from '../core/IndexNode.js';
|
|
7
|
-
import {
|
|
5
|
+
import { uniform } from '../core/UniformNode.js';
|
|
6
|
+
import { hash } from '../math/Hash.js';
|
|
7
|
+
import { mix } from '../math/MathNode.js';
|
|
8
|
+
import { nodeProxy, float, uint, vec4 } from '../tsl/TSLBase.js';
|
|
8
9
|
|
|
9
10
|
import { Vector4 } from '../../math/Vector4.js';
|
|
10
|
-
import { MathUtils } from '../../math/MathUtils.js';
|
|
11
|
-
import { InstancedBufferAttribute } from '../../core/InstancedBufferAttribute.js';
|
|
12
11
|
|
|
13
|
-
let
|
|
14
|
-
|
|
12
|
+
let _rangeId = 0;
|
|
13
|
+
|
|
14
|
+
// Per-object seed shared by all range nodes, so the values differ between objects.
|
|
15
|
+
|
|
16
|
+
const objectSeed = /*@__PURE__*/ uniform( 0, 'uint' ).onObjectUpdate( ( { object } ) => {
|
|
17
|
+
|
|
18
|
+
const objectId = object !== null ? object.id : 0; // compute has no object
|
|
19
|
+
|
|
20
|
+
return Math.imul( objectId, 0x9E3779B9 ) >>> 0;
|
|
21
|
+
|
|
22
|
+
} );
|
|
15
23
|
|
|
16
24
|
/**
|
|
17
|
-
* `RangeNode` generates random
|
|
25
|
+
* `RangeNode` generates random per-instance values in a defined range.
|
|
18
26
|
* An exemplary use case for this utility node is to generate random per-instance
|
|
19
27
|
* colors:
|
|
20
28
|
* ```js
|
|
@@ -58,6 +66,21 @@ class RangeNode extends Node {
|
|
|
58
66
|
*/
|
|
59
67
|
this.maxNode = maxNode;
|
|
60
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Salt of the random sequence. It uses a counter of range nodes instead of the
|
|
71
|
+
* global node id, so the values only change when range nodes are added or removed.
|
|
72
|
+
*
|
|
73
|
+
* @private
|
|
74
|
+
* @type {number}
|
|
75
|
+
*/
|
|
76
|
+
this._salt = Math.imul( _rangeId ++, 0x85EBCA6B ) >>> 0;
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
isCacheable( /*builder*/ ) {
|
|
81
|
+
|
|
82
|
+
return false;
|
|
83
|
+
|
|
61
84
|
}
|
|
62
85
|
|
|
63
86
|
/**
|
|
@@ -86,7 +109,7 @@ class RangeNode extends Node {
|
|
|
86
109
|
*/
|
|
87
110
|
generateNodeType( builder ) {
|
|
88
111
|
|
|
89
|
-
return builder.
|
|
112
|
+
return builder.getTypeFromLength( this.getVectorLength( builder ) );
|
|
90
113
|
|
|
91
114
|
}
|
|
92
115
|
|
|
@@ -122,75 +145,35 @@ class RangeNode extends Node {
|
|
|
122
145
|
|
|
123
146
|
setup( builder ) {
|
|
124
147
|
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
let output = null;
|
|
128
|
-
|
|
129
|
-
if ( object.count > 1 ) {
|
|
130
|
-
|
|
131
|
-
const minNode = this.getConstNode( this.minNode );
|
|
132
|
-
const maxNode = this.getConstNode( this.maxNode );
|
|
133
|
-
|
|
134
|
-
const minValue = minNode.value;
|
|
135
|
-
const maxValue = maxNode.value;
|
|
136
|
-
|
|
137
|
-
const minLength = builder.getTypeLength( getValueType( minValue ) );
|
|
138
|
-
const maxLength = builder.getTypeLength( getValueType( maxValue ) );
|
|
139
|
-
|
|
140
|
-
min = min || new Vector4();
|
|
141
|
-
max = max || new Vector4();
|
|
142
|
-
|
|
143
|
-
min.setScalar( 0 );
|
|
144
|
-
max.setScalar( 0 );
|
|
145
|
-
|
|
146
|
-
if ( minLength === 1 ) min.setScalar( minValue );
|
|
147
|
-
else if ( minValue.isColor ) min.set( minValue.r, minValue.g, minValue.b, 1 );
|
|
148
|
-
else min.set( minValue.x, minValue.y, minValue.z || 0, minValue.w || 0 );
|
|
149
|
-
|
|
150
|
-
if ( maxLength === 1 ) max.setScalar( maxValue );
|
|
151
|
-
else if ( maxValue.isColor ) max.set( maxValue.r, maxValue.g, maxValue.b, 1 );
|
|
152
|
-
else max.set( maxValue.x, maxValue.y, maxValue.z || 0, maxValue.w || 0 );
|
|
153
|
-
|
|
154
|
-
const stride = 4;
|
|
155
|
-
|
|
156
|
-
const length = stride * object.count;
|
|
157
|
-
const array = new Float32Array( length );
|
|
158
|
-
|
|
159
|
-
for ( let i = 0; i < length; i ++ ) {
|
|
160
|
-
|
|
161
|
-
const index = i % stride;
|
|
162
|
-
|
|
163
|
-
const minElementValue = min.getComponent( index );
|
|
164
|
-
const maxElementValue = max.getComponent( index );
|
|
165
|
-
|
|
166
|
-
array[ i ] = MathUtils.lerp( minElementValue, maxElementValue, Math.random() );
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const nodeType = this.getNodeType( builder );
|
|
171
|
-
const uniformBufferSize = object.count * 4 * 4; // count * 4 components * 4 bytes (float)
|
|
172
|
-
|
|
173
|
-
if ( uniformBufferSize <= builder.getUniformBufferLimit() ) {
|
|
148
|
+
const minNode = this.getConstNode( this.minNode );
|
|
149
|
+
const maxNode = this.getConstNode( this.maxNode );
|
|
174
150
|
|
|
175
|
-
|
|
151
|
+
const minValue = minNode.value;
|
|
152
|
+
const maxValue = maxNode.value;
|
|
176
153
|
|
|
177
|
-
|
|
154
|
+
const minLength = builder.getTypeLength( getValueType( minValue ) );
|
|
155
|
+
const maxLength = builder.getTypeLength( getValueType( maxValue ) );
|
|
178
156
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
builder.geometry.setAttribute( '__range' + this.id, bufferAttribute );
|
|
157
|
+
const min = new Vector4();
|
|
158
|
+
const max = new Vector4();
|
|
182
159
|
|
|
183
|
-
|
|
160
|
+
if ( minLength === 1 ) min.setScalar( minValue );
|
|
161
|
+
else if ( minValue.isColor ) min.set( minValue.r, minValue.g, minValue.b, 1 );
|
|
162
|
+
else min.set( minValue.x, minValue.y, minValue.z || 0, minValue.w || 0 );
|
|
184
163
|
|
|
185
|
-
|
|
164
|
+
if ( maxLength === 1 ) max.setScalar( maxValue );
|
|
165
|
+
else if ( maxValue.isColor ) max.set( maxValue.r, maxValue.g, maxValue.b, 1 );
|
|
166
|
+
else max.set( maxValue.x, maxValue.y, maxValue.z || 0, maxValue.w || 0 );
|
|
186
167
|
|
|
187
|
-
|
|
168
|
+
// The values are hashed from the instance index instead of stored per object, so they work
|
|
169
|
+
// for any instance count. The salt decorrelates range nodes.
|
|
188
170
|
|
|
189
|
-
|
|
171
|
+
const seed = objectSeed.bitXor( uint( this._salt ) );
|
|
190
172
|
|
|
191
|
-
|
|
173
|
+
const index = instanceIndex.mul( 4 ).add( seed );
|
|
174
|
+
const random = vec4( hash( index ), hash( index.add( 1 ) ), hash( index.add( 2 ) ), hash( index.add( 3 ) ) );
|
|
192
175
|
|
|
193
|
-
return
|
|
176
|
+
return mix( vec4( min ), vec4( max ), random ).convert( this.getNodeType( builder ) );
|
|
194
177
|
|
|
195
178
|
}
|
|
196
179
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import Node from '../core/Node.js';
|
|
2
|
-
import { expression } from '../code/ExpressionNode.js';
|
|
3
2
|
import { nodeProxy } from '../tsl/TSLCore.js';
|
|
4
3
|
import { error } from '../../utils.js';
|
|
5
4
|
|
|
@@ -64,6 +63,12 @@ class AtomicFunctionNode extends Node {
|
|
|
64
63
|
|
|
65
64
|
}
|
|
66
65
|
|
|
66
|
+
isCacheable( /*builder*/ ) {
|
|
67
|
+
|
|
68
|
+
return false;
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
67
72
|
/**
|
|
68
73
|
* Overwrites the default implementation to return the type of
|
|
69
74
|
* the pointer node.
|
|
@@ -128,13 +133,13 @@ class AtomicFunctionNode extends Node {
|
|
|
128
133
|
|
|
129
134
|
} else {
|
|
130
135
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
// The result is stored in a constant, declared in the block where the operation is generated.
|
|
137
|
+
const nodeVar = builder.getVarFromNode( this, null, type, undefined, true, true );
|
|
138
|
+
const propertyName = builder.getPropertyName( nodeVar );
|
|
134
139
|
|
|
135
|
-
}
|
|
140
|
+
builder.addLineFlowCode( `${ builder.generateLetStatement( type, propertyName ) } = ${ methodSnippet }`, this );
|
|
136
141
|
|
|
137
|
-
return
|
|
142
|
+
return propertyName;
|
|
138
143
|
|
|
139
144
|
}
|
|
140
145
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { error } from '../../utils.js';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import Node from '../core/Node.js';
|
|
3
|
+
import { nodeProxyAssignable } from '../tsl/TSLCore.js';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -12,9 +12,9 @@ import { nodeProxyIntent } from '../tsl/TSLCore.js';
|
|
|
12
12
|
* other graphics APIs, subgroup functions are also referred to as wave intrinsics
|
|
13
13
|
* (DirectX/HLSL) or warp intrinsics (CUDA).
|
|
14
14
|
*
|
|
15
|
-
* @augments
|
|
15
|
+
* @augments Node
|
|
16
16
|
*/
|
|
17
|
-
class SubgroupFunctionNode extends
|
|
17
|
+
class SubgroupFunctionNode extends Node {
|
|
18
18
|
|
|
19
19
|
static get type() {
|
|
20
20
|
|
|
@@ -76,6 +76,14 @@ class SubgroupFunctionNode extends TempNode {
|
|
|
76
76
|
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
setup( builder ) {
|
|
80
|
+
|
|
81
|
+
builder.enableSubGroups();
|
|
82
|
+
|
|
83
|
+
return super.setup( builder );
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
79
87
|
generateNodeType( builder ) {
|
|
80
88
|
|
|
81
89
|
const method = this.method;
|
|
@@ -334,7 +342,7 @@ export default SubgroupFunctionNode;
|
|
|
334
342
|
* @method
|
|
335
343
|
* @return {bool} The result of the computation.
|
|
336
344
|
*/
|
|
337
|
-
export const subgroupElect = /*@__PURE__*/
|
|
345
|
+
export const subgroupElect = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_ELECT ).setParameterLength( 0 );
|
|
338
346
|
|
|
339
347
|
/**
|
|
340
348
|
* Returns a set of bitfields where the bit corresponding to subgroup_invocation_id
|
|
@@ -345,7 +353,7 @@ export const subgroupElect = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode
|
|
|
345
353
|
* @param {bool} pred - A boolean that sets the bit corresponding to the invocations subgroup invocation id.
|
|
346
354
|
* @return {vec4<u32>}- A bitfield corresponding to the pred value of each subgroup invocation.
|
|
347
355
|
*/
|
|
348
|
-
export const subgroupBallot = /*@__PURE__*/
|
|
356
|
+
export const subgroupBallot = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_BALLOT ).setParameterLength( 1 );
|
|
349
357
|
|
|
350
358
|
/**
|
|
351
359
|
* A reduction that adds e among all active invocations and returns that result.
|
|
@@ -355,7 +363,7 @@ export const subgroupBallot = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNod
|
|
|
355
363
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
356
364
|
* @return {number} The accumulated result of the reduction operation.
|
|
357
365
|
*/
|
|
358
|
-
export const subgroupAdd = /*@__PURE__*/
|
|
366
|
+
export const subgroupAdd = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_ADD ).setParameterLength( 1 );
|
|
359
367
|
|
|
360
368
|
/**
|
|
361
369
|
* An inclusive scan returning the sum of e for all active invocations with subgroup_invocation_id less than or equal to this invocation.
|
|
@@ -365,7 +373,7 @@ export const subgroupAdd = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
365
373
|
* @param {number} e - The value provided to the inclusive scan by the current invocation.
|
|
366
374
|
* @return {number} The accumulated result of the inclusive scan operation.
|
|
367
375
|
*/
|
|
368
|
-
export const subgroupInclusiveAdd = /*@__PURE__*/
|
|
376
|
+
export const subgroupInclusiveAdd = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_INCLUSIVE_ADD ).setParameterLength( 1 );
|
|
369
377
|
|
|
370
378
|
/**
|
|
371
379
|
* An exclusive scan that returns the sum of e for all active invocations with subgroup_invocation_id less than this invocation.
|
|
@@ -375,7 +383,7 @@ export const subgroupInclusiveAdd = /*@__PURE__*/ nodeProxyIntent( SubgroupFunct
|
|
|
375
383
|
* @param {number} e - The value provided to the exclusive scan by the current invocation.
|
|
376
384
|
* @return {number} The accumulated result of the exclusive scan operation.
|
|
377
385
|
*/
|
|
378
|
-
export const subgroupExclusiveAdd = /*@__PURE__*/
|
|
386
|
+
export const subgroupExclusiveAdd = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_EXCLUSIVE_ADD ).setParameterLength( 1 );
|
|
379
387
|
|
|
380
388
|
/**
|
|
381
389
|
* A reduction that multiplies e among all active invocations and returns that result.
|
|
@@ -385,7 +393,7 @@ export const subgroupExclusiveAdd = /*@__PURE__*/ nodeProxyIntent( SubgroupFunct
|
|
|
385
393
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
386
394
|
* @return {number} The accumulated result of the reduction operation.
|
|
387
395
|
*/
|
|
388
|
-
export const subgroupMul = /*@__PURE__*/
|
|
396
|
+
export const subgroupMul = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_MUL ).setParameterLength( 1 );
|
|
389
397
|
|
|
390
398
|
/**
|
|
391
399
|
* An inclusive scan returning the product of e for all active invocations with subgroup_invocation_id less than or equal to this invocation.
|
|
@@ -395,7 +403,7 @@ export const subgroupMul = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
395
403
|
* @param {number} e - The value provided to the inclusive scan by the current invocation.
|
|
396
404
|
* @return {number} The accumulated result of the inclusive scan operation.
|
|
397
405
|
*/
|
|
398
|
-
export const subgroupInclusiveMul = /*@__PURE__*/
|
|
406
|
+
export const subgroupInclusiveMul = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_INCLUSIVE_MUL ).setParameterLength( 1 );
|
|
399
407
|
|
|
400
408
|
/**
|
|
401
409
|
* An exclusive scan that returns the product of e for all active invocations with subgroup_invocation_id less than this invocation.
|
|
@@ -405,7 +413,7 @@ export const subgroupInclusiveMul = /*@__PURE__*/ nodeProxyIntent( SubgroupFunct
|
|
|
405
413
|
* @param {number} e - The value provided to the exclusive scan by the current invocation.
|
|
406
414
|
* @return {number} The accumulated result of the exclusive scan operation.
|
|
407
415
|
*/
|
|
408
|
-
export const subgroupExclusiveMul = /*@__PURE__*/
|
|
416
|
+
export const subgroupExclusiveMul = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_EXCLUSIVE_MUL ).setParameterLength( 1 );
|
|
409
417
|
|
|
410
418
|
/**
|
|
411
419
|
* A reduction that performs a bitwise and of e among all active invocations and returns that result.
|
|
@@ -415,7 +423,7 @@ export const subgroupExclusiveMul = /*@__PURE__*/ nodeProxyIntent( SubgroupFunct
|
|
|
415
423
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
416
424
|
* @return {number} The result of the reduction operation.
|
|
417
425
|
*/
|
|
418
|
-
export const subgroupAnd = /*@__PURE__*/
|
|
426
|
+
export const subgroupAnd = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_AND ).setParameterLength( 1 );
|
|
419
427
|
|
|
420
428
|
/**
|
|
421
429
|
* A reduction that performs a bitwise or of e among all active invocations and returns that result.
|
|
@@ -425,7 +433,7 @@ export const subgroupAnd = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
425
433
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
426
434
|
* @return {number} The result of the reduction operation.
|
|
427
435
|
*/
|
|
428
|
-
export const subgroupOr = /*@__PURE__*/
|
|
436
|
+
export const subgroupOr = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_OR ).setParameterLength( 1 );
|
|
429
437
|
|
|
430
438
|
/**
|
|
431
439
|
* A reduction that performs a bitwise xor of e among all active invocations and returns that result.
|
|
@@ -435,7 +443,7 @@ export const subgroupOr = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode, S
|
|
|
435
443
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
436
444
|
* @return {number} The result of the reduction operation.
|
|
437
445
|
*/
|
|
438
|
-
export const subgroupXor = /*@__PURE__*/
|
|
446
|
+
export const subgroupXor = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_XOR ).setParameterLength( 1 );
|
|
439
447
|
|
|
440
448
|
/**
|
|
441
449
|
* A reduction that performs a min of e among all active invocations and returns that result.
|
|
@@ -445,7 +453,7 @@ export const subgroupXor = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
445
453
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
446
454
|
* @return {number} The result of the reduction operation.
|
|
447
455
|
*/
|
|
448
|
-
export const subgroupMin = /*@__PURE__*/
|
|
456
|
+
export const subgroupMin = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_MIN ).setParameterLength( 1 );
|
|
449
457
|
|
|
450
458
|
/**
|
|
451
459
|
* A reduction that performs a max of e among all active invocations and returns that result.
|
|
@@ -455,7 +463,7 @@ export const subgroupMin = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
455
463
|
* @param {number} e - The value provided to the reduction by the current invocation.
|
|
456
464
|
* @return {number} The result of the reduction operation.
|
|
457
465
|
*/
|
|
458
|
-
export const subgroupMax = /*@__PURE__*/
|
|
466
|
+
export const subgroupMax = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_MAX ).setParameterLength( 1 );
|
|
459
467
|
|
|
460
468
|
/**
|
|
461
469
|
* Returns true if e is true for all active invocations in the subgroup.
|
|
@@ -465,7 +473,7 @@ export const subgroupMax = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
465
473
|
* @param {boolean} e - The predicate provided by the current invocation.
|
|
466
474
|
* @return {bool} The result of the computation.
|
|
467
475
|
*/
|
|
468
|
-
export const subgroupAll = /*@__PURE__*/
|
|
476
|
+
export const subgroupAll = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_ALL ).setParameterLength( 1 );
|
|
469
477
|
|
|
470
478
|
/**
|
|
471
479
|
* Returns true if e is true for any active invocation in the subgroup
|
|
@@ -475,7 +483,7 @@ export const subgroupAll = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
475
483
|
* @param {boolean} e - The predicate provided by the current invocation.
|
|
476
484
|
* @return {bool} The result of the computation.
|
|
477
485
|
*/
|
|
478
|
-
export const subgroupAny = /*@__PURE__*/
|
|
486
|
+
export const subgroupAny = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_ANY ).setParameterLength( 1 );
|
|
479
487
|
|
|
480
488
|
/**
|
|
481
489
|
* Broadcasts e from the active invocation with the lowest subgroup_invocation_id in the subgroup to all other active invocations.
|
|
@@ -485,7 +493,7 @@ export const subgroupAny = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode,
|
|
|
485
493
|
* @param {number} e - The value to broadcast from the lowest subgroup invocation.
|
|
486
494
|
* @return {number} The broadcast value.
|
|
487
495
|
*/
|
|
488
|
-
export const subgroupBroadcastFirst = /*@__PURE__*/
|
|
496
|
+
export const subgroupBroadcastFirst = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_BROADCAST_FIRST ).setParameterLength( 1 );
|
|
489
497
|
|
|
490
498
|
/**
|
|
491
499
|
* Swaps e between invocations in the quad in the X direction.
|
|
@@ -495,7 +503,7 @@ export const subgroupBroadcastFirst = /*@__PURE__*/ nodeProxyIntent( SubgroupFun
|
|
|
495
503
|
* @param {number} e - The value to swap from the current invocation.
|
|
496
504
|
* @return {number} The value received from the swap operation.
|
|
497
505
|
*/
|
|
498
|
-
export const quadSwapX = /*@__PURE__*/
|
|
506
|
+
export const quadSwapX = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.QUAD_SWAP_X ).setParameterLength( 1 );
|
|
499
507
|
|
|
500
508
|
/**
|
|
501
509
|
* Swaps e between invocations in the quad in the Y direction.
|
|
@@ -505,7 +513,7 @@ export const quadSwapX = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode, Su
|
|
|
505
513
|
* @param {number} e - The value to swap from the current invocation.
|
|
506
514
|
* @return {number} The value received from the swap operation.
|
|
507
515
|
*/
|
|
508
|
-
export const quadSwapY = /*@__PURE__*/
|
|
516
|
+
export const quadSwapY = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.QUAD_SWAP_Y ).setParameterLength( 1 );
|
|
509
517
|
|
|
510
518
|
/**
|
|
511
519
|
* Swaps e between invocations in the quad diagonally.
|
|
@@ -515,7 +523,7 @@ export const quadSwapY = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNode, Su
|
|
|
515
523
|
* @param {number} e - The value to swap from the current invocation.
|
|
516
524
|
* @return {number} The value received from the swap operation.
|
|
517
525
|
*/
|
|
518
|
-
export const quadSwapDiagonal = /*@__PURE__*/
|
|
526
|
+
export const quadSwapDiagonal = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.QUAD_SWAP_DIAGONAL ).setParameterLength( 1 );
|
|
519
527
|
|
|
520
528
|
/**
|
|
521
529
|
* Broadcasts e from the invocation whose subgroup_invocation_id matches id, to all active invocations.
|
|
@@ -526,7 +534,7 @@ export const quadSwapDiagonal = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionN
|
|
|
526
534
|
* @param {number} id - The subgroup invocation to broadcast from.
|
|
527
535
|
* @return {number} The broadcast value.
|
|
528
536
|
*/
|
|
529
|
-
export const subgroupBroadcast = /*@__PURE__*/
|
|
537
|
+
export const subgroupBroadcast = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_BROADCAST ).setParameterLength( 2 );
|
|
530
538
|
|
|
531
539
|
/**
|
|
532
540
|
* Returns v from the active invocation whose subgroup_invocation_id matches id
|
|
@@ -537,7 +545,7 @@ export const subgroupBroadcast = /*@__PURE__*/ nodeProxyIntent( SubgroupFunction
|
|
|
537
545
|
* @param {number} id - The subgroup invocation which returns the value v.
|
|
538
546
|
* @return {number} The broadcast value.
|
|
539
547
|
*/
|
|
540
|
-
export const subgroupShuffle = /*@__PURE__*/
|
|
548
|
+
export const subgroupShuffle = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_SHUFFLE ).setParameterLength( 2 );
|
|
541
549
|
|
|
542
550
|
/**
|
|
543
551
|
* Returns v from the active invocation whose subgroup_invocation_id matches subgroup_invocation_id ^ mask.
|
|
@@ -548,7 +556,7 @@ export const subgroupShuffle = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctionNo
|
|
|
548
556
|
* @param {number} mask - A bitmask that determines the target invocation via a XOR operation.
|
|
549
557
|
* @return {number} The broadcast value.
|
|
550
558
|
*/
|
|
551
|
-
export const subgroupShuffleXor = /*@__PURE__*/
|
|
559
|
+
export const subgroupShuffleXor = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_SHUFFLE_XOR ).setParameterLength( 2 );
|
|
552
560
|
|
|
553
561
|
/**
|
|
554
562
|
* Returns v from the active invocation whose subgroup_invocation_id matches subgroup_invocation_id - delta
|
|
@@ -559,7 +567,7 @@ export const subgroupShuffleXor = /*@__PURE__*/ nodeProxyIntent( SubgroupFunctio
|
|
|
559
567
|
* @param {number} delta - A value that offsets the current in.
|
|
560
568
|
* @return {number} The broadcast value.
|
|
561
569
|
*/
|
|
562
|
-
export const subgroupShuffleUp = /*@__PURE__*/
|
|
570
|
+
export const subgroupShuffleUp = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_SHUFFLE_UP ).setParameterLength( 2 );
|
|
563
571
|
|
|
564
572
|
/**
|
|
565
573
|
* Returns v from the active invocation whose subgroup_invocation_id matches subgroup_invocation_id + delta
|
|
@@ -570,7 +578,7 @@ export const subgroupShuffleUp = /*@__PURE__*/ nodeProxyIntent( SubgroupFunction
|
|
|
570
578
|
* @param {number} delta - A value that offsets the current subgroup invocation.
|
|
571
579
|
* @return {number} The broadcast value.
|
|
572
580
|
*/
|
|
573
|
-
export const subgroupShuffleDown = /*@__PURE__*/
|
|
581
|
+
export const subgroupShuffleDown = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.SUBGROUP_SHUFFLE_DOWN ).setParameterLength( 2 );
|
|
574
582
|
|
|
575
583
|
/**
|
|
576
584
|
* Broadcasts e from the quad invocation with id equal to id.
|
|
@@ -578,6 +586,7 @@ export const subgroupShuffleDown = /*@__PURE__*/ nodeProxyIntent( SubgroupFuncti
|
|
|
578
586
|
* @tsl
|
|
579
587
|
* @method
|
|
580
588
|
* @param {number} e - The value to broadcast.
|
|
589
|
+
* @param {number} id - The quad invocation id to broadcast from.
|
|
581
590
|
* @return {number} The broadcast value.
|
|
582
591
|
*/
|
|
583
|
-
export const quadBroadcast = /*@__PURE__*/
|
|
592
|
+
export const quadBroadcast = /*@__PURE__*/ nodeProxyAssignable( SubgroupFunctionNode, SubgroupFunctionNode.QUAD_BROADCAST ).setParameterLength( 2 );
|
|
@@ -127,21 +127,16 @@ class AnalyticLightNode extends LightingNode {
|
|
|
127
127
|
*/
|
|
128
128
|
disposeShadow() {
|
|
129
129
|
|
|
130
|
-
if ( this.shadowNode
|
|
131
|
-
|
|
132
|
-
this.shadowNode.dispose();
|
|
133
|
-
this.shadowNode = null;
|
|
134
|
-
|
|
135
|
-
}
|
|
130
|
+
if ( this.shadowNode === null ) return;
|
|
136
131
|
|
|
132
|
+
this.shadowNode.dispose();
|
|
133
|
+
this.shadowNode = null;
|
|
137
134
|
this.shadowColorNode = null;
|
|
138
135
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this.colorNode = this.baseColorNode;
|
|
142
|
-
this.baseColorNode = null;
|
|
136
|
+
this.colorNode = this.baseColorNode;
|
|
137
|
+
this.baseColorNode = null;
|
|
143
138
|
|
|
144
|
-
|
|
139
|
+
this.needsUpdate = true;
|
|
145
140
|
|
|
146
141
|
}
|
|
147
142
|
|
|
@@ -266,9 +261,7 @@ class AnalyticLightNode extends LightingNode {
|
|
|
266
261
|
|
|
267
262
|
} else if ( this.shadowNode !== null ) {
|
|
268
263
|
|
|
269
|
-
this.
|
|
270
|
-
this.shadowNode = null;
|
|
271
|
-
this.shadowColorNode = null;
|
|
264
|
+
this.disposeShadow();
|
|
272
265
|
|
|
273
266
|
}
|
|
274
267
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import LightingNode from './LightingNode.js';
|
|
2
2
|
import { cubeMapNode } from '../utils/CubeMapNode.js';
|
|
3
|
+
import { materialEnvRotation } from '../accessors/MaterialProperties.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Represents a basic model for Image-based lighting (IBL). The environment
|
|
@@ -40,7 +41,10 @@ class BasicEnvironmentNode extends LightingNode {
|
|
|
40
41
|
|
|
41
42
|
// environment property is used in the finish() method of BasicLightingModel
|
|
42
43
|
|
|
43
|
-
builder.context.environment = cubeMapNode( this.envNode )
|
|
44
|
+
builder.context.environment = cubeMapNode( this.envNode ).context( {
|
|
45
|
+
getUV: ( textureNode ) => materialEnvRotation.mul( textureNode.uvNode || textureNode.getDefaultUV() ),
|
|
46
|
+
forceUVContext: true
|
|
47
|
+
} );
|
|
44
48
|
|
|
45
49
|
}
|
|
46
50
|
|