Open TokisanGames opened 2 years ago
I will update the other points more substantially later, but the Label3D issue comes from it being a transparent object. It doesn't write to depth so it gets treated as if it's at the depth of whatever is behind it. It will have trouble with all screen-space effects utilizing the depth buffer (SSR, SSAO, etc.). The solution is to set the depth draw mode to opaque prepass so it's depth can be written into the depth buffer.
Regarding jitter, I remember it having a very subtle effect a few months ago. It may have broken with refactoring changes though. Either way, I think that setting should be removed to only perform DoF jitter when TAA is enabled (where jittering effects over time is the most beneficial).
https://github.com/godotengine/godot/pull/57210 has a WIP branch linked in a comment to improve depth of field performance/quality, but its author no longer has time to work on it.
Regarding jitter, I remember it having a very subtle effect a few months ago. It may have broken with refactoring changes though.
It still works, but it's effect is extremely slight, and is masked by using higher quality settings, using a larger blur size, or rendering at a higher resolution.
EDIT: Also, It doesn't look like it has any effect in Circle mode.
I'm working on a fix for an edge artifact that happens at uneven resolutions, which is somewhat related to the https://github.com/godotengine/godot/issues/65116#blur-amount issue described here (I suspect the half_size
rendering is the cause for this too). So I'll try to tackle both issues.
I think creating individual issues and checklist linking them in this tracker issue might be easier to follow.
Godot version
9c890ef2f
System information
Windows 11/64, RTX 3070, Vulkan
Issue description
Tracker for depth of field blur issues.
I can pull any of these out into separate issues if desired. Otherwise, the detail is below.
Steps to reproduce
Minimal reproduction project
test_dof_blur.zip
Jitter does nothing
rendering/camera/depth_of_field/depth_of_field_use_jitter
doesn't seem to do anything. I see no effect on any bokeh or quality level.Label3D
Label3D is incorrectly affected by blur
Blur Artifacts
Different blur algorithms amounts have different artifacts on movement. This is tested while adjusting focus_distance between near and far and back. This procedure is done all the time when a real camera is autofocusing, or when an First Assistant Camera pulls focus on a camera when filmmaking (a person manually focusing the camera). Every film racks focus. Many video games also use this technique.
Hexagon
Low
Tested w/ f/4, 100 ISO, 250 shutter
This seems to be the reference setting and the best all around, however it has issues.
https://user-images.githubusercontent.com/632766/186451072-b323c0af-e4b7-455b-be89-9fa2e6aaca1e.mp4
Very Low
Tested w/ f/4, 100 ISO, 250 shutter
A bit of pixel movement on focus.
It appears that the blur amount is stepped. As the MRP racks between 3 and 6, watch the background. It doesn't change smoothly. It looks more like it changes in 3 increments as if recording with a stop motion camera. Compare with Low, which changes smoothly. Not present on Low or High.
Medium
Tested with f/2, 25 ISO, 250 shutter to get about the same amount of blur.
A bit of pixel movement on focus.
This level also changes the blur in steps, like Very Low. Not present on Low or High.
High
Tested with f/2, 25 ISO, 250 shutter to get about the same amount of blur. Otherwise, no artifacts.
Box
Pretty much the same as Hexagon.
Circle
Tested with f/2, 25 ISO, 250 shutter.
In its current state, this is not usable for a racking focus camera due to artifacts. Performance takes a big hit as well. The blur looks amazing, so it's too bad.
Very low
https://user-images.githubusercontent.com/632766/186460824-8e273f1b-0a9e-41b7-8750-2c299c79d47e.mp4
Low
Medium
High