Counters stay on MaterialManager because the creation paths mutate
them; this module builds the returned object shape for
getCacheStats().
Nothing here reports a cache size. Every material is per-node — point, line
and gsplat materials each carry their own texture uniform, a mesh material
its own shading state, so two nodes can never share one — which means there
is no material cache left to measure. See getPointMaterial /
getMeshMaterial for the full reasoning.
Material-manager diagnostics: registry-size + create-time snapshot.
Counters stay on MaterialManager because the creation paths mutate them; this module builds the returned object shape for
getCacheStats().Nothing here reports a cache size. Every material is per-node — point, line and gsplat materials each carry their own texture uniform, a mesh material its own shading state, so two nodes can never share one — which means there is no material cache left to measure. See
getPointMaterial/getMeshMaterialfor the full reasoning.