How about putting it where it will count? Why have invisible tessellated objects? There has to be a script call made for the ocean model to be in the scene, doesn't there? Why have it there? It's not too much tessellation, it's tessellation that serves no purpose, except that it makes nVidia cards win in benches. There is no good reason to tessellate the curbing around the sidewalk. A lot of what people are crediting as tessellation in this game is actually POM, not tessellation. Most of the tessellation serves no real visual benefit, that I can see. I've seen nobody come up with a reason to justify the way tessellation was done in this game. Tom's is the only site I've seen report on it that didn't come to the same conclusion as this thread has put forward.
WIth the new tessellation, designer choose "What" to tessellate dynamically, but not "when" or "which part" to tessellate dynamically. I am not capable of explain this more clear than this, but you can not partially tessellate an object. You can construct one big object with multiple objects and selectively tessellate them, but it really isn't easy. This however is not the core of this problem.
However, since the ocean is constructed by recycling ocean tiles and follow a specific agorithm with different offset, therefore you can't partially tessellate the ocean either. However, since the ocean tile is being recycled, all you need to do is to tessellate one tile and the entire ocean will look as if the whole thing is tessellated. This is still not the problem.
Note that we don't tessellate the whole screen at once for 2 reasons. First, it is not wise to combine "things that moves" with "things that doesn't move" in one wire frame. That is why the landscape, which does not move is on a seperate model from the moving ocean. Second, tessellate objects seperately can maximize parallel processing as variable are not dependent to each other. So instead of running time of A + running time of B, the running time is the max of the 2 assuming there are enough parallel processing power. This one is IMO the key factor on why CUDA structure shrines.
While some may argue why tessellate something that is not visible to viewer, and the answer from the Computer is: "How the F do I know you can't see them?"
Again, viewers believed in what they see, but it is actually designers' task to fool viewers in what they see. There were no water, no guns, no bullets, just pixels and colors. Sometimes we, as viewers, laugh when we run through stuffs which should not have happened. Sometimes when we zoom close enough, the viewport ends up to be inside a character, which viewers will see the internal of an object. Not surprisingly, it is empty inside.
To maximize performance, the only way is to break a big task into pieces and compute them individually so multiple cores can be utilized. However, the down side is that each individual task does not have information about others on going tasks, or a central processing unit will be needed to keep track of the information. This tracking itself may be fair more time consuming than those tasks itself. Physics is a good example, GPU PhysX is Super fast, but it is super fast as the result is not get feed back to the game. However, to make Physics on environment affecting gameplay, then CPU will quickly becames the bottleneck while GPU sits and wait for the next instruction.
To determine if one model is behind another, you really need to compute the 2 objects together to figure out the answer. Here we are talking about hundreds, if not thousands of object instances. Note that the order may change upon every single frame and nubmer of object instances may increase or decrease. Note that tessellation must be done before rendering and ordering does occur during rendering as this information is needed to apply shades, skins, lighting, shadow etc. Such process is called culling.
As laymen, some will argue why tessellation happens before culling, and the answer is simple, the result of tessellation will be off wildly. A single wired frame may appears to be multiple, seperate wired frames due to the objects at the front. Trying to tessellate the whole sence will fuse objects together. So to really prevent tessellation, 2 culling must occur while the first culling is not really a culling(the technique used is not the same). As to the actually tessellation, not only it needs the model that needs to be tessellated, but all models that are in front of this models, and they must be tessellated in order to ensure accuracy. This method will result in a better looking wired frame as a whole, but not necessary faster. The key factors are, is the running time saved by not tessellating things that are not visible + culling + the time to figure out the pixels/polygons that are not blocked more than to tessellate everything that is to be tesselated independently? How much more work does it need at the design stages(clipping is one of the things that designers must take care off. You don't want your toons arm somehow disconnected from the body while swinging the sword).
As you can see, the more I go on, the more complicated it will get and the fundamental question is still not answered. It is or is it not better to tesselate the invisible ocean.
It does waste computation. This has been proven by altering the water quality setting and observing a performance change in areas where no water is visible.
We don’t see invisible ground and building meshes in the ocean do we? Of course not, because the map data doesn’t contain it. They don’t stick ground and buildings into the ocean areas when they build the maps. The same should apply for the ocean in ground areas.
If it is okay for you, you can swich tesselation on and off while you play. If you have quick fingers, the average FPS will increase by switching it manually.
To answer the second part of your question, there are no buildings behind the ocean, so there are no wireframe of buildings. Crytek could have made mesh for the seabed to make ocean look even more realistic, and the wired frame of the seabed will still be there even if it is not visible. If they do however, it really doesn't resolve the original problem we started with, why tesselate things user won't see? Well, that really isn't a problem as we don't see what goes through RAM, CPU and GPU anyways. The question is, is there another way that produces the same scene without unnecessary tesselation, and the answer is yes, do not tessellate dynamically. This is not the what you are going after. What you are really going after is, will applying tessellation only on the parts that are visible through the viewport faster than applying tessellation everything? The time to figure out which polygon is visible to user, figure out which model this polygon belongs to, find adjustment polygon from this model, tessellate, reattach to the original non-tessellated model for each model that is within the scene, for each and every single frame, does not sound faster to me although the wired frame may look better.