- 179
- 97 438
Sphynx_Owner
เข้าร่วมเมื่อ 30 เม.ย. 2012
Drift Hover Motion Blur
This turned out way more addictive than I expected. Just a little game to showcase the blur at its finest
download and play:
drive.google.com/uc?export=download&id=1grbjLxJNqcXRDy4FETm8jvPNk90GNcw6
version with edge artifacts fixed:
drive.google.com/uc?export=download&id=1a1TVX1u1B1NOYSm685osuEebVke6SF_l
Controls:
wasd-move
t - toggle blur
z - toggle debug view
x - freeze frame
c - scroll debug pages
up/down arrow - scroll framerates
right/left arrow - scroll pass counts
download and play:
drive.google.com/uc?export=download&id=1grbjLxJNqcXRDy4FETm8jvPNk90GNcw6
version with edge artifacts fixed:
drive.google.com/uc?export=download&id=1a1TVX1u1B1NOYSm685osuEebVke6SF_l
Controls:
wasd-move
t - toggle blur
z - toggle debug view
x - freeze frame
c - scroll debug pages
up/down arrow - scroll framerates
right/left arrow - scroll pass counts
มุมมอง: 492
วีดีโอ
To Blur Spinning Things
มุมมอง 3.9K14 วันที่ผ่านมา
Hope you guys enjoyed this one! Demo repository: github.com/sphynx-owner/JFA_driven_motion_blur_demo?tab=readme-ov-file Addon repository: github.com/sphynx-owner/JFA_driven_motion_blur_addon Godot 4.2 addon: github.com/sphynx-owner/Sphynx-radial-motion_blur-toolkit-for-Godot-4.2/tree/master Previous video: th-cam.com/video/m_KvYlYF3sA/w-d-xo.html Sources: th-cam.com/video/vh8XUyrojFM/w-d-xo.htm...
How I Solved Real Time Motion Blur
มุมมอง 42K28 วันที่ผ่านมา
Demo: github.com/sphynx-owner/JFA_driven_motion_blur_demo/tree/master Addon: github.com/sphynx-owner/JFA_driven_motion_blur_addon Paper I wrote on the matter: drive.google.com/uc?export=download&id=1AIhUjVaJCwRsbfv1POLk-7qbw-p10-_N Sources used in this video: docs.unity3d.com/2017.4/Documentation/Manual/PostProcessing-MotionBlur.html john-chapman-graphics.blogspot.com/2013/01/per-object-motion-...
Godot Motion Blur (New Environment, Great Progress)
มุมมอง 1.5Kหลายเดือนก่อน
The low framerate is because of the high detail environment, I get it even by default, and if anything its a great stress test for this motion blur effect. The large pauses are me taking interesting snapshots on purpose. As you can see, I have created a high detail, high fidelity, high quality, robust, and believable motion blur effect that works under various stress tests. Important to note th...
Godot Motion Blur Daily Progress (And A LOT of it!!)
มุมมอง 234หลายเดือนก่อน
Everything is really taking shape! I cleaned thing sup, mitigated ghosting substantially, and introduced noise to the blurring for professional looking transitions. I am really happy with how it looks. You may say it looks ugly at low framerate, but that's correct. The idea is that I get is as best as I can at those framerates, and then when you play at normal ones the experience would be perfe...
Godot Motion Blur Demo Great Progress!
มุมมอง 146หลายเดือนก่อน
There's still quite a bit of ghosting, and I will work on that next. Most of the work was to get to this point where objects blend onto the background acceptably. The effect is 90% there, with the last 10% being the hardest, of course.
Motion Blur In Godot (Huge Progress!)
มุมมอง 230หลายเดือนก่อน
A substantial jump in quality since last video. I am really happy with it so far as I finally found a method I can stick to.
Godot Experimental Motion Blur
มุมมอง 115หลายเดือนก่อน
The base version came with the request to improve on it. My version aims to improve upon it. In this first iteration, my focus was to improve the objects blending onto the background. At sensible speeds this effect is achieved quite well, but the limitations are plentiful.
UI Dissolve/Burn Effect (GODOT 4 Tutorial)
มุมมอง 143หลายเดือนก่อน
example project: drive.google.com/uc?export=download&id=1B_p8FkHLORX5hY6drhj8Lp-DoFtE7D24 thank you for watching
Huge Update! (Custom Cursor, Clean UI, New Game Mode, and more...)
มุมมอง 1792 หลายเดือนก่อน
link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
Big Update on The Rhythm Trainer (custom song folder, song creation...)
มุมมอง 1503 หลายเดือนก่อน
link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
YOU CAN NOW MAKE YOUR OWN CHARTS
มุมมอง 1433 หลายเดือนก่อน
link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
2 NEW Modes in my Rhythm Trainer
มุมมอง 1483 หลายเดือนก่อน
link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
I Added OSU! to the Rhythm Trainer
มุมมอง 8K3 หลายเดือนก่อน
well, an OSU! proxy to be more accurate. join the discord for updates and suggestions link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
Update On Rhythm Trainer
มุมมอง 753 หลายเดือนก่อน
link to game: shpynx.itch.io/the-rhythm-challenge Discord: discord.gg/WKtZRMNmA4
Playing a Rhythm Benchmark until I get to 100 (Link below)
มุมมอง 4173 หลายเดือนก่อน
Playing a Rhythm Benchmark until I get to 100 (Link below)
Mobile-app style Puzzle game prototype
มุมมอง 483 หลายเดือนก่อน
Mobile-app style Puzzle game prototype
Dungeon Layout Generator (Square and Hexagonal tiles)
มุมมอง 843 หลายเดือนก่อน
Dungeon Layout Generator (Square and Hexagonal tiles)
Simple, Concise and Versatile STATE MACHINE in Godot 4 (Tutorial)
มุมมอง 774 หลายเดือนก่อน
Simple, Concise and Versatile STATE MACHINE in Godot 4 (Tutorial)
Godot Realistic Airplane Physics progress
มุมมอง 3226 หลายเดือนก่อน
Godot Realistic Airplane Physics progress
DIY Path Finding with real enemies first test
มุมมอง 736 หลายเดือนก่อน
DIY Path Finding with real enemies first test
Shockwave shader and Pathfinding algorithm
มุมมอง 756 หลายเดือนก่อน
Shockwave shader and Pathfinding algorithm
Multi-color SDF Drawing tool, with Asynchronous cleaning functionality
มุมมอง 386 หลายเดือนก่อน
Multi-color SDF Drawing tool, with Asynchronous cleaning functionality
If its possible it would be nice if motion blur can be detached from the scene. As in, motion blur applies to everything except: enemies if there are enemies, anything beyond ~5 or 10 meters away from the camera, see through patterns/transparent materials like dirty windows and chain fences and camera movement that isn't forward (whip pans don't have motion blur but moving forward does) Project CARS 3 applies motion blur to everything close to the camera except the car body. Interestingly enough, doing a whip pan in third person and going into photo mode mid pan lets you explore the world with motion blur which is really cool and you can adjust the "shutter speed" motion blur amount while viewing the 3D motion blur.
Congrats!
Yay! Good real-time motion blur to go with! I personally don't understand people who turn off MB always. in all games. I can only relate if the implementation is awful. UE's implementation of MB is also somewhat interesting point of discussion, because i think in the majority of projects that utilise it, it instantly gives itself away that it's UE game with it's "UE look". It is somehow flawed i guess. Because if it would've been done right it wouldn't be obvious immediately and always. Thanks for sharing the method that you've researched and developed! I personally have been "researching"(impostor syndrome isn't taking it easy on me lol) emulation of halation effect that is present on photographic film, when a bright area is contrasted against a dark area, there's some subtle reddish-orange light that is spilling over to dark area from bright spot(it's very different to bloom). Imo it's quite PBR, it takes in Linear Rec709 framebuffer, so it has a realistic representation of what's bright and what's not. There's basically no info on how to emulate it, aside from tutorials for davinci-premiere-photoshop which are 1.for 8bit sRGB videos or images 2.completely non energy conserved 3.Most of them are just thriving for the "similar look" with no physical ground beneath it. Or there's also some proprietary solutions like davinci built-in halation, or dehancer plugin, they still work afaik only with sRGB. And also paid. Grasping inspiration from movies and images shot on film took this project far. I was really hooked when you mentioned about center or end motion blur, because 2 years ago i was playing around with blender cycles motion blur and was wondering, what would be the most accurate in respect to real cameras motion blur. I felt like default "center on frame" option might be not it, and default shutter curve might also be a bit inaccurate to what's happening in real camera. I stayed at default center on frame option(which after watching that vid seems to be incorrect), with shutter curve changed to triangle, with no actual testing being done, just "what felt right". What are your opinion on what would be the right settings? Thanks!
That comment almost became a standalone book lol
That's awesome to see you have your own research you engage in. I have not worked in blender and video editing softwares enough to tell you.
this is so cool
Cool stuff. Please Create paid asset for Unity asset store and URP :) I will buy it :)
Looks fun.
try it! theres a download in the description
@@sphynx_owner8224 Oh nice. I'll try to check it out when I have some game time (currently in game *dev* mode)
Love to see the progress on this. Keep up the good work 👍🏽
amazing! congrats!
By how it looks it's comparable with KinoMotion
Awesome stuff bro!!
Motion blur is awful and should not exist in video games.
Cool but I’m still instantly turing that off in every game
oh, i had an idea, would this work with techniques like Asynchronous Reprojection/Timewarp AKA rendering screen space rotations between world space frames? theres an Async Repro demo that Linus Tech Tips did a showcase of, with an improved world space transformation approximation that has interesting behaviour, but even without that, accurately blurring world space as you move through it while being able to turn the camera at higher framerates would make it a lot more comfortable, if the motion blurring can be done efficiently enough
your explanation was good 👍. when the motion blur addon is coming ?
Its already out, the repository links are under that video. If you mean when it is coming with the engine by default i cannot guarantee anything but ideally it would be released with godot 4.4
@@sphynx_owner8224 being merged into the master branch would be amazing. If it was in the engine directly, would it be possible to reduce the edge artifacts with overscan?
@@addmix I'm not sure if the edge "artifacts" (its really just less blur there) are this bad to justify overscan. I'm going to try and see if I can sample backwards to handle that edge case before I go in that direction... In McGuire's case, his heuristics made for a very unappealing and standing out smear towards the edge of the screen regardless of the situation. Mine just has less data to feed those pixels so its more natural and the main problem is that it would scale with speed, meaning there's no defined boundary that I can cover and call a day. If I moved slower you would just not have as prevalent of a difference for example. I don't want to ruin it for ya, but you can see the same artifacts at the leading edge of the hover as well. Maybe this backwards sampling approach could be applied to try and solve this issue globally and not just at the screen edges. It would definitely add complexity but its worth trying.
@@addmix I have added a new version in the description with the edge artifacts allegedly fixed. Let me know if its looking alright.
The real question: Rigidbody or Characterbody?
rigidbody
I work with video animation and it baffles me that in after effects there isn't a plug-in that utilizes motion vectors in conjunction with a depth pass, so even the best current plugin gives wildly incorrect motion blur when there is object overlap. Would you be interested in trying to write a plugin for after effects that does exactly what you did? I bet it would be very popular!
I don't work with after effects, but if I understand correctly it generates motion blur without needing velocity and depth maps (especially since those are usually not available when working with ordinary footage), so I don't know how much of this translates.
@@sphynx_owner8224 oh I'm.talking about renders from 3d software like cinema 4d or Maya/ blender. It works using motion vector passes ( velocity maps) but it doesn't take into account the depth of the pixel. It is also perfectly possible to render a z pass ( depth ) from the 3d software, but it is not used at the moment by any motion blur plugins. In short, if someone wrote an after effects plugin that was able to use a motion vector pass AND a depth pass it could create more accurate motion blur in after effects.
@@sphynx_owner8224 have a look at reel smart motion blur, it is the best after effects plugin for motion blur at the moment but it suffers from the issues described above
@@sphynx_owner8224 oh it looks like my comment didn't post for some reason, thanks youtube! you ar epartly correct. the "native" motion blur effect doesn't use it. but a lot of compositors use "reel smart motion blur" which has an option to use motion vectors. this is at the moment the best way to composite the motion blur instead of rendering it in the Main CG pass. however at the moment the best plugin ( the one above) does not take into consideration the depth of the pixels, so the result can be full of artifacts when there is overlap of a moving object over a stationary, or vice-versa
@@sphynx_owner8224 and that is where you could come in! if you used the same logic and created a plugin in after effects that can take BOTH a Motion Vector pass AND a Depth pass, and produce accurate motion blur, it would be very popular!
Smooth.
Looks like there’s some artifacting around the edges of the screen especially at the bottom, is that caused by there not being enough information to fully calculate the blur?
yes. In McGuire's paper, "a reconstruction filter for plausible motion blur" (2012) their blending heuristics required a border around the edge of the screen to be cut off entirely.
I have solved the artifacts its in a newer version i added a link to in the description
trackmania vibes ;D
Loved to watch the video. These are some great experiments! I have never done motion blur in a shader, but only used velocity vectors in fluids. I wonder if it would work if you buffer 2 past frames and interpolate non-linearily between 3 frames, perhaps you couls get a curve this way?
The whole idea is that the blur interpolates between the current frame and the last. Accumulative approaches are not unheard of, but they are not part of the goal with this one.
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.
I have visited your channel now, and I'm very impressed, subscribed!
Didn't watch the full video but Impressive
Incredible! As an intermediate developer, I never thought about how to consistently make propellers/wheels blur
lovely stuff
very cool. Still turning it off.
Why would you try to simulate camera shutter in the first place? Simulate human sight instead.
To solve the lighting issue, would it be possible to separately perform the blur step on the normals buffer before lighting is computed, and also rotating the sampled normals? I don't know the Godot pipeline at all so I'm just thinking out loud.
maybe there is an approach that would yield a better result than the current one using what you are suggesting.
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.
holy shit.
4:55 the car front hood is ghosting in front of it. That might be a problem of the normal motion blur.
yep, that's an issue I have had for a while and I need to fix it.
Thank you!!
awsome explanation and tutorial fire video🔥🔥🔥
Once again, may I ask , will you be at GodotCon?
As interesting as it sounds, I don't know how possible it is for me.
@@sphynx_owner8224 Let's get in touch and see what's possible
@@Thomas_Lo No problem. You can find me in the Godot Effects and Shaders discord server discord.gg/MhfCkhV42T
8:24 Hmm, I wonder, since you know that the error would always accumulate outwards (due to the way sampling takes in to account linear velocity more than angular) maybe you can just nudge the result towards the center? I'm not sure but I think the error is linearly proportional to spin speed (or some other more/less simple proportion) and figuring out this proportion you could know how much you need to nudge the result towards rotation axis for it to be accurate. Although I might be completely wrong here...
That is a valid offer. I also had that in mind. You are suggesting I account for error when objects are rotating, and be able to not even need this dedicated radial motion blur mesh in the first place. the question is, how do you know where the center of rotation is in the first place, if all you do is work with a 2D image of velocity value splotches? how do you know that the next velocity is not on a different object entirely? Also, how would you handle cases where the rotation axis is not facing the camera, but viewed at an angle? or the object is not fully visible? or how do you even differentiate objects in the first place? You would have to infer a lot heuristically about the nature of the environment and objects in it to then try and extract rotation axis from it using nothing but the depth, normal, and per pixel velocity images. I don't think its impossible but as I see and from my experimentations it its very impractical for me to pursue at the moment, and I can imagine something like this would also render the practicality of the effect itself obsolete, as you now have to do a lot of extra processing just to account for a few rotating elements in your view. Also note that in 8:24 I'm showcasing an environment where the velocity values are tangent to the pixel's path, which is not how Godot's velocities work, and I talk about it in the video too.
@@sphynx_owner8224 I see, I guess you're right, maybe there's a way to calculate more accurate pixel path but it would probably be very hard if not impossible to do in screen space and the other way is to use CPU to get more info on rotation, then send it to GPU, but at that point your approach with helper meshes would be more efficient
Awesome work! Love it! Also the structure of the video - first outlining all the problems... it's a drama, the solution comes as a twist to the story when I thought all hope was lost. I do wish that the last step with enveloping mesh somehow gets to work behind the curtain with zero user setup. Good luck :)
Thank you!! That would have been nice. For what it is, I would consider it minimal work, as the mesh to make can stay rather simple. As said in the video, you could also use a simple cylinder (which you can generate on the spot) instead, at the cost of accuracy and cleanliness.
Ъ.
Does this method have a way to account for shutter angle? When filming a video, one of the most important rules is to maintain that the exposure time is half the frame time, also known as a 180 degree shutter angle rule. So rather than capturing motion and blurring it over the whole duration of the frame, you should only be capturing half. But that also assumes a fixed frame rate, so I don't know how it would work under variable refresh rates as you'd get in most games.
My motion blur provides you with frame independent motion blur. to make it actually like a camera, you would ideally limit the game's framerate, and then set the intensity to 0.5, which is equivalent to a 180 degree shutter.
First thing I do in every game is to disable motion blur. It's never implemented correctly.
In interactive applications, the motion blur is added as a post process effect, at which point its impossible to have it match the ground truth, or having it "correct". This is because you have to fake transparency where isn't. Other limitations mainly circle around performance. Motion blur implementations need to be added and used by developers tastefully, and by themselves can only vary so much in their quality.
Awesome work. Did you play Doom 2016/Eternal? That game has the best motion blur I ever encountered, the game feels like it's running smoother with it on.
I have not sadly. Hopefully my implementation would get anywhere close to that. I have felt something similar on my racing test environment at 60 fps. Its like night and day with and without.
interesting implementation. I wish it didn't cause the artifacting over a complex background, I personally find that quite distracting. It's definitely a hard problem to solve, made even harder for me because I usually work in sandbox games in which any post-processing needs to account for anything the player might build, and as such needs to deal with fast rotating things of which the size or rotation axis is not known and can not be pre-defined in engine.
Thank you for your feedback. I am not sure which of the (many) artifacts you refer to, and there is still a lot of room for polishing in my current implementation, so it may be something I will be able to fix.
@@sphynx_owner8224 I'm specifically talking about the issue where it has to infer the background behind the mesh from pixels around it, which, when the propeller spins over the godot logos, causes the white lines of the logo to be dragged out in the wrong direction. (perhaps this could be remedied by just not rendering the spinning mesh at all over a certain speed and only the blur?)
Remember that i am using the screen texture to genrate the blur around the mesh. If the mesh is not rendered in the first place it cannot be blurred.
This is one of those issues that are inherit to the nature of post process motion blur in general, so for what it is, its as good as it can get in that regard without needing extra work and making it more complicated.
I wish to be this good at something one day. Excellent work!
"Practice makes the master"
"motion blur is retrospective in nature" I'm not so sure about that 🤔
By retrospective I mean that its an average of the continuous visual state of the environment from the moment the "shutter" opened at some point in the past to the present moment when it closes and the footage is processed and displayed.
The thing I find most annoying about motion blur in games is that our eyes already have built-in motion blur! We're seeing a blur of a blur. Our visual cortex is designed to compensate for internal blur but does poorly with the various implementations of simulated blur; not least because we're seeing a *blur of a blur*. Ugh.
I want to see a stylized implementation. Can this be used to create real-time stylistic smears? I've seen UE add ons that add smears on a per character basis, but I'd like to see smears relative to the camera.
That's a good idea, I wonder how this can be executed. Maybe it would be possible to give developers the raw dilated velocity data and let them do the blurring themselves with whatever style they want.
I know some of these words.
Very interesting but why do you call dilation "dialation"
This while probably annoying in normal gameplay for reasons SirRanjid outlined, would work awesomely with photo-mode.
I don't care what anyone says. Motion blur looks like shit.
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.
I don't give a shit if you dropped out elementary school. DUDE YOU ARE TALENTED !!