Keeps the MaterialManager class focused on lifecycle
orchestration.
Everything here is stateless — pure constructor lookups. The
single piece of state (renderer capabilities) is threaded through
resolveMaterialBackend by the caller; we don't import the
singleton.
Material factory tables + backend resolution.
Keeps the
MaterialManagerclass focused on lifecycle orchestration.Everything here is stateless — pure constructor lookups. The single piece of state (renderer capabilities) is threaded through
resolveMaterialBackendby the caller; we don't import the singleton.