• 3D
  • Will there be tesselation support in Godot 4.0?

I've been eagerly hoping that Godot 4.0 might implement one of the last features needed for a modern 3D renderer: Tesselation... or any other form of realtime distance-based geometry subdivision (subsurf in Blender terms). It's so much better to be able to include a lower polygon mesh the engine can optimally soften based on view direction, rather than pushing for a high-poly mesh which adds more detail than needed in some places but not enough detail in others.

I asked on Discord and other users weren't sure when we might be seeing this. I wanted to drop the question here as well just in case; Is there no chance of realtime mesh smoothing making it in 4.0, or is that something we can still hope for?

I would be interested too. I think at the very least we should have pre-authored LOD (which I know you can hack in there now, but I mean real support). Though tesselation is potentially a more elegant way to handling the situation. So I would support this.

@cybereality said: I would be interested too. I think at the very least we should have pre-authored LOD (which I know you can hack in there now, but I mean real support). Though tesselation is potentially a more elegant way to handling the situation. So I would support this.

I agree that a system for automatically generating LOD's before the game starts would be a big improvement as well. Main issue is large meshes such as terrain, which are one model and single object: They'd have to be divided into chunks somehow, otherwise it's useless since you're always seeing the entity close but need different parts of the geometry to be at different levels of detail.

It's worth a note that so far most AAA games/studios have found that LODs still work better, but then the recent UE5 demo seems to indicate that this might finally change.

@Megalomaniak said: It's worth a note that so far most AAA games/studios have found that LODs still work better, but then the recent UE5 demo seems to indicate that this might finally change.

I agree that conventional LOD provides all one should need for small objects; If we're talking items such as a vase on a table then sure, simply applying a lower-poly version of the model when you're far enough will do. The problem is when you have a large whole mesh the player can wander into: If your object is a terrain or building, you have to show the full polygon version of the whole thing from up close, so you won't benefit of the engine LOD-ing just some bricks part of one wall further away. Of course one can simply divide the structure into multiple objects, however this can limit the artist and itself decrease performance by causing more surfaces to be rendered originally.

Perhaps there could be some way to mix the two instead? What if the conventional LOD system allowed drawing different parts of a mesh at a different LOD, masking between drawing different versions of the model based on draw distance horizons? Of course the vertices themselves would have to be masked across each seam for proper performance improvements, which may introduce cracks in the mesh the player could see through... maybe this could be solved with some smooth alpha blending between the two?

But assuming you have an 100 meter wide building as one mesh and the player's standing in a corner, the building containing two LOD models: From distance 0 to 50 the player would see the original mesh. From distance 50 to 75, the player would see mesh_lod1. From distance 75 to 100, the player would see mesh_lod2. Just a thought... part of me's assuming that this might be too complicated and waste more performance than it gains.