So what? Does it hurt performance in any meaningful way?
I posted this on another forum, but thought you guys would like to see it as well:
This is a fantastic read:
http://techreport.com/articles.x/21404
I can't believe what a slipshod job Crytek did on the tessellation.
Check out how many polys it adds to this flat concrete barrier:
Also, it seems like there is dense tessellated water being simulated and drawn underneath every area near a coast:
!!!
This is beyond lazy. This is just amateur.
So what? Does it hurt performance in any meaningful way?
Yeah. The article brings up how the architecture the last two generations of nVidia boards have used was specifically designed to greatly increase tesselation performance. Since nVidia was instrumental in getting this DX11 content released in the first place, it's plausible that they didn't care enough about the performance hit because it's only about half as bad on nVidia boards.
Not that that excuses any of it. The tesselated water rendered everywhere undearneath the ground is completely insane. And I don't think we need concrete slabs made out of 10,000 polygons when 500 would have done just fine. Inefficiency like this is pretty maddening.
Ah, well. Now I know. =)
"boondoggle"
"boondongle" sounds like a coonskin cap attachment for Wii Cumberland Gap.
Wow, this is incredible. So much performance wasted!
Not only is it wasted game performance, think of the carbon footprint of those extra polygons!*
*I'm only half joking. ;)
H.A.W.X. 2, another "The Way It's Meant To Be Played" game that was an early DX11 showcase for nVidia was accused of similar nonsense. nVidia has a long history of scummy practices like this and unnecessary levels of tessellation to exaggerate the performance delta are only the latest tactic.
Scandals like this, or the absurd vendor ID check in Batman: Arkham Asylum for MSAA, are the reason I've been hesitant to buy any nVidia hardware in the last few years.
Yeah, this is a completely crappy way to construct geometry. Thanks, Crytek!
They're not the only game that mess up with drawing water under everything though, I recall falling through geometry in many games (AoC, Warhammer, etc..) and finding water underneath. Course, without doing a debug of the render I have no way of knowing if it was being drawn beneath the ground..
Still, that was a depressing show for Crysis 2, considering it is a showcase of PC graphics. I guess we need a showcase of PC Optimization. Shame to think about what Carmack said about performance console vs. PC and how optimized things would work -- if only AMiGA made it out alive (with fixed hardware). Oh well.
I think that modelling it underneath the world isn't uncommon, the interesting (stupid) part is that they're actually drawing it regardless of if its occluded.
I guess I could envision some kind of situation where once the calculation is done for a small amount of water, there's a low marginal cost to draw the rest of it, which is then offset again by the cost of the occlusion tests. But that doesn't seem very likely.
Hey, at least I won't die of thirst in their games!
Actually the article indicated that they're actually setting it up regardless of if it's occluded, not that it's being drawn. There might be other reasons for this. (Notably if they're using NVidia's FFT Wave shader for the wave motion there are probably pretty stringent boundary conditions for the overall dimensions of the water patch, meaning the only alternative is likely to draw a square of water, which is going to peg it to the largest edge based on the part that is visible, since I doubt for a number of reasons the FFT water shader is a non-Radix 2 FFT based system)
That means nothing for the elventy billion polygons in the concrete barriers, of course.
Yeah, what is it with games and having a water table that's never used? Seems to happen all the time.
Yeah, i think that having a sea extending to the infinite (even below the terrain) is not that rare. It may cost 0.5 fps, nothing important. The stupid thing here is as they are tesellating all the sea, the "waste" for not ocludding the hidden part climbs up a lot.
In other words, it's already not efficient to draw the mesh which isn't visible, but it's criminal to draw a non visible tesellated mesh.
Maybe Crytek are having a crack at their own unlimited detail engine?
In other shocking news, many game developers use "normal-maps" even on totally flat surfaces that don't need the normal maps and are just wasting the computational effort to compute those surfaces.
All of the complaints in the techreport article might have perfectly reasonable explanations, from the fact that it's probably designer-driven how much tesselation objects need (which is a reasonable explanation because it is a simple fact that if you make something designer-driven, they will make occasional mistakes, like a terrible nonsensical LOD transition I remember seeing on a giant rock formation in HL Episode 2, which was 10x worse issue since it was actually visible to the naked eye) to the fact that the water is being culled, just not as tightly as some people would like, which might mean that there are technical limitations to the algorithms which those "some people" aren't privy to.
Or it could mean they're total fuck-ups or money was insidiously changing hands. I'm just saying there are other possibilities.
It would seem a lot less insidious if nVidia wasn't such a pathological offender in this space.
this is amazingly tragic. I panic if there are a dozen polys I render unneccesarily. WTF are they thinking?
You are comparing unnecessary normal maps on a flat surface to tessellating the same surface so overwhelmingly that the poly density is almost 1 pixel per poly?
There is a massive difference there.
And I doubt the tessellation was done by designers. It's an environment artist discipline.
I'm putting my money on purely "just put the same tessellation factor and LOD setting on everything and shove it out the door" attitude than the nVidia money hat theory.
Games have a lot of assets. Some of them will be kinda slow. but, the correct way to optimize a game is to do it based on hard data: find the sections of your game that run unacceptably slow, and figure out why. If there are a set of horribly unoptimized assets, that are only in scenes that run well, why should a developer care? I don't see anything in that article talking about hard benchmarks for those scenes with the unoptimized assets, maybe it's fine (or maybe it's not, haven't played it).
I disagree passionately.
The effort required to ship optimsied code and assets is pretty small. The trouble with your approach, is that in a situation where all code and assets are equally shit, in terms of speed, the profiling data just saus 'hey, it's no specific bottlenck really', and the game gets shipped with a min spec of a cray.
Coders are constantly parroting 'premature optimisation is worse than the holocaust', but I find it second nature to optimsie as I go. It never occurs to me to ship a symetrical art asset when it's easy to just mirror it and cut my texture use in half. I'd never dream of tesselating something that is basically flat, and the idea of rendering water that the player cannot see is batshit mental.
A lot of coders and artists are just lazy as hell when it comes to optimising. It still scares me that so many coders in the industry have never even seen a code profiling tool, let alone spent a few hours wroking with one. It should be mandatory to understand how to monitor performance.