Tessellation... is it really for high-end rigs?

CryptorX

Distinguished
Aug 9, 2009
111
0
18,690
Hi there...

First of all my english is far from being the best... but i'll try...

Secondly... read the entire post carefully because if you don't, it will hardly make some sense...

Well, i have a question, though in my head it's not really a question, but i would like to know your opinions about this...

I have been poking around with a few games that use tessellation (and Unigine) trying to get a better idea of what it does, and using Unigine it is clear that what it does is smoothing 3D surfaces by increasing the geometry complexity but there is something that is really confusing me. Why do we need to use tessellation to get better geometry? Do we really need it for that? And why can't we have all the objects already with their full geometry? The quality would be the same as having tessellation enabled on max but we wouldn't have such a great impact on performance as we have using tessellation, because when tessellation improves the geometry, the algorithms and it's complex calculations are also present and that makes it harder on the gpu's to render these objects instead of having the geometry already built and not being built as we pass by them.

The only advantage i can see seems a bit contradictory and that advantage, in my opinion, is not having large scenarios with complex geometries, tessellating only the nearby area where the player is but when we use tessellation it means we have beefy enough hardware (by today's standards i'd say high-end hardware) and those with high-end hardware want the best quality possible and seeing objects literally morphing as we approach them is dispensable to say the least. So this leaves me with a thought that explains why i consider the advantage i mentioned a bit contradictory.

I think tessellation is not meant to increase quality but to decrease it. Let me explain: the geometry of a certain object is not determined by the tessellation algorithm but by the person who created it, tessellation only determines how well that geometry is rendered, if it is fully rendered (like it was originally designed) or if it will it be downgraded to a more simple geometry. So, i believe that tessellation is not meant to be activated or increased but deactivated and decreased instead by users who's hardware can't run certain games with a high geometry complexity, while those who can run these complex geometries won't be using tessellation but the geometry that was originally created to be used.

This thought is mainly based on the fact that no matter how complex the tessellation algorithm is there is no way it can know what type of object geometry it is improving, for example, if i have a pipe with a octagonal shape, tessellation is supposed to make it look better (rounder in this case), but what if that pipe was really meant to be octagonal? That only proves that the geometries are all predefined and can only be made simpler, not more complex.

So that is what i find so contradictory about tessellation, it is the fact that it is a feature available only on DX11 but, at least according to my reasoning, meant for computers not fit for DX11...

I am not almost sure but entirely sure that most of you will disagree with me and that is exactly what i am looking for, because i believe i may be missing something here... but so far, at least to me, this is the only thing that makes sense...
 

CryptorX

Distinguished
Aug 9, 2009
111
0
18,690
One more thing...

If i am right on this when we disable tessellation we are actually using it to decrease every geometry in a certain scenario and when we enable it we are no longer using it, only the original geometries.
Or...
On it's max is actually where it doesn't even work and his lowest setting is were it works the most... that's the confusing part... forgot to tell...

(Nice bump huh? :D )

So... no one?
 

I do hope you've taken the time to read the rules on that.

http://www.tomshardware.com/forum/283384-33-read-first
 

deadjon

Distinguished
Oct 21, 2009
757
0
19,060
Tesselation works in strange ways my freind. It was designed to take stress off the GPUs when complex geometry was involved - GPUs started using different parts of their core for Tesselation and adding dedicated resources for the sole purpose of creating displacement mapping.

The definition of 'Tessalation' is explained in mathematics as something completley different - but you need a tessalated surface to add displacement mapping to it - breaking down the pixels from 1 pixel to 2 pixels, adding the second to the top of the 1st pixel adding a Y axis to the structure. the Second pixel can store information on height. Keep doing this and you get the realistic look that Tesselation brings.

This brings me to the performance hit - To add height to a pixel adds a new dimension to the entire mapping of a structure - which needs recourses - lots of resources. Before Tessalation, Pixels were simple for a graphics card, now the Card has to break the pixels in 2 and add another dimension to them, as well as doing everything else. Fortunatly DX11 cards have tesselation units to do this, but they still need to be pushed through the ROPs and the Pixel Pipelines as normal after they have been tessalated and displaced.

Imagine the size of textures it would need to create a tesselated-looking image without the use of tessalation and displacement mapping - it would be HUGE. Without Height information it would be impossible to use on simple things like rocks and stones, clothes and even pimples and pores on characters faces.

All in all it makes everything look real - it adds a true 3D feel to simple structures, they look like they would be rough to the touch, they look real. Uengine takes it to a silly level and is just a benchmark. And remember its still in its early stages. If you look at some games now, when tessalation is involved, the difference is amazing.

Hope I managed to clear it up :)

Deadjon
 

CryptorX

Distinguished
Aug 9, 2009
111
0
18,690
Thanks a lot for your reply deadjon...

You did helped much more than you think...

I have been reading and it looks like i got it all wrong...

I looks like i mistook displacement mapping for tessellation when the true is that they are completely different techniques that work for the same goal here.

So if got this right, tessellation is dividing a surface into smaller parts to make displacement mapping look better, the higher the tessellation factor (number of parts) the more perfect the reliefs created by displacement mapping pretty much the same way a higher number of pixels can create much more detailed images (i love when things start making sense).

The increase on pn triangles is tessellation's work and their shaping displacement mapping responsibility...
tesselation-540x430.jpg

I am already tired of looking at picture like this one but at least i can look at them differently now...

You gotta love the difference it makes in Forza Motorsport 3
Non tessellated... (Forza 2 screenshot)
forza2_01.jpg

Tessellated... (Forza 3 screenshot)
forza3_01.jpg


Non tessellated... (Forza 2 screenshot)
forza2_02.jpg

Tessellated... (Forza 3 screenshot)
forza3_02.jpg


(the reflections quality also help forza 3 look much more realistic and that is also going to help give tessellation more credit than it deserves, the best way for comparison is to look at the taillights)

So... does this mean that shaders are at the end of the line? I suppose not... i can still see a lot of uses to them... but the use displacement mapping will stretch some textures and that will definitely mess with the shaders...

Anyway... i guess i should have read a bit more before posting questions like these but without your reply i am not sure i would have understood things the way i did now, actually, i am pretty sure i wouldn't since my mind is always twisting everything... until recently i thought ray tracing was the same thing as light scattering just to give you an idea...
 

deadjon

Distinguished
Oct 21, 2009
757
0
19,060
Normally this sort of thing is well beyond me - I like the hardware rather than software side of things.

However when tesselation was released and tesselation units were implemented into modern GPUs I had to know how it worked and what it did.

But yes, the more tesselated pixels, the more accurate the displacement mapping becomes - its like increasing texture size.

I don't think shaders are going to dissapear anytime soon, they are fundemental to the rendering of images, without them we little basis. Displacement mapping will stretch the textures, but the textures themselves, if they are more detailed in the first place will not suffer from it. You see the issue with performance again here xD
 

CryptorX

Distinguished
Aug 9, 2009
111
0
18,690


I think that may explain why games that use tessellation like Civilization 5, Metro 2033 and Battlefield 3 use excessive amounts of vram...
 

deadjon

Distinguished
Oct 21, 2009
757
0
19,060


Hit the nail on the head.

It can only get better though - as Tesselation and Displacement Mapping get more and more advanced, less resources will need to be used and more detailed structures will be created. Its a technology we need to go further in terms of 3D Rendering, and gaming in general.

When objects in game start reacting to Tesselated/Displaced surfaces properly...cars going down a bumpy road for example - this is when things start to get very complex.
 

iinlane

Distinguished
Jun 26, 2011
45
0
18,530
I have done some OpenGL programming tho not for games and I have not used the tessellation.

As far as I have understood it the tessellation is a workaround over some bottlenecks - particularly CPU and PCIe. Dealing with large meshes on CPU side and sending them to GPU is expensive operation. It's not so big deal when you have static meshes because you can build a display list and store it in gpu side and later just call it as needed but it gets more difficult when you start to animate the meshes. It's much cheaper to deal with low resolution meshes on CPU side and improve it on GPU side.

Another advantage is the automatic level of detail control it brings, you don't need to load multiple representations of a same object into GPU any more - low detail for far objects and high detail for closer ones.
 

alidan

Splendid
Aug 5, 2009
5,303
0
25,780
im a bit late to this, and only found it by searching for old games that used tessellation, but ill add my 2 cents.

take a look at crysis, that game had i believe 4.5 million pollies on screen at once, max, and even games today, im not 100% sure, but i know they cant use to much more. a while ago we hot a point of diminishing returns on just increasing the polly count, look at resistance 1 to resistance 2 on the ps3, we had to be told it used twice the polly count.

at this time i want to point out that racing games in general shouldn't be examples of graphics, as for the most part, they don't have as much complexity, so they can put most of the pollies on screen in one place, being the cars, apposed to the 10-50000 that are on any given character model, on consoles i believe its 5-20k, most likely less, and these numbers are based on things i have read in the past. i also wouldn't use a console game as a graphics example because every new game is tweaked just enough to push a bit more out of the hardware, so comparing a 2 to a 3 is almost impossible because of a vastly different/improved engine.

here take a look at this,
http://www.youtube.com/watch?v=00gAbgBu8R4

its not on tesslation, but on voxles, but it will help you understand a bit, specificly, at 4:45 minutes into the video where it shows tricks of getting more preformance and hiding the tricks.

specifically 5:05

i notice the pop in allot in games today.

now lets go back to tessellation, we already swap models out, tessellation blends it to the point that you cant tell the difference when done well in real time, but at the same time, it increases performance and graphics. there are next to no games that correctly take advantage of tessellation yet, but tessellation will take us several years into the future, where we can have that 4-8 million pollies on screen, but its all done where we can see the detail and smartly. like a brick wall, we get close to it, we can see the detail, but get 10~ feet away, and you wont see the same level of detail. a barrel in the distance will have 10-20 pollies for the circle, but get close, and it will have 1000. because the gpu horse power is used on the crap up close, and not on the crap that is to far away to appreciate, you get more eye candy, and at the same time, you lose the pop in for higher polly models.

the voxle stuff in that video is pretty and everything, but currently impractical, there is a reason that nothing is moving, but you will most likely see hybrid games soon enough that use the voxles for stationary objects, pollies for what moves, and tessellation so they can have extreme detail when they need it.