Motion blur for all! GLSL and Non-GLSL mode!


(SolarLune) #1

Hey, there. So, motion blurring (using the BGE’s built-in motion blur 2D filter) doesn’t work on ATI cards; I too work on an ATI card, and this effect has been missed. So, I decided to implement motion blurring using the VideoTexture module. Here are my results. :evilgrin: As can be seen below, it works very well - this must be how they did motion blurring and other similar higher-end effects on systems like the PS1.

It works by using video texture buffer objects in an overlay scene which render the scene from a camera positioned in exactly the same position as the real camera, because rendering the real camera’s view would result in seeing the overlay scene. After this, the buffers sample the render and display it after a delay to acquire that offsetting effect of previous renderings. As you can see, the results are pretty good.

EDIT: I forgot; press M or N to enable / disable the blur. There’s a slight hiccup, but that’s because it’s adding and removing the motion blur effect overlay scene; in a real game application, you would add the scene at the beginning of the game, and then enable and disable the effect using a variable, making the motion blur buffers invisible and pause executing logic.

The blend is only for Blender 2.54, but if you use the 2.49 version, you can open the blend to at least see the script and setup. Also, you can port the script, and it should work fine.

EDIT: Updated. The original I did only worked for GLSL mode. I updated that one, as well as added a new one that works for Texture Face mode. I tested that, and the texture face blend also works in GLSL mode. However, note that the method they work is different, so if you use this, you should use the appropriate mode. The blurs are heavy, but you can delete the extra buffers if it’s too hard on your CPU. I also now scale the alpha of the buffers by the number of buffers present, so that you should always be able to see the original image through the buffers. If you use this technique in your commercial game, credit would be nice, but isn’t necessary.

You can download the blends from this URL:

Multitexture Motion Blur

GLSL Motion Blur

Attachments






Is it possible to apply motion blur to only one object?
(rolo_gl) #2

Nice going!
I think it needs to be tested on older computers to check up if it’s usable (how much resources it consumes), but it’s nice to see motion blur back on my PC again (yep also a ati user), thanks for sharing ^^.


(SolarLune) #3

No problem. I think it’s a 10% Logic hit on complex scenes (on the textured Ball scene), but it’s less in the 2D Mario Game scene.


(Karakasimov) #4

This is really Cool!:slight_smile:


(SolarLune) #5

Thanks. It’s a cool effect; perhaps this method could be built into Blender at default to be triggered using a button? There could be a button to switch between the graphics card version, and this ‘software emulation’. EDIT: Anyway, this isn’t very complex to implement; You’d just use the buffer objects with their materials, and the main effect script.


(SolarLune) #6

Updated. The original only worked in GLSL mode, so I added a texture face version for 2.5.


(Kamiyama) #7

How would you implement this in a different game?


(Dhaher) #8

Wow man! This is fantastic! The multi-textured version also works on single texture. :smiley:


(mrn) #9

this is awsome! is it allright if i maybe use it in my game?


(MrPutuLips) #10

It is under a Creative Commons licence; you can use it, but MUST credit him.

@SolarLune
The effect of the blur is okay, but not great (maybe better with more samples), though is better than no blur at all. What I’m more interested in though is the sprite animation on the character. Perhaps you could tell us how to make a similar setup in a tutorial? :slight_smile:


(SolarLune) #11

@kamiyama - It’s a bit hard to translate, if I recall. However, it’s possible. Unfortunately, the nature of this solution’s hard to translate to other games - the best I could say is to try to duplicate the setup as best as possible and replace whatever ‘game’ scene I had with your game scene. Maybe I’ll make this into a template blend file.@mrn / Dhaher - Thanks. Sure, you can use it in your games, but with credit. ;)@hamstaq - Yeah, the blur is kind of rough, but like you said, it’s better than nothing. I might go back and see how I could improve it… I already started on a tutorial series about how to animate a 2D character in the BGE, and the method I showed was better than this old, outdated method. I should add a tutorial on how to utilize several animations, though. By the way, if anyone wants a 2D character example game, check out my 2D game The Longest Mystery (both WIP section and Finished Games section) - it was a better example of a 2D game than this one.
EDIT: Internet Explorer messed up my post. :stuck_out_tongue:


(1808) #12

It’s good for the graphic drivers that dont support the default. But i think the quality on the default one is better.


(1adamm115) #13

hey, can someone reupload .blend please ? :slight_smile: or is there any ideas how to make alternative/better motion blur then the build one ?


(johnsonic2000) #14

hi i realy wona to have it but your page not working please re upload the file in another page :disappointed_relieved: