Chalnoth said:Additionally, an initial z-pass is very cheap
Cheap, comparatively speaking I guess you mean. It still requires all the Z-buffer traffic that would have taken place during regular rendering, PLUS maybe several read-backs of Z when the actual textured rendering takes place PLUS doing all the geometry transforms twice. So it's really mostly shifting the load onto other parts of the GPU that are hopefully not as strained as the memory subsystem.
I also fail to see how a buffer overflow - which hasn't been demonstrated as being an actual problem with a tbdr - would "slaughter" performance, as all the actual extra memory traffic would be one block write of the internal Z-buffer to memory which could be done as very efficient linear bursts, and then a read-back in the next pass in the same efficient manner. This is nothing compared to what is required in an IM renderer in the way of Z-transactions, and like half an order of magnitude more efficient...
and is even required for stencil shadowing
Why would it be required? Afaik, DOOM3 renders shadows AFTER the scene's been textured already, so the Z-buffer would be filled anyway at that point even had the first initial Z-pass not taken place. It seems to me the initial Z-pass is there merely to cut down on the shading neccessary to render the light-sourced textured pixels, not to facilitate rendering of stencil shadows.
And yes, the ratio of pixel fillrate to memory bandwidth is what determines whether the limiting factor is memory bandwidth or pixel fillrate. Rendering hidden pixels doesn't affect this ratio.
Isn't that being a bit selective you think? Naturally the amount of overdraw varies with the composition of the scene in question, but shouldn't Z traffic be factored into the formula as well? Just forgetting about it doesn't seem entirely honest...