Discussion Increase the capacity of mesh groups

jedidia

shoemaker without legs
Addon Developer
Joined
Mar 19, 2008
Messages
10,869
Reaction score
2,128
Points
203
Location
between the planets
Right now, mesh groups in Orbiter are limited to something like 65000+ vertices per group. I assume that the exact number is 65535 and that this is because the meshgroups are indexed with an unsigned short, or potentially with a signed int. I don't know, I haven't looked at the code yet.

This is understandable given the age of the engine, but it's not aged that well. It's even possible that this limitation is in some way connected to DX7, which is being deprecated right now.

In any case, given that modern GPUs, even lower-end ones, are vastly more capable, and the additional fact that there are rarely that many meshes on display in orbiter at the same time, I really think this limitation is out of date, especially now that Orbiter is moving to 64 bit.

Of course, meshes can be arbitrarily large right now (I think, but maybe there's also a 65535 limit on the number of mesh groups?), but the requirement to chunk them up into smaller groups can lead to ugly geometry hacks which in themselves are not very performance friendly and can lead to lighting issues, and 3rd party meshes that weren't designed for orbiter can become rather tricky to import. I think raising that limit would make orbiter more compatible with highly detailed current-day mesh designs, which would make it easier to import 3rd party assets.

And yes, I do know about the difference between low-poly and high-poly meshes. It's mostly Orbiters characteristic of not having many meshes on screen at the same time that convinved me over the years that high-poly meshes in orbiter are not the worst thing (and I've never had and currently do not have a high-end system, I'm usually drifitng somewhere in low mid-tier).
 

martins

Orbiter Founder
Orbiter Founder
Joined
Mar 31, 2008
Messages
2,448
Reaction score
462
Points
83
Website
orbit.medphys.ucl.ac.uk
You are right, the vertex limitation is imposed by DX7, and the Orbiter Mesh class is currently closely following that format. So once the DX7 connection is dropped, that limitation can be relaxed as well. Before that happens,
  • I want to have one more release with x86 architecture and DX7 built-in graphics, as the final "compatible" release built on Orbiter 2016 with the latest bug fixes and features
  • The D3D9Client should be in place in the Orbiter source base to provide the graphics once the built-in graphics is history.
 
Top