People here have been very busy lately due to the inminent Shoggoth release.
It's been a long time. And I still don't work on the SSS filter. Ok. My fault.
Anyway I came out with something cooler: Localized Motion Blur.
Before you ask, this is NOT Pixel Motion Blur.
It is based upon the old ping-pong technique used in Motion Blur, and it inherits most of it's pros and cons. But it is different:
Existing Motion Blur in OGRE whether blurs the entire screen or does nothing. And pixel motion blur is expensive, and harder to understand.
Instead, this filter only works on specific objects, not on the entire frame buffer. With separate parameters for each object with different blur factors
This filter is a post process effect, which can selectively blur per object. You specify a blur factor for each object to a material override (which is made easy thanks to OGRE material templates)
Each object in the scene can have it's own factor. Yes you read it correct. And every material hat has not been enabled for this kind of motion blur will not be blurred.
Pros:
*Each object has it's own blur factor
*With additional C++ coding, you can gather the object's velocity and set the blur factor accordingly (works per object, not per pixel though)
*It's fast
*Insanely easy to integrate to your game
Cons:
*Blurriness still depends on frame-rate. You can try this formula though
*Needs to draw the whole scene twice
A blur factor = 1 means full blur. Also such high value will cause glitches due to the ping-pong nature. Use 0.9
A bluf factor = 0 means no blur at all
Those who analize the algorithm will find out that it's actually pretty simple. And if you make use of MRTs, you don't need to draw the whole scene twice at all. Plus, the Z buffer optimizations could help a lot too.
I haven't coded an MRT version because it was harder (I was trying Eihort, didn't know Shoggoth was much more flexible), and I would lose the great flexibility I have now. Plus, the developer would requiere much more effort to implement it, as it would requiere to customize it's own pixel shaders. The solution is simple: those who want MRTs, need to write it themselves.
Now the pics, note that each object has it's own blur factor. And the head + the barrel are not blurred:




Pictures show a bit of it. It's much better seeing it in action. Binary download will be up soon.
Edit:
Patch here
Edit2:
Binary demo here!!!
Edit3:
Stand-alone source code here (instead of a patch)
Just apply to the main SVN folder. It will update sollution files and create the new ones.
PS: If people like this filter, further optimizations could integrate it into the OGRE core and make it easier for developers, as just defining "blurFactor xx" in the material ought to be enough. Everything else can be handled automatically.