fishfolk / jumpy

Tactical 2D shooter in fishy pixels style. Made with Rust-lang 🦀 and Bevy 🪶
https://fishfolk.org/games/jumpy/
Other
1.67k stars 123 forks source link

Rendering artifacts on edge of rope netting sprite #1014

Closed MaxCWhitehead closed 2 weeks ago

MaxCWhitehead commented 3 months ago

Description

image

I have been seeing some thin black lines to the left of the rope netting. Might be related to texture sampling settings, or maybe with atlas?

EDIT: It seems bevy defaults to nearest sampling which seems right. It seems to flicker in and out as camera moves, wonder if we have mip maps and if that would help.

To Reproduce

No response

Expected Behavior

No response

Additional Context

No response

Log Messages

No response

MaxCWhitehead commented 3 months ago

Seems like this can be fixed by disabling MSAA.

MaxCWhitehead commented 3 months ago

I think there are some other artifacts with pixels stretching/shrinking as the camera moves. Most notable at the tail end of smoothed movement when camera is settling down.

On bottom right of map there is a thick vertical border on the blue/greenish tile: image

If I move camera slightly to right, it shrinks again/shifts to other tiles: image

I wonder if should snap camera position to pixel grid - or if issue with screen resolution / pixel count / zooming camera.

zicklag commented 3 months ago

I think the shrink/shift thing is basically unavoidable with nearest-neighbor filtering unless we make sure we constrain zooms to a specific increment of physical pixels.

There are some related thoughts here: https://github.com/katharostech/bevy_retrograde/issues/51

MaxCWhitehead commented 3 months ago

Right that makes sense regarding zoom levels, probably not something we want to change.

MaxCWhitehead commented 3 months ago

Re-enabling msaa as I think the shimmering seems worse. The artifact here does rarely show up without AA, so changing that doesn't seem like the fix anyway.

zicklag commented 3 months ago

There's a possibility this could be related to texture atlas bleeding like https://github.com/forbjok/bevy_simple_tilemap/issues/4#issuecomment-1167685856, but I'm not sure.

It's a problem that's plagued me and even Bevy: https://github.com/bevyengine/bevy/issues/1949

I did figure out how to fix it, but this might be a different issue.

It kind of lines up, though, because the bleeding issue tended to depend a lot of drivers/random nuances.

MaxCWhitehead commented 3 months ago

That definitely seems like a potential cause - glad you have done some digging on this in the past. Maybe we take a dive on this after we make rendering changes in bones, might be easier to troubleshoot and experiment with the shaders / render pipeline settings a bit less deep in engine.