It is technically possible already. You can have a control that calls setMesh , keep the lod mesh references somewhere so that they don’t get GCed. When they all have been rendered once by the engine (or loaded with preload() ) they will stay in vram (until disposed by the gc), so switching between them will be very fast.
The only problem with this approach is that it is not fully transparent, since you are changing the main mesh. Also batching and instancing won’t work as expected. Depenting on your usecase those limitations might not matter at all.
There are also workarounds for the batching and instancing, you can for example divide your scene in batching-instancing groups, and switch the lod for the entire group (this method would be faster anyway, even with my code).
Porting my code would requires important changes to the renderer, indirect rendering, and occlusion queries. I can’t open a pr for it for now, since i am busy with other tasks. But maybe you can look into the alternative i proposed in this post.