Pixel motion blur artifact...
Posted 07 September 2012 - 05:57 AM
does anyone know the best way to get rid of this or should i try the dx10 example. is it better? thanks for any advice on this.
below are a couple of pics showing the issue and where it's ok.
here it looks fine...(spining ball)
here there is bleeding when orbiting the mesh...( it looks worse runtime with a gap between the bleed and the ball)
Posted 07 September 2012 - 03:59 PM
Posted 07 September 2012 - 08:01 PM
Posted 07 September 2012 - 09:59 PM
@rouncer, yeah it does, i hope someone solves it one day as it really give a nice smooth feel to a game.
Posted 08 September 2012 - 02:54 PM
If i did it - just image space, project the vector then sample in the direction of the 2d line made. should be pretty simple, if i had a vector and 3d position per pixel on the screen i bet that would look amazing when like say a plane wooshes by the screen.
Posted 08 September 2012 - 11:01 PM
Posted 09 September 2012 - 12:33 AM
Posted 09 September 2012 - 12:50 AM
Posted 09 September 2012 - 03:39 AM
I'm not sure what the DX samples are doing, but as Reed stated it looks like you're blurring parts of the background. Motion blur, like a lot of other effects, ideally require you to operate on the object independently. That each object should be rendered to a separate FBO, blurred, and then blended back into the scene. Not very practical, so a workaround is to impose a limit on the pixels you do modify, but then you get some artifacts. Though I've never seen motion blur implemented at the object level. An LCD screen gives you this effect for free. I've only seen motion blur implemented at the camera level, which is dirt easy to implement because you're just blurring the whole frame equally. Still, if your goal is to only blur the ball, I would suggest you render it separately, blur it, then blend it back into the scene. You'll get the quality you're looking for. If your game is a bit more complicated, then you'll have to work around the artifacts.
Posted 09 September 2012 - 06:36 AM
below are som pics after the current changes...
camera orbiting (will be much nicer once i mask off the camera blur on the focus mesh being orbited)
Posted 09 September 2012 - 10:59 AM
good work on the synthetic environment too - looks like a nice toy land.
Posted 11 September 2012 - 12:31 AM
anyway here are some last pics of it...Thanks again everyone for your input!
Posted 11 September 2012 - 07:53 AM
nevermind figured it out, but will stick with just a pixel shader for this one as there wasn't much performance gain (in my attempt at a compute shader version atleast).
Posted 11 September 2012 - 09:02 PM
Motion blur in ray tracers and path tracers are done commonly in 2 ways:
1.) "Hack" way - Using the special "animated transform" that describes the object movement over the frame. E.g. this solution is basically the same we're talking about in this topic, except that we blur at time we're creating image (e.g. no post-processing and neither bugs that are tied to it, like blurring background, etc.). Although this is a hack and only works for simple transformations (no deformations, etc.) - unlike the post processing solution. E.g. neither of these can actually compute correct motion blur. So is there any way to do it? ... -> 2.)
2.) Real way - Okay this will sound silly, but you actually do the stuff, you did on GPUs in the ages of accumulation buffers. Basically current frame is average of several frames. Now you will say that this will produce all artifacts for fast objects or quick camera rotation. The solution is - use sub-frames. You actually sample N sub-frames with defined sub-step before and after current frame (to get correct motion blur at current frame), where finding the N value is tricky. You need to select value high enough to have nice smooth motion blur on fast objects and low enough to actually compute N frames in some realistic time scale (e.g. doing this in few minutes or hours, depending on machines and time-scale available -> basically the almighty budget). Of course the N value can be computed or approximated.
Actually this 2. could be understood as discretization of what Reedbeta described (e.g. using "4D ray tracing"). Note that relativistic ray tracing is quite possible, just don't forgot variable time at your rays (though I'm not saying it's being actually used).
But unless you actually do some physics simulation (or high quality render, where motion blur is the main effect of it), you will probably stick to either "Hack" ray tracing solution or post processing solution.
#David Gallagher - It looks like something is wrong with your lerp value's third argument. Just from first look you're dividing in pixel shader and multiplying in compute shader. Note that it might be also somewhere else (but I think that this produces somewhat weird texture coordianates), I probably would have to see whole code of compute shader and think a bit more about it.
If you don't know how to speed up application, go "roarrrrrr!", hit the compiler with the club and use -O3 :D
Posted 12 September 2012 - 09:14 AM
I always end up looking at it and thinking "What does it really add to the game?"
To me motion blur is only really valid in cut scene type views, for in the playable parts of the game I think it is a distraction that actually counter-productive.
You don't get motion blur with the mark one eyeball, so why would I want it in a game?
Motion blur is an artifact of camera based systems, so if you have motion blur, you are implying that a camera is in use and hence the "player" is not really there.
Given that view point, I only ever use it in cut scenes and always either use an accumulation buffer approach, or just do it with 3ds max and record it to disk.
What do you guys think about the use of motion blur?
Posted 12 September 2012 - 10:47 AM
I myself really like it, at least the version I was able to get working (i think it's similar to project offsets motion blur). I don't like it too overdone, unless it's waranted, like a cartoony kind of feel. but the thing i like is it takes away that chopyness as the camera is turning and think it adds to the emersion, at least for me, as my eyes are watching a screen not eyes inside other eyes, so going the movie approach does make sense from that point of view, but everyone has thier own tastes and it something that can always be turned off in the settings. I also really like it when in a vehicle moving really fast, I think it really adds a nice touch as i remember an old james bond game i played once and had a great motion blur for the car driving stages and really gave the feeling of speed. anyway that's my 2 cents.
Posted 12 September 2012 - 11:08 AM
When I wrote FOFT I was often accused of doing an Elite rip off, that was total bollocks.
I was trying to do a Starflight rip off.
Posted 12 September 2012 - 11:56 AM
Posted 12 September 2012 - 01:21 PM
I was trying to do a Starflight rip off.
here is a Video from my engine, showing some various filters all containing this motion blur and even with it's slightly exaggerated settings (just to make it more noticable in the video) the motion blur (except when paused) just looks like the original without camera shadering when turning.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users