PDA

View Full Version : Fill rate limited?



Mars_999
06-18-2006, 10:37 PM
After I have implemented a few new methods to speed up my engine, I now have faster FPS when I drop my screen sizes. So I am assuming this means I am fillrate limited? If so or not what can I do to boost my FPS even more at each resolution? Thanks

Obli
06-19-2006, 01:23 AM
Originally posted by Mars_9999:
So I am assuming this means I am fillrate limited?You could also be memory-bandwidth limited. Try using 16bit color or smaller textures. If the performance improves, you're bandwidth limited. If don't then yes, you're fragment-processing limited.

Obviously, I am assuming no blending is taking place and your shaders to be quite simple.


Originally posted by Mars_9999:
If so or not what can I do to boost my FPS even more at each resolution?If fragment-processing limited there's not much you can do. The conventional wisdom says you can tacke this problem by rendering front-to-back but you must do this with some care: it eats more batches, more CPU, more system-bandwidth so your mileage can vary.

jide
06-19-2006, 04:00 AM
To my opinion, all common graphic cards since years are all fill-rate limites and bandwidth limited.

zeoverlord
06-19-2006, 05:33 AM
Originally posted by Obli:


Originally posted by Mars_9999:
If so or not what can I do to boost my FPS even more at each resolution?If fragment-processing limited there's not much you can do. The conventional wisdom says you can tacke this problem by rendering front-to-back but you must do this with some care: it eats more batches, more CPU, more system-bandwidth so your mileage can vary. A variation of this is to draw a few ocluder objects that only draw to z.
These are basically just boxes that fit inside the normal geometry.
Doing it this way reduces the need for sorting and will provide good starter early z-cull geomety.

To reduce the batch llimitation you can merge some textures into a large atlas if you can

Mars_999
06-19-2006, 09:35 AM
I may have to try to do something like you suggested Obli or zeoverlord where I am sorting my geometry to help reduce fragment processing. I know that my screen size affects my fps. Also if I shutdown my water FS my FPS go up quite a bit. I know ATI does this for you with their Zbuffer (can't remember the technology name for it Hyper Z) so that they help eliminate fragments ahead of time so you aren't wasting GPU cycles on occluded fragments. And getting a new videocard isn't an option for I already have 7800GT...

zeoverlord
06-19-2006, 09:57 AM
Ultra shadow II, Hyper Z, Early z cull.
Different names, same thing, and all the reasonably modern cards has it.
(tough Ultra shadow II has a few more parts in it).

You say your water FS is a huge fillrate hog, try optimizing it or bake some of your calcylations in a texture, play with it and see what happens.

Mars_999
06-19-2006, 10:03 AM
Originally posted by zeoverlord:
Ultra shadow II, Hyper Z, Early z cull.
Different names, same thing, and all the reasonably modern cards has it.
(tough Ultra shadow II has a few more parts in it).

You say your water FS is a huge fillrate hog, try optimizing it or bake some of your calcylations in a texture, play with it and see what happens. Thanks for the tips I will see if I can move some of the calculations into textures... And thanks for the headsup on the Ultrashadow2 is the same as Hyper Z. One question on this since I have a 7800GT how does one use the ultrashadow or in ATI's case the HyperZ then? I am assuming them to be automatically done for you.

zeoverlord
06-19-2006, 11:33 AM
Yea pretty much, early z cull simply means that it checks if the z coordinate is occluded before the fragment shader is run and not after as the case was with older hardware.
It kinda runs automaticly.

On top of that Ultra shadow II has dual side stencil rendering, faster rendering when only rendering to the stencil, and something called "programmable depth bounds test" (http://oss.sgi.com/projects/ogl-sample/registry/EXT/depth_bounds_test.txt) , it is simply a scissor test for depth.
Ultra shadow II are big words with small but powerful components.
for more reading (http://3dgpu.com/archives/2004/08/18/nvidia-on-doom-3-and-ultrashadow-ii/)

Mars_999
06-19-2006, 12:00 PM
So with DepthBoundsEXT() can I put in my values e.g. 0.0, 100.0 and call this function even if I am not doing stencil shadows or using the scissor test? I hope so cause this may help me. I don't see anything on having to call glDisable or glEnable for this... thanks for the headsup on this

dorbie
06-19-2006, 02:30 PM
Draw less fill.

Make sure alpha test is only on when useful.

Don't blend unless you have to and only where you have to. Draw blended stuff last to maz z rejection.

Depth sort front to back to exploit early z.

Use fewer textures.

Use lower resolution textures.

Use texture LOD bias to reduce resolution used but maintain detail close up.

Only use anisotropic texture where needed.

Use compressed texture if you can get away with it.

Use smaller texture formats.

Use a smaller framebuffer format.

Simplify shaders as much as possible and watch the precision / formats and varying counts you're using if that's your method of rendering.

Experiment with a preliminary untextured zfill pass if you're really heavy on fill and can't sort effectively.