Marketplace RMC on UE4.15!
As Feifox already mentioned… The marketplace version of the RMC has been updated to 4.15 as of this afternoon!
It’s a tradeoff. You’re going to have to accept some overdraw and things as the overhead of too many individual chunks will outweigh the speed benefit of not rendering parts. Frustum/occlusion culling are obviously very useful but having 100k draw calls just to have chunks so small as to not have much overdraw or offscreen is going to hurt more than the gain. With my voxel engine I was running variable size chunks based on LOD/distance and it will depend too much on what you’re doing for me to give you an accurate balance point.
There’s some things coming in v3 that might help with what you’re doing, especially the threading parts, and LOD. I have no real estimate on a release date on that yet, it’s coming along, but slowly due to work/school.
The UpdateFrequency is used internally to control how the rendering is setup. I’m going to slightly oversimplify this but, basically UE4 has a static and dynamic draw path. The static path is generally faster for multiple reasons but it can only be configured when the scene proxy is created, which right now requires a resync of all the the mesh data to the GPU. The dynamic path doesn’t require recreating the scene proxy, and instead updates only what’s necessary so the updates are faster but the draw speed is a little bit slower. Now, at the GPU memory buffer level, the RMC uses 2 possible configurations, static and dynamic (this doesn’t relate to UE4’s 2 rendering paths). static buffers are meant to be set and used over and over, whereas dynamic can be set multiple times. That UpdateFrequency flag controls which combination the RMC uses for that section…
UpdateFrequency::Frequent = Dynamic Render Path + Dynamic Buffers (Use this if you update super frequently, like every frame)
UpdateFrequency::Average = Dynamic Render Path + Static Buffers (This is the happy middleground if you need to update some sections sometimes but not all of them at once)
UpdateFrequency::Infrequent = Static Render Path + Static Buffers (This is only for sections that update very infrequently as it forces a total resync of the entire RMC, but provides the fastest rendering path)
In RMCv3 this won’t be exactly the same as the mesh data is stored separately and so won’t be resynced on recreate of the scene proxy which means it will more frequently use the static draw path (probably for both Infrequent and Average).
Right now the RMC’s normal/tangent calculation isn’t really faster than the PMC’s. That will change in v3. I might try to push a update soon to fix a few small things like this in the interim till v3 is done though.