Mirrors the GLSL LineMaterial wrapper one-for-one — same
constructor signature (LineMaterialConfig), same update methods,
same applyBlendingMode + clone semantics, same
CameraAwareMaterial / ColormapAwareMaterial interfaces. The
host dispatch in MaterialManager.getLineMaterial picks one or
the other based on caps.apiSurface, so call sites never see the
divergence.
Uniform plumbing. This class owns one persistent UniformNode
per shader input via the tslNodes table. The public uniforms
record exposes each node as an IUniform-shaped getter/setter
proxy (see proxyIUniform in tsl-helpers.ts), so mutations to
material.uniforms.uX.value land directly on node.value — no
per-render .onUpdate('render') callback bridge. Matches the
pattern already in use by LinePickingTSLMaterial,
GSplatTSLMaterial, and PointPickingTSLMaterial.
TSL / NodeMaterial counterpart to
LineMaterial.Mirrors the GLSL
LineMaterialwrapper one-for-one — same constructor signature (LineMaterialConfig), same update methods, sameapplyBlendingMode+clonesemantics, sameCameraAwareMaterial/ColormapAwareMaterialinterfaces. The host dispatch inMaterialManager.getLineMaterialpicks one or the other based oncaps.apiSurface, so call sites never see the divergence.Uniform plumbing. This class owns one persistent
UniformNodeper shader input via thetslNodestable. The publicuniformsrecord exposes each node as anIUniform-shaped getter/setter proxy (seeproxyIUniformintsl-helpers.ts), so mutations tomaterial.uniforms.uX.valueland directly onnode.value— no per-render.onUpdate('render')callback bridge. Matches the pattern already in use byLinePickingTSLMaterial,GSplatTSLMaterial, andPointPickingTSLMaterial.