@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
|
@@ -475,6 +475,31 @@ export function arrayBufferToBase64( arrayBuffer ) {
|
|
|
475
475
|
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
+
/**
|
|
479
|
+
* Merges the given node build contexts into a new context, the data of the source context takes precedence.
|
|
480
|
+
* The node overrides of both contexts are merged as well, so the overrides of the target context still
|
|
481
|
+
* apply unless the source context overrides the same node.
|
|
482
|
+
*
|
|
483
|
+
* @private
|
|
484
|
+
* @method
|
|
485
|
+
* @param {Object} target - The context to merge into, e.g. the outer context.
|
|
486
|
+
* @param {Object} source - The context to merge, e.g. the inner context.
|
|
487
|
+
* @return {Object} The merged context.
|
|
488
|
+
*/
|
|
489
|
+
export function mergeContext( target, source ) {
|
|
490
|
+
|
|
491
|
+
const context = { ...target, ...source };
|
|
492
|
+
|
|
493
|
+
if ( target.overrideNodes !== undefined && source.overrideNodes !== undefined && target.overrideNodes !== source.overrideNodes ) {
|
|
494
|
+
|
|
495
|
+
context.overrideNodes = new Map( [ ...target.overrideNodes, ...source.overrideNodes ] );
|
|
496
|
+
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
return context;
|
|
500
|
+
|
|
501
|
+
}
|
|
502
|
+
|
|
478
503
|
/**
|
|
479
504
|
* Converts the given Base64 string to an array buffer.
|
|
480
505
|
*
|
|
@@ -13,8 +13,9 @@ class NodeVar {
|
|
|
13
13
|
* @param {string} type - The type of the variable.
|
|
14
14
|
* @param {boolean} [readOnly=false] - The read-only flag.
|
|
15
15
|
* @param {?number} [count=null] - The size.
|
|
16
|
+
* @param {boolean} [local=false] - Whether the variable is declared locally in the flow.
|
|
16
17
|
*/
|
|
17
|
-
constructor( name, type, readOnly = false, count = null ) {
|
|
18
|
+
constructor( name, type, readOnly = false, count = null, local = false ) {
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* This flag can be used for type testing.
|
|
@@ -46,6 +47,14 @@ class NodeVar {
|
|
|
46
47
|
*/
|
|
47
48
|
this.readOnly = readOnly;
|
|
48
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Whether the variable is declared locally in the flow.
|
|
52
|
+
*
|
|
53
|
+
* @type {boolean}
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
this.local = local;
|
|
57
|
+
|
|
49
58
|
/**
|
|
50
59
|
* The size.
|
|
51
60
|
*
|
|
@@ -37,12 +37,17 @@ class OverrideContextNode extends ContextNode {
|
|
|
37
37
|
*
|
|
38
38
|
* @param {Map<Node, Function>} overrideNodes - A map mapping target nodes to their respective override callback functions.
|
|
39
39
|
* @param {Node|null} [flowNode=null] - The node whose context should be modified.
|
|
40
|
+
* @param {?string} [shaderStage=null] - The shader stage the overrides apply to, all stages by default.
|
|
40
41
|
*/
|
|
41
|
-
constructor( overrideNodes, flowNode = null ) {
|
|
42
|
+
constructor( overrideNodes, flowNode = null, shaderStage = null ) {
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const value = { overrideNodes };
|
|
45
|
+
|
|
46
|
+
// the surface is replaced per fragment, the varyings are evaluated in the fragment stage as well
|
|
47
|
+
|
|
48
|
+
if ( shaderStage === 'fragment' ) value.inlineVaryings = true;
|
|
49
|
+
|
|
50
|
+
super( flowNode, value );
|
|
46
51
|
|
|
47
52
|
/**
|
|
48
53
|
* This flag can be used for type testing.
|
|
@@ -55,35 +60,6 @@ class OverrideContextNode extends ContextNode {
|
|
|
55
60
|
|
|
56
61
|
}
|
|
57
62
|
|
|
58
|
-
/**
|
|
59
|
-
* Gathers the context data from all parent context nodes by traversing the hierarchy,
|
|
60
|
-
* merging the `overrideNodes` maps from all encountered `OverrideContextNode` instances.
|
|
61
|
-
*
|
|
62
|
-
* @return {Object} The gathered context data, containing the merged `overrideNodes` map.
|
|
63
|
-
*/
|
|
64
|
-
getFlowContextData() {
|
|
65
|
-
|
|
66
|
-
const children = [];
|
|
67
|
-
|
|
68
|
-
this.traverse( ( node ) => {
|
|
69
|
-
|
|
70
|
-
if ( node.isOverrideContextNode === true ) {
|
|
71
|
-
|
|
72
|
-
children.push( node.value.overrideNodes );
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
} );
|
|
77
|
-
|
|
78
|
-
const overrideNodes = new Map( children.flatMap( ( map ) => Array.from( map.entries() ) ) );
|
|
79
|
-
|
|
80
|
-
const data = super.getFlowContextData();
|
|
81
|
-
data.overrideNodes = overrideNodes;
|
|
82
|
-
|
|
83
|
-
return data;
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
63
|
}
|
|
88
64
|
|
|
89
65
|
export default OverrideContextNode;
|
|
@@ -132,22 +108,47 @@ addMethodChaining( 'overrideNode', ( flowNode, node, callback ) => overrideNode(
|
|
|
132
108
|
* @function
|
|
133
109
|
* @param {Map<Node, (Function|Node)>|Array<Array<Node|Function|Node>>} overrides - The overrides mapping target nodes to callback functions or overriding nodes.
|
|
134
110
|
* @param {Node|null} [flowNode=null] - The node whose context should be modified.
|
|
111
|
+
* @param {?string} [shaderStage=null] - The shader stage the overrides apply to, all stages by default. With fragment overrides,
|
|
112
|
+
* all varyings of the context are evaluated in the fragment stage, e.g. if the surface is reconstructed per fragment.
|
|
135
113
|
* @return {OverrideContextNode} The created override context node.
|
|
136
114
|
*/
|
|
137
|
-
export function overrideNodes( overrides, flowNode = null ) {
|
|
115
|
+
export function overrideNodes( overrides, flowNode = null, shaderStage = null ) {
|
|
138
116
|
|
|
139
117
|
const overrideNodesMap = new Map();
|
|
140
118
|
|
|
141
119
|
for ( const [ node, value ] of overrides ) {
|
|
142
120
|
|
|
143
|
-
|
|
121
|
+
let callback = null;
|
|
122
|
+
|
|
123
|
+
if ( value !== null ) {
|
|
124
|
+
|
|
125
|
+
callback = typeof value === 'function' ? value : () => value;
|
|
126
|
+
|
|
127
|
+
if ( shaderStage !== null ) callback = getStageCallback( node, callback, shaderStage );
|
|
128
|
+
|
|
129
|
+
}
|
|
144
130
|
|
|
145
131
|
overrideNodesMap.set( node, callback );
|
|
146
132
|
|
|
147
133
|
}
|
|
148
134
|
|
|
149
|
-
return new OverrideContextNode( overrideNodesMap, flowNode );
|
|
135
|
+
return new OverrideContextNode( overrideNodesMap, flowNode, shaderStage );
|
|
150
136
|
|
|
151
137
|
}
|
|
152
138
|
|
|
153
|
-
addMethodChaining( 'overrideNodes', ( flowNode, overrides ) => overrideNodes( overrides, flowNode ) );
|
|
139
|
+
addMethodChaining( 'overrideNodes', ( flowNode, overrides, shaderStage ) => overrideNodes( overrides, flowNode, shaderStage ) );
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Returns an override callback which only overrides the node in the given shader stage.
|
|
143
|
+
*
|
|
144
|
+
* @private
|
|
145
|
+
* @param {Node} node - The target node.
|
|
146
|
+
* @param {Function} callback - The override callback.
|
|
147
|
+
* @param {string} shaderStage - The shader stage.
|
|
148
|
+
* @return {Function} The override callback of the shader stage.
|
|
149
|
+
*/
|
|
150
|
+
function getStageCallback( node, callback, shaderStage ) {
|
|
151
|
+
|
|
152
|
+
return ( builder ) => builder.shaderStage === shaderStage ? callback( builder ) : node;
|
|
153
|
+
|
|
154
|
+
}
|
|
@@ -78,6 +78,12 @@ class PropertyNode extends Node {
|
|
|
78
78
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
isCacheable( /*builder*/ ) {
|
|
82
|
+
|
|
83
|
+
return false;
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
81
87
|
getNodeType( builder ) {
|
|
82
88
|
|
|
83
89
|
const nodeType = super.getNodeType( builder );
|
|
@@ -179,6 +185,14 @@ export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', '
|
|
|
179
185
|
*/
|
|
180
186
|
export const diffuseContribution = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'DiffuseContribution' );
|
|
181
187
|
|
|
188
|
+
/**
|
|
189
|
+
* TSL object that represents the shader variable `DiffuseRoughness`.
|
|
190
|
+
*
|
|
191
|
+
* @tsl
|
|
192
|
+
* @type {PropertyNode<float>}
|
|
193
|
+
*/
|
|
194
|
+
export const diffuseRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'DiffuseRoughness' );
|
|
195
|
+
|
|
182
196
|
/**
|
|
183
197
|
* TSL object that represents the shader variable `EmissiveColor`.
|
|
184
198
|
*
|
|
@@ -4,6 +4,25 @@ import { select } from '../math/ConditionalNode.js';
|
|
|
4
4
|
import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack, nodeObject } from '../tsl/TSLBase.js';
|
|
5
5
|
import { error } from '../../utils.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Whether the given node is assignable but has not been assigned. It is just
|
|
9
|
+
* an expression, which is generated where it is used instead of in the stack.
|
|
10
|
+
*
|
|
11
|
+
* @private
|
|
12
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
13
|
+
* @param {Node} node - The node to check.
|
|
14
|
+
* @return {boolean} Whether the assignable node can be generated as an expression.
|
|
15
|
+
*/
|
|
16
|
+
const isAssignableExpression = ( builder, node ) => {
|
|
17
|
+
|
|
18
|
+
if ( node.assignable !== true ) return false;
|
|
19
|
+
|
|
20
|
+
const data = builder.getDataFromNode( node );
|
|
21
|
+
|
|
22
|
+
return data.forceDeclaration !== true && data.assign !== true;
|
|
23
|
+
|
|
24
|
+
};
|
|
25
|
+
|
|
7
26
|
/**
|
|
8
27
|
* Stack is a helper for Nodes that need to produce stack-based code instead of continuous flow.
|
|
9
28
|
* They are usually needed in cases like `If`, `Else`.
|
|
@@ -97,6 +116,12 @@ class StackNode extends Node {
|
|
|
97
116
|
|
|
98
117
|
}
|
|
99
118
|
|
|
119
|
+
isCacheable( /*builder*/ ) {
|
|
120
|
+
|
|
121
|
+
return false;
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
100
125
|
getElementType( builder ) {
|
|
101
126
|
|
|
102
127
|
return this.outputNode ? this.outputNode.getElementType( builder ) : 'void';
|
|
@@ -167,14 +192,15 @@ class StackNode extends Node {
|
|
|
167
192
|
}
|
|
168
193
|
|
|
169
194
|
/**
|
|
170
|
-
* Adds a node to the stack before the current node.
|
|
195
|
+
* Adds a node to the stack before the given node, by default the current node.
|
|
171
196
|
*
|
|
172
197
|
* @param {Node} node - The node to add.
|
|
198
|
+
* @param {?Node} [beforeNode=this._currentNode] - The node of the stack that the node is added before.
|
|
173
199
|
* @return {StackNode} A reference to this stack node.
|
|
174
200
|
*/
|
|
175
|
-
addToStackBefore( node ) {
|
|
201
|
+
addToStackBefore( node, beforeNode = this._currentNode ) {
|
|
176
202
|
|
|
177
|
-
const index =
|
|
203
|
+
const index = beforeNode ? this.nodes.indexOf( beforeNode ) : 0;
|
|
178
204
|
|
|
179
205
|
return this.addToStack( node, index );
|
|
180
206
|
|
|
@@ -328,15 +354,7 @@ class StackNode extends Node {
|
|
|
328
354
|
|
|
329
355
|
for ( const childNode of this.getChildren() ) {
|
|
330
356
|
|
|
331
|
-
if (
|
|
332
|
-
|
|
333
|
-
if ( childNode.isAssign( builder ) !== true ) {
|
|
334
|
-
|
|
335
|
-
continue;
|
|
336
|
-
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
}
|
|
357
|
+
if ( isAssignableExpression( builder, childNode ) ) continue;
|
|
340
358
|
|
|
341
359
|
nodeProperties[ 'node' + index ++ ] = childNode;
|
|
342
360
|
|
|
@@ -350,6 +368,8 @@ class StackNode extends Node {
|
|
|
350
368
|
|
|
351
369
|
build( builder, ...params ) {
|
|
352
370
|
|
|
371
|
+
this._setupInspector( builder );
|
|
372
|
+
|
|
353
373
|
const previousStack = getCurrentStack();
|
|
354
374
|
|
|
355
375
|
const buildStage = builder.buildStage;
|
|
@@ -367,15 +387,7 @@ class StackNode extends Node {
|
|
|
367
387
|
|
|
368
388
|
this._currentNode = node;
|
|
369
389
|
|
|
370
|
-
if (
|
|
371
|
-
|
|
372
|
-
if ( node.isAssign( builder ) !== true ) {
|
|
373
|
-
|
|
374
|
-
continue;
|
|
375
|
-
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
}
|
|
390
|
+
if ( isAssignableExpression( builder, node ) ) continue;
|
|
379
391
|
|
|
380
392
|
if ( buildStage === 'setup' ) {
|
|
381
393
|
|
|
@@ -78,6 +78,12 @@ class StructTypeNode extends Node {
|
|
|
78
78
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
isCacheable( /*builder*/ ) {
|
|
82
|
+
|
|
83
|
+
return false;
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
81
87
|
/**
|
|
82
88
|
* Returns the length of the struct in 4-byte elements (e.g. float or int components).
|
|
83
89
|
* The length is calculated by summing the lengths of the struct's members, accounting for memory alignment.
|
|
@@ -46,6 +46,12 @@ class SubBuildNode extends Node {
|
|
|
46
46
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
isCacheable( /*builder*/ ) {
|
|
50
|
+
|
|
51
|
+
return false;
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
49
55
|
generateNodeType( builder ) {
|
|
50
56
|
|
|
51
57
|
if ( this.nodeType !== null ) return this.nodeType;
|
|
@@ -62,6 +68,8 @@ class SubBuildNode extends Node {
|
|
|
62
68
|
|
|
63
69
|
build( builder, ...params ) {
|
|
64
70
|
|
|
71
|
+
this._setupInspector( builder );
|
|
72
|
+
|
|
65
73
|
builder.addSubBuild( this.name );
|
|
66
74
|
|
|
67
75
|
const data = this.node.build( builder, ...params );
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Node from './Node.js';
|
|
2
|
+
import { warn } from '../../utils.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* This module uses cache management to create temporary variables
|
|
@@ -6,6 +7,7 @@ import Node from './Node.js';
|
|
|
6
7
|
*
|
|
7
8
|
* The class acts as a base class for many other nodes types.
|
|
8
9
|
*
|
|
10
|
+
* @deprecated Extend Node instead.
|
|
9
11
|
* @augments Node
|
|
10
12
|
*/
|
|
11
13
|
class TempNode extends Node {
|
|
@@ -34,6 +36,14 @@ class TempNode extends Node {
|
|
|
34
36
|
*/
|
|
35
37
|
this.isTempNode = true;
|
|
36
38
|
|
|
39
|
+
warn( 'TempNode: This module has been deprecated. Extend Node instead.' );
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
isCacheable( builder ) {
|
|
44
|
+
|
|
45
|
+
return this.hasDependencies( builder );
|
|
46
|
+
|
|
37
47
|
}
|
|
38
48
|
|
|
39
49
|
/**
|
|
@@ -48,41 +58,6 @@ class TempNode extends Node {
|
|
|
48
58
|
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
build( builder, output ) {
|
|
52
|
-
|
|
53
|
-
const buildStage = builder.getBuildStage();
|
|
54
|
-
|
|
55
|
-
if ( buildStage === 'generate' ) {
|
|
56
|
-
|
|
57
|
-
const type = builder.getVectorType( this.getNodeType( builder, output ) );
|
|
58
|
-
const nodeData = builder.getDataFromNode( this );
|
|
59
|
-
|
|
60
|
-
if ( nodeData.propertyName !== undefined ) {
|
|
61
|
-
|
|
62
|
-
return builder.format( nodeData.propertyName, type, output );
|
|
63
|
-
|
|
64
|
-
} else if ( type !== 'void' && output !== 'void' && this.hasDependencies( builder ) ) {
|
|
65
|
-
|
|
66
|
-
const snippet = super.build( builder, type );
|
|
67
|
-
|
|
68
|
-
const nodeVar = builder.getVarFromNode( this, null, type );
|
|
69
|
-
const propertyName = builder.getPropertyName( nodeVar );
|
|
70
|
-
|
|
71
|
-
builder.addLineFlowCode( `${ propertyName } = ${ snippet }`, this );
|
|
72
|
-
|
|
73
|
-
nodeData.snippet = snippet;
|
|
74
|
-
nodeData.propertyName = propertyName;
|
|
75
|
-
|
|
76
|
-
return builder.format( nodeData.propertyName, type, output );
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return super.build( builder, output );
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
61
|
}
|
|
87
62
|
|
|
88
63
|
export default TempNode;
|