How I Solved Real Time Motion Blur

  Рет қаралды 37,744

Sphynx_Owner

Sphynx_Owner

18 күн бұрын

Demo:
github.com/sphynx-owner/JFA_d...
Addon:
github.com/sphynx-owner/JFA_d...
Paper I wrote on the matter:
drive.google.com/uc?export=do...
Sources used in this video:
docs.unity3d.com/2017.4/Docum...
john-chapman-graphics.blogspo...
casual-effects.com/research/M...
docs.unrealengine.com/4.27/en...
www.comp.nus.edu.sg/~tants/jf...
• The Jump Flood Algorit...
• The Jump Flood Algorit...
www.comp.nus.edu.sg/~tants/jf...
github.com/cecarlsen/SDFTextu...
• Jump Flooding Algorith...
www.comp.nus.edu.sg/~tants/so...
docs.unrealengine.com/4.27/en...
Hope you guys found this interesting, and hope you find the demo and effect in general as cool as I have. Would love to hear some feedback regarding the video, paper, and effect itself.

Пікірлер: 335
@SirRanjid
@SirRanjid 15 күн бұрын
4:40 : I hate motion blur because: 1) I play fast paced games where it's crucial to know the exact silhouette. 2) Looking around ingime is more like turning your entire head than head + eyes. You cant account for my eye wandering around and tracking things not just in front of me. Similarly why depth of field is annoying because you cant know what at any given moment im focusing on rather than just assuming that the stuff straight ahead is what im looking at. 3) I get more than enough blur from my monitor when looking around ingame. 4) Given the annoyances above it's not worth spending more GPU resources for me. It would have to give me FPS in order fo me to be worth it. EDIT: For racing games its crucial tho. And for that it seems like a very good one.
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
This is a very insightful laydown of issues, here's my answer to each one (take it with handfuls of salt): 1. you are right, turn it off at that point. 2. for that I plan to implement motion separation for camera movement and objects, and it should help with that, so only object's movement would get blurry, but not camera movement. 3. that is true, but at lower refresh rates, even at 60 hz, it really elevates the smoothness. If you have 144 hz screens, it can still help somewhat with smoothing very rapid movement, but if you care for performance, the change would be negligible. 4. yep, do your own considering and see what you prefer. I just aim to produce a better effect by default so you are not "forced" to turn it off hopefully. racing games and games that want to appear more cinematic. I think that at subtle levels it can also be in high fidelity shooter games like battlefield and COD. Up to developers at this point. Its really all about immersion an personal preferences.
@runforitman
@runforitman 14 күн бұрын
Yeah I was playing rust, before disabling it, trying to jump to see over a fence I didn't enjoy my vision being covered in Vaseline when I'd have been able to see fine, jumping irl
@stickguy9109
@stickguy9109 14 күн бұрын
​@@runforitman You wouldn't see motion blur irl because our eyes do not have motion blur when moving. It only happens when objects move fast not the eyes. It is a thing that happens with *cameras* not eyes and the author did mention that. Google saccadic masking if you want this is how our brain cancels out motion blur.
@hornyclown
@hornyclown 14 күн бұрын
i love motion blur because it's fun
@miserablepile
@miserablepile 14 күн бұрын
I feel that _camera_ motion blur in first person games detracts from the experience, yes. However, I do enjoy _per-object_ motion blur in first person games. When a minigun is spinning in a characters hands, it's more visually appealing to have the barrels spin with some blur, and (especially when spinning up and not yet firing) a spinning minigun barrel is more obviously in motion with a bit of blur (granted, usually the character's stance&silhouette changes to indicate they are primed to fire, which is more visually obvious). Maybe the approach in the video could somehow use a velocity buffer that is not influenced by camera motion, or applies an inverse of the camera motion to eliminate its effect. After that, (if necessary) maybe a shader using this technique could only apply to objects with a "motion blurrable" tag enabled, as applied where deemed necessary between tech art and art teams. That said, I'm beyond my technical depth here, I might be missing a lot.
@ar_xiv
@ar_xiv 14 күн бұрын
The issue with all artificial motion blur is that you can follow a fast moving object in real life with your eyes and then what is blurred in your field of vision inverts. Like if you’re looking at a car, the background should be blurred, but if you look at the background, the car should then blur. So artificial motion blur has to assume what you are in fact trying to focus on. I think this is what would contribute to motion sickness more than anything
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
That is a very good point and I think it is more significant to the problem than my argument about centered blur. Thank you for pointing it out!
@ar_xiv
@ar_xiv 14 күн бұрын
@@sphynx_owner8224 thanks for the reply! I’m sure VR people have headaches about this when you start thinking about eye tracking vs head tracking (you can follow an object without moving your head), the fovea, etc etc…
@jonahhekmatyar
@jonahhekmatyar 14 күн бұрын
This is why I always disable motion blur and depth of field in video games. I don't get motion sickness but nothing is worse than having stuff I'm trying to look at become a blurry mess.
@TheDoomerBlox
@TheDoomerBlox 14 күн бұрын
@@sphynx_owner8224 It's a tricky problem to amplify motion without actually washing out the high frequency details that define an object in focus, quickly. As that is what's actually important to achieve with motion blur - bringing out the direction of an object through time, because you're stuck looking at a 2D projection of 3D space.
@freescape08
@freescape08 14 күн бұрын
I expect it's more than a couple years away at the consumer level, but it would be really cool to see eye tracking used to shift the focus of motion blur. Perhaps the best motion blur algorithms will be the ones that are useful now, but also prepared to utilize such technology when it becomes available.
@Patso04
@Patso04 15 күн бұрын
I think it’s even more impressive that you managed to do this on your own, many people who are in school don’t want to go anywhere this kind of work
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you for the kind words!
@NICK....
@NICK.... 15 күн бұрын
1. interesting topic 2. presented clearly 3. straight to the point yea this is a sub for me. good work!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you!
@Smooth_Voronoi
@Smooth_Voronoi 8 күн бұрын
Me too
@WrathOfTheHydra
@WrathOfTheHydra 15 күн бұрын
The actual tech on display here is impressive, but your demonstration of it is even more remarkable. Well done!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Appreciate it!
@CyberneticArgumentCreator
@CyberneticArgumentCreator 11 күн бұрын
When you add something that isn't contradictory to a thought, use the conjunction "and," not "but".
@zwolfelfen
@zwolfelfen 13 күн бұрын
bro dropped out of high school and still wrote a better paper than me or any of my peers. damn.
@Swenglish
@Swenglish 11 күн бұрын
Goes to show that formal education needs an update. It needs to be more about promoting the joy of learning and teaching methods for sorting through information, and less about feeding kids data and testing how well they've memorized it. One teacher is all it takes to completely kill someone's potential interest in a given subject, and that's what school does a lot of the time by turning learning into a chore.
@kurtisknodel
@kurtisknodel 15 күн бұрын
Really nice work, this looks great. You know motion blur is good when the final image doesn't look like it's "motion blurred" (in the traditional video game sense), and it just looks a bit closer to photorealism
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you! this is awesome to hear. You should try the demo and see it in full resolution if you haven't already.
@protodot2051
@protodot2051 14 күн бұрын
I played around with your demo (in godot 4.3, should've specified that. effect breaks in current release 4.2.2) and it looks really good. The centering did always bother me, so seeing someone create a version of the effect without that without compromising on performance is really nice. Good stuff.
@shoq9711
@shoq9711 14 күн бұрын
awesome work, I always wondered why game motion blur looked so different from cameras and raytraced 3D renders, its cool to see it visualized here. nice job on the paper and thanks for publishing it on github.
@BoarsInRome
@BoarsInRome 13 күн бұрын
Very impressive. It doesn't matter that you don't have an academic background, you clearly have a natural talent for tech art. Talent like yours is scouted for all the time... In fact if I ever need a shader god one day, I'll know who to hire. Great job
@RobinDuckett
@RobinDuckett 14 күн бұрын
Super impressive man, and it’s comforting to know you don’t have an academic background, I don’t have one myself but have been a programmer for 16 years. I have a number of projects that I have started upon, and then realised the amount of work rivals any degree course. Sometimes my projects lead me into areas I struggle to comprehend. I have also attempted to make motion blurring systems for Godot but could never quite produce something as realistic as this. Bravo!
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
This would not have been possible without the new compositor effect feature that was added to the beta, which exposes the render thread for you in engine and gives you access to velocity textures.
@theftking
@theftking 14 күн бұрын
The big problem I see in game motion blur are the lack of arcs. Most of the time it looks like vector blur where stuff just blurs linearly, but when you're swinging a mouse around, the motion blur on a bright light or something should be curved like it would be in real life/a path traced engine like Cycles.
@ThyReaper
@ThyReaper 15 күн бұрын
This looks really fantastic, great work! I wonder if you'd be interested in giving a talk about this at GDC next March - talk submissions are opening shortly, and I think it'd be a great fit!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
I would be honored, and the possibility sounds amazing! I would look into it at some point and see if its even possible, thank you for suggesting it.
@Floatharr
@Floatharr 15 күн бұрын
Best motion blur I've seen in a game was Quake 2 remaster. I don't know exactly what they did but it seemed like the blur amount was tied to an exposure duration of 1/350s instead of the framerate, so as the framerate fluctuates, the amount of blur stays constant. I have a suspicion that the reason why motion blur looks so wrong in a lot of games is because frame duration is not a constant in games which makes the length of the blur fluctuate from one frame to the next, in addition to being far too long. Interesting video!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
frame independent blur is a feature that I have added recently, it may require a bit more attention though, and in my opinion goes against the whole "intuitiveness" thing. What I do agree is not letting the blur get smeared below a certain framerate, as to not be jarring.
@silentdebugger
@silentdebugger 8 күн бұрын
I may be mistaken but I believe for Quake's case, because the basic game rendering is so cheap on modern hardware, they tell the engine to render at like 500fps internally and then composite all of those frames into a color accumulation buffer which gets presented at 60fps, which is the brute-force method of simulating how light from moving objects would actually collect on a camera or our retinas.
@f4rious
@f4rious 15 күн бұрын
Just want to congratulate on your effort regardless if its a new approach or not, it looks great! feels and plays great as well! The video is excellently executed as well. Congrats!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you!
@smokedmeats5506
@smokedmeats5506 14 күн бұрын
This so so fascinating and well made, i started working on godot at the end of last year, but you are running laps around my head with the technical terms, great stuff, subbed maybe you will share more stuff to learn
@RadleyBO0
@RadleyBO0 13 күн бұрын
I'll never forget seeing the game Lost Planet, which was the first game I really remember noticing the motion blur in. I thought it looked so cinematic when the main character ran around. In my mind, it was the future of graphics right there. For the record, I'm sure it wasn't the first game to have it, but it was the first time I really noticed it. This video brings back some of that old excitement I had seeing motion blurring in a game. This is fantastic work, and I really appreciate that you shared so much information on how you came up with the solution. Super cool! Instant sub.
@Meikulish
@Meikulish 8 күн бұрын
This is a very cool break down! Each of the freeze frames in your demo look really great. It could be a cool experiment to make it respond to an area of focus (like gaze, but there probably isn't fast enough gaze tracking yet). Maybe if gaze tracking ever gets to that point in VR or something, the motion blur skeptics will be willing to keep it on.
@nonarKitten
@nonarKitten 12 күн бұрын
That's impressive. Motion blur done right shouldn't be obvious at all until it's paused and that's exactly what I experienced. When I first saw the final output my brain was like "what motion blur"? Well done, that looks perfect.
@acf2802
@acf2802 14 күн бұрын
One of the problems with motion blur is that in real life if you track an object with your eyes, there is no motion blur, but a game assumes your eyes are locked at the center of your monitor and are never tracking objects.
@paranormalgamesstudios
@paranormalgamesstudios 14 күн бұрын
True but camera based motion blur; which is how we capture the world, does look straight ahead. Therefore this method is the best you can hope for. Until all devices for gaming have eye tracking embedded in them and software authored to use it, this is gonna be as good as it gets.
@paranormalgamesstudios
@paranormalgamesstudios 14 күн бұрын
Or instead of one camera we have two cameras one for each eyeball for stereoscopic vision, and write optional software for eye tracking hardware, when enabled you can independently track objects in the world with your eyes. DOF also needs this.
@JDsenrandir
@JDsenrandir 14 күн бұрын
This is so cool. Especially that you documented your work in a paper. Thank you very much!
@Kian00
@Kian00 10 күн бұрын
I could totally see this effect when combined with other camera artifacts like lenses distortion, grain, and light bokeh could lead to a very believable in-universe camera.
@Jetiix
@Jetiix 15 күн бұрын
Amazing work, especially for a sphynx cat. Bravo
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Trying my best :)
@debooger
@debooger 14 күн бұрын
youre showing it in such a fun way! and youre a sphynx cat so extra points for that
@JackTheFoxOtter
@JackTheFoxOtter 14 күн бұрын
This is a really interesting approach with a pretty exceptionally looking result. Awesome work!
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
Thank you!
@sentinelav
@sentinelav 15 күн бұрын
Looks incredible mate! Love that this was a self-driven pursuit.
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Would not have done it if it wasn't interesting at least. Thank you!
@sentinelav
@sentinelav 15 күн бұрын
​@@sphynx_owner8224 I've been into 3D, VFX and games forever, and I've never come across such a strong solution. Spent plenty of time thinking about it too! Short only of managing to include curve information for rendering wheels and such, this is the best realtime solution I've ever seen. I'll be dropping a personal invention in a similar spirit fairly soon, though it relates to colour, not motion blur. Keep showing them what's possible without a bloated budget!
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
@@sentinelav Its awesome to hear you have your own invention you can share with the world as well. As for the wheels, its an inherit limitation of having an instantaneous linear velocity buffer and not being able to sample it in infinitely small intervals, thus it is handled separately in any industry standard implementation. I am working on that as well with the focus of just getting it working well.
@sentinelav
@sentinelav 14 күн бұрын
​@@sphynx_owner8224 Yes, the instantaneous velocity aspect is definitely at the core of the problem. My thinking was that if you sample the current velocity and that of the previous frame, you could determine a curve to average across, instead of a linear path. The idea would be to project the vectors from the current frame to points on the previous frame. From these points, the *change in vector direction* would be determined. You'd be leveraging the fact that with two vectors, you'd essentially have enough information to draw a bezier curve. This is the concept, but in practice, I have no idea how to go about the implementation as I'm not *really* a shader programmer. I'd love to know your thoughts on the practicality of something like this!
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
I have given thought into that, and was able to extract things like curl coefficients into a texture, the problem is that my experience is rather limited with this, and it seems unrealistic to pursue currently. It WOULD be cool if I was able to take care of curves and wheels in the same blur, but it seems like radial blur for wheels is a safer approach.
@kiwi3085
@kiwi3085 16 күн бұрын
Hey, thanks for this! I haven't seen any games approach motion blur like you have, and to be frank I think you have the nicest looking motion blur to date. It manages to communicate fast motion without obscuring the image like most current motion blur does. I could definitely see myself using this in games if the option was available!
@sphynx_owner8224
@sphynx_owner8224 16 күн бұрын
Thank you so much!
@RayznGames
@RayznGames 14 күн бұрын
That was absolutely smooth mate! Great video!
@CameronOwen101
@CameronOwen101 11 күн бұрын
Nice work mate, don't know how this ended up in my feed but I'm glad it did. Subbed for more.
@DoctorMelon
@DoctorMelon 15 күн бұрын
Really great video - and a really great and performant motion blur technique!
@iau
@iau 11 күн бұрын
I, for one, love motion blur. I feel it makes the games I play look much more smooth and realistic. But I accept I'm not in the majority here. Even though I know almost nothing of computer rendering, I really liked your clear, concise and easy to grasp presentation here!
@RaigyoEcU
@RaigyoEcU 13 күн бұрын
I love it, that end result it's just amazing
@felixgeen6543
@felixgeen6543 15 күн бұрын
Great job! I was really impressed by your tenacity with this project and to bring it to completion must feel great. I’d love to talk to you about a project idea I’ve been thinking about for some time, but unable to find someone with the programming skills and interest to help me realise it.
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Its not completed but getting it to a presentable state and showing it to the world had me shaking and crying in excitement. I would love to hear about that project idea of yours, but I cannot guarantee anything regarding being capable enough to pursue.
@PesceA
@PesceA 15 күн бұрын
Nice. I'm not aware either of using JFA for motion blur, but it's been a while since I've looked. Jimenez motion blur for Call of Duty should still be among the state of the art. I'm not persuaded about the idea of "non-centered" motionblur and its effects on sickness, fwiw we've found that a good way to control motion sickness is to allow separate controls for camera motion blur versus object motion blur. Motionblur if you think about it physically, you should generate all intermediate images from the beginning to the end of the frame shutter time, and average them (in fact you can do exactly that, with brute-force sampling, to get a ground truth image easily) and so if an object is moving at a constant velocity during the exposure time, it will have a motion blur streak that starts from its position at the beginning and extends to its position at the end. The object appears "centered" in the image because at the center you have the most overlaps, while at the begin/end you didn't capture the object before that and after that, so there is no "trail" there. This is true only when you are simulating something that exposes into frames, e.g. film and so on, you can reason that eyes probably don't have a global shutter and so they work differently - maybe there is something there, perceptually might be better to motion blur in different ways, not sure. Lastly. I've skimmed your paper and watched the video, it's hard to tell whether or not this method ends up having more or less artefacts than the current state of the art - because in the end we always rely on heuristics of one kind or another, and the "devil" is exactly in these. You have to guess what direction is important, as most MB methods store only one (and there is room there for improvement!), and you have to hallucinate what is behind a moving object (disocclusions), as you have only one color buffer, and it's not easy to tell how your technique fares with these inherent problems of using one velocity and one color. The paper could use a few passes to make it more clear and readable in general, but if (IF!) you want to improve it, I'd suggest to focus a bit more on the heuristics. Good job!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
There's a distinction that needs to be made between a symmetrical motion blur and Centered motion blur. A good motion blur would appear symmetrical around the core of a blurred object, but that center of the blurred object would be between where it is in the current frame and the past one. Centered motion blur does not average values in the past of an image, to heuristically get close to the average of all intermediate stages between the current frame and the last, but it does it half in the past, and half in the future, sort of extrapolating it beyond any potential path it may take. I think I do a pretty good job of laying it down in the video, but the final point is that it's center is around the object position in the current frame, where in reality it would be between the position in the current and the last frame, thus to my knowledge less accurate, and why I said what I said about it. I also laid out the reasons to have it from a technical motivation standpoint, which is not negligible. I hope to get close to any state of the art when it comes to robustness of the technique and quality of the final result, and while I'm presenting it here, I am still going to work on it a lot more as its very new still. The reason I even released all that I did about it is because I have to if I want it play-tested and eventually added to Godot, meaning it has to be public and under MIT. And since the video uploaded I have added to it quite a bit with the help of testers in the community. I appreciate the feedback regarding the video and paper. I at least suggest you watch the video in its fullest to get my point about centered blur, but I understand the lack of clarity, as I did not expect this to be on the same level as a proper academic video, and just do the job of communicating my very new discovery. You are correct to say that my motion blur is far from a perfect simulation of a real one, but compared to the state of the art, I believe I have found something special, which is why I even went to this length presenting it to the world. You are correct to assume that there are artifacts, but the fact of the matter is that for the artifacts you need to handle and tune out (and fix), you get an effect with an unmatched fidelity and resolution compared to the previous techniques that I have showcased, and with a complexity curve that is unheard of with those techniques either. As for the paper, I know its not perfect, but I'm also unsure where to improve it and solidify it, so I would accept any criticism/corrections and would change it accordingly. Especially since I come up with improvements to the technique very often.
@PesceA
@PesceA 14 күн бұрын
​@@sphynx_owner8224 So I agree that in practice MB does this slightly wrong thing of using a motion vector that is from this to last frame (backwards finite difference), and then interpreting that velocity as "half in the past half in the future". And that for the pragmatic reason that you know the motion blur should be "symmetrical" as you say, so it makes sense to "expand" the object color half/half, whilst it's impractical to determine the direction of that expansion using velocity that matching - half in the past, half in the future, as you'd need to compute and store an extra set of transforms (two to compute the velocity half/half and one to compute and render the "center" object position). Thinking of it - one could actually compute only two transforms - this frame and previous - and then render object color by averaging them, thus creating a color image that is "correctly" in-between. This would actually be very easy to do, conceptually, but a bit of a pain to patch everywhere transforms are passed in an engine I suspect, and most importantly, I doubt this is an important source of error. I might be wrong though! Might be fun to experiment, maybe making a quick prototype. I did watch the video, and I think I get (hopefully) the centered argument, it is very interesting indeed for a lot of other reasons too. Re: the paper - there are improvements that can be made simply to its wording used (eg I don't know what a "sharp" input buffer is - full resolution maybe?) and style (the code for example is quite ugly in its formatting and also relatively not optimal both in terms of performance and in terms of style), but these matter less... The thing that would imho matter the most is to explain clearly all the heuristics used with the motion vector JFA logic. E.g. "I use complex sets of conditiions that take depth and velocity directionality into account, some are non-continuous" - these would be nice to know more about (e.g. sample_fitness...). You talk of things like "perpendicular offset" and "parallel threshold" and then "perpendicular threshold" - none of these things are clear to me. Perhaps they would if I spent more time with the code - but those kinds of things are where I'd spend more time, maybe some illustrations etc. Good luck!
@arthurbergamaschi
@arthurbergamaschi 13 күн бұрын
honestly, this is impressive, great job!!
@stephenbaldwin7165
@stephenbaldwin7165 14 күн бұрын
Great work! Looking forwards to seeing it in games real soon!
@SongeLeReveur
@SongeLeReveur 14 күн бұрын
Saw the screen at 6:02 and immediately thought "Yeah, you're going the JFA way!". Awesome work!
@Pockeywn
@Pockeywn 15 күн бұрын
amazing work. great video. this channel will take off i can feel it
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
I'm just happy people enjoy this video, it means a lot to me.
@wo262
@wo262 14 күн бұрын
Aw man, you actually gave me hope that you solved the general case for curved motion blur. In all seriousness, great job!
@KillahMate
@KillahMate 12 күн бұрын
Plenty of comments here make it clear to me that what people hate is camera motion blur, but they don't necessarily know what that it is or how it differs from object motion blur.
@MustafaBerkeGureltol
@MustafaBerkeGureltol 13 күн бұрын
Great video with great attention to detail. Well done.
@PancakesTheDragoncat
@PancakesTheDragoncat 14 күн бұрын
This is some really impressive work!
@MommysGoodPuppy
@MommysGoodPuppy 12 күн бұрын
beautiful work, hope this will be adopted in the industry
@fnytnqsladcgqlefzcqxlzlcgj9220
@fnytnqsladcgqlefzcqxlzlcgj9220 13 күн бұрын
Keep going, love your stuff!
@m.sierra5258
@m.sierra5258 9 күн бұрын
What nobody talks about is that motion blur in games negatively interferes with the fact that monitors don't strobe, but instead display the image for a certain period of time, further creating a blur on objects that move across the screen. That's the reason I disable motion blur, because both of those effects together are just simply to much for me. On the other hand, if your screen would be strobing, it would be possible to follow a moving object with perfect clarity with your eyes. There's is no reason to reduce clarity with an artificial motion blur. Reality does not have motion blur. If you follow a moving object with your eyes, it appears completely clear.
@wasteurtime5677
@wasteurtime5677 8 күн бұрын
I don't give a shit if you dropped out elementary school. DUDE YOU ARE TALENTED !!
@kebrus
@kebrus 13 күн бұрын
Easily subbed. Very concise. Keep up the good work, you are going places if you want to.
@Shack263
@Shack263 15 күн бұрын
Thanks for sharing your work! It's very inspiring. I wonder if this technique could be extended for radial motion blur. That's probably much more complicated. For racing games, linear motion blur makes wheels look very strange, and I think it's important to make it look good for that genre.
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Radial motion blur needs separate treatment all around (no pun intended), but I do have it on my sights regardless because its has to be added to the implementation that makes it to Godot. its is a rather confined effect that has a very specific use case, so ill just aim to getting it working well.
@Shack263
@Shack263 15 күн бұрын
@@sphynx_owner8224 I look forward to seeing what you develop!
@iestynne
@iestynne 13 күн бұрын
Excellent video! Also really glad to see the JFA algorithm getting some more love.
@sphynx_owner8224
@sphynx_owner8224 13 күн бұрын
underutilized I say
@iestynne
@iestynne 12 күн бұрын
Definitely. Probably because it's so counter intuitive. But that's what makes it a great insight. The recent Radiance Cascades idea has a similar feel to me.
@sanketsbrush8790
@sanketsbrush8790 13 күн бұрын
This video will help a lot of game developers out there , from solo indie beginners to big commercials 👍
@Splarkszter
@Splarkszter 14 күн бұрын
Thank you for this! Really awesome!
@pulmonary_yoghurt
@pulmonary_yoghurt 15 күн бұрын
Good work! Thank you for sharing this.
@tunmixx
@tunmixx 14 күн бұрын
Amazing! Thanks keep on good work
@alesjelovcan6810
@alesjelovcan6810 15 күн бұрын
awesome presentation and visuals!
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you!
@hamishpain8641
@hamishpain8641 13 күн бұрын
Hah this is a great solve for realtime motion blur! Back at uni I did my final year thesis on general motion blur (both in generating it algorithmically and performing velocity estimation from observed motion blur), and I would have been stoked if I'd come up with+refined anything as clever as this. Congrats
@paranormalgamesstudios
@paranormalgamesstudios 14 күн бұрын
looks awesome and natural.
@bunnybreaker
@bunnybreaker 15 күн бұрын
I was coincidentally reading the thread yesterday. Slick stuff indeed 👍🏽
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you! Care to elaborate which thread you saw this on?
@bunnybreaker
@bunnybreaker 14 күн бұрын
@@sphynx_owner8224 It could have been reddit and/or github. Not sure, but I definitely saw some of your other videos and posts there. Got yourself a sub 👍🏽
@SLPCaires
@SLPCaires 14 күн бұрын
Great work! 💪
@Thomas_Lo
@Thomas_Lo 14 күн бұрын
very interesting, very compelling, instant sub
@jesstech
@jesstech 11 күн бұрын
I think it's important to make a distinction between "camera motion blur" which applies to the velocity vectors of the environment when the camera is turned, versus "per-object motion blur" which applies instead to an object's animation. As others have pointed out, it's the disconnect between the parts of the environment that the player's eyes are tracking and the motion blur applied to those elements that causes this kind of motion sickness. The solution to this is to disable motion blur applied to the environment by changes to the camera or the velocity of the player character. But per-object motion blur applied to animations is hugely important for selling a naturalistic look and keeps things from looking like a hyperreal arcade game. Most games sadly offer only a single toggle to disable motion blur altogether for both the camera and object animations. I wish more developers understood this critical difference.
@sphynx_owner8224
@sphynx_owner8224 11 күн бұрын
It is understood in this case, and in the future if i follow through, you would be able to select coefficients for each component of a velocity separately, that is the camera part of the velocity for the object and the object's world velocity. If that does not work worst case you would be able to turn them on and off separately.
@bs_blackscout
@bs_blackscout 13 күн бұрын
You dropped out of HS and wrote a paper? Damn that's really surprising and impressive! Despite being about to finish college I cant stand academia and writing paper and research. It's boring, I'm too hands on, too practical and impatient. Kudos!
@Jyve
@Jyve 14 күн бұрын
This is so incredible. /applaud.
@ICloud1vfx
@ICloud1vfx 15 күн бұрын
you would be a great teacher.
@normaalewoon6740
@normaalewoon6740 12 күн бұрын
In unreal engine, it's obvious that thin foreground objects are not blurred outside their boundaries during camera rotation. This new method sounds promising. I'm not a fan of 'filmic' motion blur, but I like to use motion blur during fast camera rotation and disabling it with slower or no rotation, based on a curve. It's easy to implement and it could bridge polarized opinions. It's close to eye movement compensated motion blur, which is the perfect implementation because it blurs things that move in your eyes, rather than on screen only. I use backlight strobing with a high vertical total as well, together with perfect frame synchronization (v-sync & fps=hz=fps limit), so it looks even more like 1000 hz. I hope there will be sample and hold correction based on eye movement in the future. It uses an eye tracking device to update the position of each frame on screen as fast as the monitor is capable of. This minimizes sample and hold blur, more specifically the shifting of lower fps frames in your eyes when looking at moving objects (because your eyes don't stop moving 100 times per second to capture each frame sharply). If all of this sounds complicated and confusing, it is. Motion clarity is not simple to achieve, but it pays off in the end. The blurbusters website and the r/motionclarity subreddit are great recources on the topic.
@sphynx_owner8224
@sphynx_owner8224 12 күн бұрын
This is also an idea i had. And one that is unintentionally present in my implementation, as the larger step size multiplier dictates the size of velocity in pixels that is required to be picked up by the dilation. I need to fix that, but i would still implement it as its own feature. A screen enthusiast like what i assume you are would probably not need this in all fairness, as 1000 hz is basically real life 🤣. Other techniques that were suggested and are on the agenda are center fade of the blur, to keep the center of the screen generally sharp, and all these solutions can coexist.
@normaalewoon6740
@normaalewoon6740 12 күн бұрын
@@sphynx_owner8224 I just use a blueprint to calculate the camera rotation speed, make a threshold curve out of it and set the motion blur intensity with that. Another solution could be to do this per pixel on the GPU, to better discriminate still pixels from moving ones. Also, I do need the best motion blur that is available. I'm not rendering 1000 fps, just 100. Motion blur is one of the things that make it look like 1000 fps, but glitches are well visible at 100 fps and break the illusion.
@Chubercik
@Chubercik 14 күн бұрын
This is crazy good 🔥
@gaia35
@gaia35 14 күн бұрын
it's good that you took your time to do proper research.
@UncoveredTruths
@UncoveredTruths 15 күн бұрын
looks good, research in this direction is a good idea as most sota approaches are still very unappealing
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
I understand the distain that people have from motion blur effects, and its why I took such a stand on common practices in state of the art motion blur effects and avoided them such as centered blur. I hope and aim for my method and final product to stand out in its tolerability.
@iodinex64
@iodinex64 16 күн бұрын
Fascinating stuff, excellent work!
@sphynx_owner8224
@sphynx_owner8224 16 күн бұрын
Thank you very much!
@Gasimo
@Gasimo 14 күн бұрын
Nice approach!
@suricrasia
@suricrasia 13 күн бұрын
excellent work!
@Vaasref
@Vaasref 4 күн бұрын
A zoomed in slow motion side by side with like 30, 60, 90 and 120fps would be great to judge of the quality of the effect with the same settings as well as the optimized number of passes for each. An other thing to look at is how it handles inconsistent framerate and frametime spikes, does it feel jarring then ? Does it play well with animation that are at a much lower frequency as the framerate, maybe the added smoothness of the frames with movement makes the frame in between. How does it handle jittery objects (like Bethesda physics) ? Having some control over the strength and distribution blur could be very interesting. Instead of only being a blur it could be used to create more of a smear effect, dilating the object more than distributing its light. If it looks good it could add a lot of artistic potential to Godot games that can't compete in the photorealism with other game engines.
@CPSPD
@CPSPD 14 күн бұрын
OMFG you explained what I’ve always wanted to know: why does unreal engine 4’s (especially) motion blur look so stupid by default. Extending the silhouette past the object’s position is like 90% of its weirdness to me.
@asparagii2953
@asparagii2953 15 күн бұрын
This is really nice! You should clean the paper up a bit and put it on the arxiv! The approach is very interesting, you might get some traction there :)
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you! I wish I knew how 😅
@asparagii2953
@asparagii2953 14 күн бұрын
@@sphynx_owner8224 The first part is to register! Sadly, you might need endorsement if you don't have an institutional affiliation (just write "independent researcher"), but it's worth trying :)
@messiah4776
@messiah4776 13 күн бұрын
looks awesome, most high school graduates couldn't put this shit together, well done friend
@woodyfentress
@woodyfentress 14 күн бұрын
Nice work congrats
@addmix
@addmix 2 күн бұрын
Seeing the greattl things you have achieved has renewed my inspiration. I too was a hughschool dropout, now trying my hardest to use godot ro the best of my abilities.
@sphynx_owner8224
@sphynx_owner8224 2 күн бұрын
I have visited your channel now, and I'm very impressed, subscribed!
@Super.Whimsy
@Super.Whimsy 14 күн бұрын
Beautiful! 🎉
@Rudxain
@Rudxain 12 күн бұрын
My ("naive") approach would've been: 1. Render the scene twice: using the main frame-buffer and an off-screen frame-buffer. 2. Let the offscreen FB have a quarter of the resolution (16x less pixels). 3. Less pixels = more FPS. Now we have more info about motion than the player. 4. Average consecutive frames in the offscreen buffer, only up-sampling them for each main-buffer-frame. 5. Average the upsampled frames with the main frames, applying weights according to the velocity buffer: hi-speed = higher weight. This reduces the undesired blur caused by up-sampling a low-res frame
@sphynx_owner8224
@sphynx_owner8224 12 күн бұрын
This is an interesting approach!
@Rudxain
@Rudxain 10 күн бұрын
@@sphynx_owner8224 Thanks! but it'll probably have abysmal performance, lol
@Jayensee
@Jayensee 14 күн бұрын
Great video!
@NoSoyMako
@NoSoyMako 13 күн бұрын
GODOT IS GETTING MOTION BLUR BEFORE GTA 6
@quentinwach
@quentinwach 12 күн бұрын
"How does this have so few views?" I thought and realized that the video is only a few days old. Well, I hope you get some recognition for this!
@sphynx_owner8224
@sphynx_owner8224 12 күн бұрын
This is by far my best performing video, and I am very satisfied. Thank you!
@harelshakedgolan4726
@harelshakedgolan4726 16 күн бұрын
great explanation, amazing work!!! keep it up
@florianschmoldt8659
@florianschmoldt8659 14 күн бұрын
I've heard so many weird arguments of gamers why they hate motion blur. My favorite "That's not how eyes work". Ignoring that motion blur doesn't try to simulate eyes but a moving object on a static screen between two frames. And that movement is happening, no matter if it's toonish, abstract or realism. I wonder how those people explain motion blur in videos and why objects are still blurry, no matter how hard they "track it with their eyes". The only real reasons to turn a quality motion blur off, are competitive fast shooter or games trying to fake a stop motion look. I think motion blur has gathered a bad reputation from PS2, up until a couple of years ago with low quality implementations, smearing it over multiple frames. Todays motion blurs are near perfect and your version looks great. I wouldn't even offer the option to turn it off :D
@nebky
@nebky 14 күн бұрын
Because that's not how eyes work. If you're running 24fps - the frame rate of cinema, then yes, you need motion blur to not make it look rough, in cinema this is naturally achieved by the 1/48 shutter. 60fps content - i.e documentaries typically have a 1/125 shutter speed and thus far less blur, if any. Videogames ought to be run at 60fps + and don't simulate either documentary content or Cinema. They simulate live movement, which has no motion blur. Now a touch to smooth out the in-betweens at 60fps is down to taste, but it's absolutely not necessary and at higher frame rates is completely pointless.
@florianschmoldt8659
@florianschmoldt8659 14 күн бұрын
I you watch "live movement" live on a screen, you'll get motion blur. As I said, "Everything that is happening between two frames. So of course, with higher fps, you'll get less drastic movement which needs less blur. And I won't disagree, that a couple of games overdid the effect. Looks especially bad if it stretches over multiple frames, resulting in a long blurry streak, even if the motion indicates that the blur should be curved. That wouldn't be the quality I'd advocate for. But motion blur itself is still important. I've seen streamers disabling motion blur. Just because chat said so. But they enable sharpening, play in 4K and then complain that their eyes hurt. Probably because of all the fast paced, crisp detail the game throws at them.
@nebky
@nebky 13 күн бұрын
@@florianschmoldt8659 The blur isn't introduced between frames though, it's on the frame. My point is that on 60+ FPS blurring isn't necessary because the frame transitions are for most people nearly imperceptible or very easy to get used to. In regards to it not being how eyes work - blur on objects is one thing and fine, particularly when used for stylistic effect (e.g cars going fast). But blur on camera movement is where people have issues, when you pan your eyes across a scene in reality you don't do it smoothly, you skip between clear, static points. Motion blur on camera movement makes this impossible and itself causes eyestrain and motion sickness for some.
@florianschmoldt8659
@florianschmoldt8659 13 күн бұрын
@@nebky What I was trying to say is that motion blur fakes the movement happening between frames. I'm mixed on camera motion blur. On one side, I don't see why I would have any other expectation how cameras work in games than real cameras. If I want my UE5 character to see, I give him a camera object and not "eyes" for a reason. The problem I see with camera motion blur is a technical one. If I spin my character 360, I'd expect heavy motion blur. But subtle movement can already introduce a long blur because the motion vector, based on a single frame reads as quick movement. That's indeed hard on the eyes. A good solution would probably be to scale the amount of blur based on distance and time.
@nebky
@nebky 13 күн бұрын
@@florianschmoldt8659 yeah I can agree with that, at speeds where the eye isn't going to be able to track an object you probably want some blur to ease the rush of information. But typically if I'm moving the camera, first person or not, I want to be able to clearly focus on an object and follow it. Like I see an enemy, I move the camera to focus on them, my eyes continually stay on that point throughout the movement but during this the enemy becomes blurred. What's the point in that? It's unnatural (to how eyes work) and artificially reduces clarity. The difference is that in cinema/TV the blur of the camera movement is used intentionally or at least considered aesthetically. But in a game the movement of the camera is almost always functional. This is exactly why documentaries are filmed most often with static-ish shots at a higher frame rate or even slow motion giving it essentially 0 motion blur. The camera movement is functional and intends to keep the subject on screen, clear and crisp.
@capitaoglobin
@capitaoglobin 13 күн бұрын
Nice video! I really wish it showed the performance impact compared to other motion blur techniques.
@kerrvfx
@kerrvfx 3 күн бұрын
lovely stuff
@nebuchadnezzar916
@nebuchadnezzar916 14 күн бұрын
Beautiful presentation. I hope you do make it to GDC and do a talk!
@cube2fox
@cube2fox 14 күн бұрын
Cool research. In case you were having issues with access, many papers are accessible via (cough) sci-hub.
@toxiccan175
@toxiccan175 11 күн бұрын
It would be awesome if this was polished and optimized, then integrated into mainline. Very cool!
@sphynx_owner8224
@sphynx_owner8224 11 күн бұрын
Agreed. I've been working hard on making this a reality and I hope it would be.
@chaquator
@chaquator 14 күн бұрын
great work
@BenedictLazaro-p2m
@BenedictLazaro-p2m 2 күн бұрын
Didn't watch the full video but Impressive
@--waffle-
@--waffle- 13 күн бұрын
excellent video
@aweidenhammer
@aweidenhammer 14 күн бұрын
Nicely done. I would ask for a full screen result video clip though. It’s a bit hard to tell if there are artifacts on the 1/4 screen.
@sphynx_owner8224
@sphynx_owner8224 14 күн бұрын
thank you. There is a full screen demo video I uploaded on my channel just before this one, but if you want you can do one better and try out the demo I have linked for yourself!
@pottuvoi2
@pottuvoi2 14 күн бұрын
Lovely work. If there is need for ground truth implementation for comparisons, I would suggest old good accumulation buffer. Render n images during the time shutter is open and average result. Can be used for AA and DoF as well. (As seen in Gran Turismo camera mode.)
@RandomProduct
@RandomProduct 14 күн бұрын
Great video! Really impressive stuff, even more so considering your background (or lack thereof?) Also, call me old, but I always turn motion blur off, because video games just look sharper and nicer without it, like they used to lmao
@aperturescience7297
@aperturescience7297 15 күн бұрын
here before viral ps: You should be proud of yourself, outstanding video, I understood most of it and im kinda slow 💀 so big ups to you and your channel 😁
@sphynx_owner8224
@sphynx_owner8224 15 күн бұрын
Thank you! I'm glad you enjoyed it.
@garlic-os
@garlic-os 14 күн бұрын
Hallellujah! Motion blur that doesn't look ugly! You've done it!
@drelurean-kg9ej
@drelurean-kg9ej 10 күн бұрын
Amazing!!!
@plyczkowski
@plyczkowski 14 күн бұрын
Great work! People only notice motion blur when it's crappy and deduce 'all motion blur bad'. When it's good the they just deduce that the game looks good
@iFukuyama
@iFukuyama 14 күн бұрын
Looks really nice, but I wish you had spent a bit of time comparing it to fast existing techniques in terms of performance. At least in the paper version. Brilliant work never the less, and thank you for releasing it under such a permissive license.
@ginqus
@ginqus 14 күн бұрын
FREE GODOT ADDON LETS GOOOOOOOOOOOOO THANK YOU
What is the Smallest Possible .EXE?
17:57
Inkbox
Рет қаралды 300 М.
THEY made a RAINBOW M&M 🤩😳 LeoNata family #shorts
00:49
LeoNata Family
Рет қаралды 43 МЛН
Smart Sigma Kid #funny #sigma #comedy
00:26
CRAZY GREAPA
Рет қаралды 8 МЛН
A simple procedural animation technique
8:31
argonaut
Рет қаралды 195 М.
When Optimisations Work, But for the Wrong Reasons
22:19
SimonDev
Рет қаралды 898 М.
Voxel Planets: 1:1 Scale with Level-of-Detail
0:35
Lemonzy
Рет қаралды 8 М.
5 DEVS Make a GAME without COMMUNICATING! (Bug edition)
14:24
Blackthornprod
Рет қаралды 171 М.
Adobe: A Disgusting, Criminal Company
10:21
Bull Technology
Рет қаралды 185 М.
Oh... I mean... Hmmmmmmm...
8:27
Phoenix SC
Рет қаралды 672 М.
I Optimised My Game Engine Up To 12000 FPS
11:58
Vercidium
Рет қаралды 597 М.
What Happened To Google Search?
14:05
Enrico Tartarotti
Рет қаралды 3,1 МЛН
I animated this in 18 days... in Blender
32:46
tinynocky
Рет қаралды 4,1 МЛН
Приятного аппетита 🤣
0:15
Dragon Нургелды 🐉
Рет қаралды 8 МЛН
Никогда не убивай это существо! 😱
0:28
😱ВСЕМ БЫ ТАКИЕ СТАЛЬНЫЕ НЕРВЫ
0:18
MEXANIK_CHANNEL
Рет қаралды 7 МЛН