Depth of field blur: the Swiss army knife that improved the framerate
joostdevblog.blogspot.com
joostdevblog.blogspot.com
This performance optimization doesn't really work for variable-width blurs (like depth of field) on 3d scenes though, because some parts of your image need to be crisp, while others blurred. Downsampling the entire image would lose resolution on the crisp parts.
3d depth of field blurs are actually pretty interesting though. They're variable width, which is just another way of saying that each pixel on the final image might be blurrier or less blurry than another pixel. Implementing this kind of variable blurring is a tough task, and typically done by scaling up or scaling down a disk of random sampling coordinates for each pixel. When the disk of coordinates is large, the sampling coordinates sample further from the pixel its centered on, so the resulting pixel has a bigger blur. When the sampling disk is small, the surrounding coordinates are closer to the center pixel, creating a smaller blur. The size of this sampling disk is controlled by the depth of the pixel from the near and far focus planes of the virtual camera.
I've glossed over a lot (like the artifacts that can result from 3d DoF), but Nvidia's GPU gems has a great article on the subject http://http.developer.nvidia.com/GPUGems3/gpugems3_ch28.html
An alternative would be to use Summed-area tables [1] where each texel contains the sum of all texels that are above and to the left of the current texel. This allows variable-width blurs to be computed in constant time, using only four texture samples (!).
And the concept of a variable-width blur is an approximation to a related concept in photography/optics called the "circle of confusion." [2] The circle of confusion, combined with bokeh sprites, are usually what AAA games are doing for depth of field [3].
See [4] for more details.
[1] http://http.developer.nvidia.com/GPUGems3/gpugems3_ch08.html
[2] http://en.wikipedia.org/wiki/Circle_of_confusion
I believe the precision/overflow issues can be mitigated using modern GPU hardware (the authors mention this in section 8.5.2 of the article.) Now-a-days it is pretty much standard to have floating-point render targets (especially with deferred rendering and light-pre pass renderers) so 16/32 bits per component should be adequate especially if you apply the tricks the authors present in the article. Not to mention that now we have DirectCompute/OpenCL/CUDA.
Though I don't really see people talking about SATs that much (I myself have never implemented them.) Maybe there is an underlying reason why people don't? Bandwidth maybe? I would imagine it would be pretty taxing on the system to recompute the SAT every frame.
This is for example what the usage note at http://www.merriam-webster.com/dictionary/farther says, although they state that the usage is becoming more polarized.
We really can’t; you’re going to have to accept one day that your position is untenable. Where languages evolve, we’re powerless to prevent their inexorable transformation. They’re like species—there’s no such thing as “devolution”. Some would that it were different—they say “we could’ve won, if only”. Try though we might, the globalising power of the Internet, and its effect on communication, mean that it’s ultimately futile to fight change—even when it makes us uncomfortable.
We really cant, your gonna hafta accept one day that your position is untenable. Were languages evolve, were powerless to prevent there inexorable transformation. There like species, theres no such thing as “devolution”. Some would that it were different—they say “we could of won, if only”. Try tho we might, the globalising power of the internet, and its effect on communication, mean that its ultimately futile to fight change, even when it makes us uncomfterble.
As you say, though, this is wildly off topic.
I’m not sure with what justification you can call that devolution. It’s a change that affects clarity only minimally: There aren’t many situations where using “it’s” instead of “its” is confusing and doesn’t communicate what the writer wants to communicate.
It just makes sense that every flourish in a language that adds rarely needed specificity will be ground away with time.
Stylistically you are certainly within your rights to call it a devolution (I also don’t like it aesthetically), but that’s very subjective. I don’t think that pointing at specificity is the way to go here, though.
I wonder what will win: practically no new natural languages are being created, so simplification is running amok, but invasions are now rare, and we use computers almost exclusively in our own native tongues. Maybe we end up suffering global economic collapse and reverting to the natural language wars.