-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add bevy_anti_aliasing #18323
Add bevy_anti_aliasing #18323
Conversation
That's a very sensible split. I would prefer this even with no impact on compilation. |
Yeah, I've wanted this split for a long time for various reasons, but compile time started to be a big enough issue that it kinda forced me to do it. |
Why move RCAS to the AA crate too? I don't dislike it, but I'm not sure I like it either. Also DLSS will added here shortly too, I suppose. |
The main reason is that it depends on the FXAA node to be added first and since after this change that node only gets added in the new crate which is after the core_pipeline crate. This means it needs to live there for now. I'm also looking at making a bevy_post_processing crate where this could be moved to, but it kinda make sense to keep it with AA considering it's the main reason to use it. An alternative solution would be to have a generic AntiAliasingNode that is just a label defined in core_pipeline and depend on that instead of the fxaa node directly. |
Don't think that's a good idea, unless we split it up between AA and TAA marker nodes. Lots of post processing effects need to go before/after TAA/DLSS/FSR/etc. |
how many post processing methods does bevy offer today? if it is just RCAS, then having it by itself now would be too much IMO i would go as far as having each individual algorithm behind a feature flag ( |
bloom, motion blur, depth of field, chromatic aberration, auto exposure. RCAS is kinda post processing too, but it's heavily tied to AA. There's also tonemapping but it's used in core pipelines so it's easier to keep it there and it's kinda a core part of pbr. The goal isn't to reduce the binary size, it's to group things together that go together and also try to parallelize compilation a bit more. We could feature flag each technique for people that really want to lean out their app, but most app should offer different AA techniques and let users decide what they prefer. |
Tonemapping I want to combine with our UpscaleNode into a new ResolveRenderTargetNode fyi, just haven't gotten around to it yet. |
In reference to my previous comment: #16721 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like a reasonable split, tested the anti_aliasing
example and it works
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm on board for this! I'm also fine with RCAS being in here for now. Maybe not its perfect forever home, but I don't think it is (currently) a high-traffic enough feature that we need to worry too much about breaking people (especially given that path changes are easy fixes).
Objective
Solution
Testing
Showcase
before:

after:

Notice that now bevy_core_pipeline is 1s shorter and bevy_anti_aliasing now compiles in parallel with bevy_pbr.
Migration Guide
When using anti aliasing features, you now need to import them from
bevy::anti_aliasing
instead ofbevy::core_pipeline