- 8,715
Indeed.Yes. This is actually not a very new thing. Even without tesselation, games commonly reduce the "Level of Detail" of distant objects. Tesselation is more about interpolating polygons in between what's actually modeled, not reducing poly count, although I guess tesselation can also be used to reduce the LoD more gradually, so that we don't get "LoD-pops".
I imagine the full poly model of any (premium) car in GT5 or 6 are only really loaded when you've paused a replay and started the photo mode, or when using photo travel. Poly count has very diminishing returns, especially on non-organic things like cars. This is why I don't really want a higher poly count in GT7. It'll just increase development time even more, and make it harder to hit stable 60fps framerates. Put the resources saved on polygons into better lighting and atmospheric (including weather) effects instead.
Typical LoD systems are usually discrete, whereas the new system on some of the Premium cars is "practically continuous" (down to the vertex level).
There are in fact two technologies at play: adaptive tessellation, as we all know, and progressive meshes - although it's likely they are linked in the renderer and data structure (mesh "format").
The tessellation subdivides the highest-quality mesh to add definition to details according to pre-made primitives applied to the car when it was made. Namely: different classes of circles (which automatically generalise to any conic section), straight edges, most often (along with their revolutions, extrusions etc.). This is extra content per car, just stored more efficiently.
The progressive mesh just defines a model in terms of its lowest LoD (tens of faces, see PD's press images), then the file streams out a list of vertices to add, and edges to move and add, generating new faces (triangles, or quads in PD's case) in order to gradually recover the highest detail mesh that the modeler authored. This is mostly a matter of data representation, so any mesh can be converted to work "progressively", but topological issues in the mesh can get in the way, causing ugly transitions (most likely only applies to the current Standard cars).
A typical discrete LoD system stores the mesh as separate models with highest detail, then half resolution, then half resolution again etc. Something like the geometric equivalent of "mip levels" in textures. Anyone familiar with geometric series should know that this quickly approaches double the memory usage of just the highest detail mesh.
For each LoD level having half the detail, total memory for the mesh scales as follows:
n is number of levels in discrete LoD system, s is sum of mesh data relative to highest LoD; f is the fraction of data added at this level.
You'd rarely see fewer than three levels using this method, but other scales can be used: e.g. full resolution and 10% only -> 10% extra memory required. But this exacerbates another problem to do with pixel / polygon resolution ratio - in that respect, more levels are so much better.
Code:
n s f
-----------
1 1.00 1/1
2 1.50 1/2
3 1.75 1/4
4 1.88 1/8
5 1.94 1/16
6 1.97 1/32
You'd rarely see fewer than three levels using this method, but other scales can be used: e.g. full resolution and 10% only -> 10% extra memory required. But this exacerbates another problem to do with pixel / polygon resolution ratio - in that respect, more levels are so much better.
With the discrete system, the game has to load all the meshes and simply switches display between them according to any pre-determined set of criteria.
With the progressive system, the game loads the full mesh once, and traverses through the data strucutre to enable / disable certain faces to reach a particular detail level.
Ignoring the visual effect of transitions, because both methods can be jarring and both can be near-perfect, depending on the implementation, what typically happens with the discrete method is you either have too little detail on screen for the pixel-footprint of the mesh, or too much, wasting performance - GT5 and GT6 make this compromise in different directions during a race. The progressive system can more effectively match the polygon resolution with the screen pixel resolution, because it's so much more scalable, effectively having as many "detail levels" as it has polygons.
So the progressive mesh representation alone allows for more memory to do other cool things, and for the polygon budget to be very finely controlled from moment to moment (with an overhead in manipulating the mesh structure) - and it scales more or less continuously over a very wide range.
The tessellation minimises a lot of the fiddly detail stuff by using "vector" primitives and real-time subdivision, reducing the size and complexity of the meshes also (streaming).
All of this means that the next-gen cars will be very highly detailed, but also incredibly scalable to suit any high-stress situation. The non-tessellated cars, assuming any persist, will simply not be as detailed close-up; the performance aspects will be the same, i.e. extremely scalable.
That's a very powerful feature to have, indeed. 👍