15fps on this scene with DoF, 17fps without. I'd really like to know how they've done it so cheaply.
Going from 15fps to 17fps means it's taking 8ms, which is hardly what I'd call cheap.
15fps on this scene with DoF, 17fps without. I'd really like to know how they've done it so cheaply.
CryENGINE 2's regular DoF had around the same (if not worse) performance hit, so I'd say it's still a pretty substantial improvement over what they had before.Going from 15fps to 17fps means it's taking 8ms, which is hardly what I'd call cheap.
CryENGINE 2's regular DoF had around the same (if not worse) performance hit, so I'd say it's still a pretty substantial improvement over what they had before.
Also, wouldn't it be something like 3-4ms at 30fps?
Never measured it myself, but I really doubt that they spent 8ms doing a gaussian blur.
The cost of something won't change depending on the framerate. If it's 8ms at 15fps, it will take 8ms at 30 fps. The difference in fps will change, because fps is non-linear. So at 30fps spending an extra 8ms on DOF will bring you from 33ms to 41ms, which would bring you down to about 24fps. Or if you were at 100fps, it would bring you down to about 55fps.
8.7 ms to do gaussian blur is completly insane.There is definitely something wrong here.
Since talking about the leak is OK here, I assume this is permitted as well:
CryEngine 3 SDK Documentation
http://wenku.baidu.com/view/de6494db6f1aff00bed51e72.html
There's a lot of great stuff there
There are also links (I won't post them unless a mod gives approval) to the scripting manual and the technical doc (things about lighting, animation,e tc...).
Also, I get a strong feeling that they at the very least didn't implement any vertex culling or anything like that on PS3, since they specifically say that in order to keep things with decent performance on PS3, you need to keep under 2000 drawcalls.
since they specifically say that in order to keep things with decent performance on PS3, you need to keep under 2000 drawcalls.
Great post!Since talking about the leak is OK here, I assume this is permitted as well:
CryEngine 3 SDK Documentation
http://wenku.baidu.com/view/de6494db6f1aff00bed51e72.html
There's a lot of great stuff there
There are also links (I won't post them unless a mod gives approval) to the scripting manual and the technical doc (things about lighting, animation,e tc...).
I dont see how you can extrapolate that no vertex culling is used based on a limit of 2000 draw calls. What comsumes draw calls most are shader effects, amount of unique non instaced objects, particles and more. In Crysis the shader effect to make vegetation procedurally sample terrain color to get vegetation object color more grounded to the scenery was between 500-1500 draw calls. Though that effect for Crysis 2 (if used for consoles to) will be cheap as there is very little vegetation compared to Crysis.
Since no mod said no, here are the other two documents:
Since no mod said no, here are the other two documents:
SDKDOC5-100234-15136.rar (1.96 MB) (scripting manual)
http://www.multiupload.com/9WNTIY7N7D
SDKDOC4-102931-15140.rar (4.53 MB) (Technical documentation)
http://www.multiupload.com/U424E31P63
I love the IBL. No more boring uniform albedo diffuse as ambient lighting, now it supports what basically amounts to skyboxes with ambient specular, hell yeah!
Backface Culling
Usually backface culling is a no-brainer for graphics programmers. Depending on the triangle orientation (clockwise or counter-clockwise realtive
to the viewer), hardware does not need to render the back-facing triangles and we get some speedup. Only for some alpha blended objects or
special effects we need to disable backface culling. With the PS3 this topic needs to be reconsidered. The GPU performance when processing
vertices or fetching data for vertices can be a bottleneck and the good connection of the SPUs to the CPU allows to create data on demand. The
overhead for SPU transformation and testing triangles can be worth the effort. An efficient CPU implementation could do frustum culling,
combining small triangles, back-face culling, mesh skinning and even lighting. This however is not a simple task. Besides maintaining this PS3
specific code path, the mesh data needs to be available in CPU memory. At the time this article was written we did not yet do this optimization
because of the shortage of main memory. We might reconsider this once we have efficient streaming from CPU to main memory (code using this
data might have to deal with one frame latency).
A few images to show off/compare the IBL vs regular diffuse ambient:
No direct lighting
Direct lighting
Direct lighting + light bounce