I’ve heard terms like “polygon soup” thrown around quite often in recent years. That a “game” or, really just a “scene” is considered as a large collection of polygons and nothing more. You forget about objects and hierarchies for the most part, because it simplifies the concept drastically. If you do that - you only have to think about “how do I make my soup run at interactive frame rate”, admittedly, this approach is not all-encompassing as it is not as well suited for dynamic elements in the scene and may run counter to some memory optimization techniques such as instancing.
This is mostly a tangent, in the same direction as what @EliasHasle was talking about.
It is also hardware, shader and other factors related, if people only talk about how many million bare triangles they can render this mostly doesn’t reflect any real world scenario or the average hardware specs of the target audience, especially the gap between desktop and mobile.
Here’s an example of this. It too renders a lot of triangles. The sphere in particular renders over 32 million triangles (i think) since the shadows are turned on. The box is 1.2 million, times two. The demo itself is from:
Yes, but if you want to use something similar to this in <r109 you can check these out:
Phong doesn’t count much: the GPU is good at that kind of computings, it does them in parallel moreover. The problem is that you have to choose between lights (basic shading is fast but when you add lot of relexion and refraction it becomes slow), fog (really intense volumetric computations), facets (read lots of memory) or textures (read lots of memory). You can’t have all of them and a decent FPS.
The particular way I indexed facets make it possible to skip facets much faster than enumerating them so the number of facets is not a problem anymore.
The other example is a particular case: it doesn’'t have to read lots of memory, it is based on repeating facets.
As for objects and hierarchy, the way I indexed facets have nothing to do with object management. You can have any hierarchy you want, and you can have multiple indexes and merge them together fastly. There can be a decorelation between raw facets in the index and objets. At the end of the frame time, when you have moved all your objects, you update the index. And if objects use that kind of index, they can themselves know quickly if there move places them in the camera view or not.
Example: you have 1000 object of 1 million facets. You ask each object: give me the facets that are in view. There you have your billion facets. You won’t be able to draw more than millions of facets without halving the FPS: 1 million facets and 1 million pixels that’s twice the time spent.
As for instanced mesh, it is neat for repeating geometry. It doesn’t cope with lots different objects.
Though there are solutions for certain types of objects. For example trees can be rendered with 5 kind of instanced mesh, but in the shader you move the vertice randomly. Then you’ll have all different trees. But you have to write your own shader, and it doesn’t work so well with all kind of objets. Cars for example.
Ok if I have some time to spent, I’ll make another demo. Because you just don’t get the point: when you REALLY give 1 million facets to the GPU it is as much as the number of pixels to render, and then the GPU spends twice as much time as if it had to render only a few facets and 1 million pixels.
How did you come up with this number? A box has 6 sides with 2 triangles each, making it 1.2 million “facets”. I’m not even sure how much these facets matter since it’s 24 vertices being transformed. Keep in mind that shadows are being rendered so, double the number of facets…
Here is the mathworld definition for Face. “A zero-dimensional face is a vertex” etc… I think in general it is best to lean on mathematicians for definitions, as they tend to have a good eye for generalization, which both orders the existing knowledge and expands the horizons.
Completely agree - however it’s important to stick with the conventions of our field as well, and remember that mathematical terms tend to be tweaked to suit each sub-field. So, for a mathematician discussing an n-dimensional polytope, a vertex is a face, an edge is a face, a polygon is a face. But as computer graphics engineers, we’d never refer to edges or vertices (or facets) as faces. Doing so might be technically correct, but it will still lead to confusion.