Skip to content
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

🎥 Migrate To Bevy's Renderer ( + MacOS Support 🍎 ) #41

Closed
5 tasks done
zicklag opened this issue Jun 18, 2021 · 2 comments
Closed
5 tasks done

🎥 Migrate To Bevy's Renderer ( + MacOS Support 🍎 ) #41

zicklag opened this issue Jun 18, 2021 · 2 comments
Labels
enhancement New feature or request
Milestone

Comments

@zicklag
Copy link
Member

zicklag commented Jun 18, 2021

After some investigation, we think we are going to try switching to Bevy's renderer, instead of using our own. Here's the pros and cons:

Pros:

  • Better support for MacOS: while we could very likely get our current renderer to work on MacOS, it might be with deprecated technology ( aka. OpenGL ) or a workaround technology such as MetalAngle which would be less optimal
  • More work offloaded onto Bevy: we have to maintain less technology ourselves because Bevy is taking care of a larger portion of the work
  • ( maybe ) Higher performance ( maybe also lower performance until bevy has batching, but that will come )
  • We depart less from the typical Bevy way of doing things and probably allow for integration between Bevy Retro and non Bevy Retro projects ( we are currently fully in-compatible with any normal Bevy rendered projects ).

Cons:

  • We have to change our current renderer: just some work, but probably not too bad ( optimistically ~2 weeks, but maybe a month. We'll know more after we get into it ).
  • We lose support for iOS web browsers: being that we are getting better MacOS support, and we can eventually make a full-powered iOS app instead, this is not a huge deal
  • Won't run on old desktops without Vulkan support without a little extra work: This is not a big deal, though because it would probably take not more than 4 days of work to get that functionality back by porting bevy_webgl2 to run on desktop ( Desktop GL Support Through Glow mrk-its/bevy_webgl2#45 ) The work-in-progress WGPU on master has support for OpenGL ( and WebGL2 incomming ) and we have been actively helping with the effort to fix some outstanding bugs.

Bevy's renderer is currently in the middle of an overhaul ( bevyengine/bevy#2351 ) so now is not the best time to do the actual port. Once Bevy work is finished, though, I think this is a good thing to do.

Tasks

  • Get initial OpenGL support working with Bevy ( not all the examples work with the new pipelined renderer )
  • Migrate Bevy Retrograde's pixel-perfect camera to use Bevy's renderer
  • 🚧 Get WebGL2 support working in WGPU for the WGPU examples
  • Fix anything necessary in WGPU to get the new renderer working on OpenGL. For now Bevy rendering bugs on OpenGL that don't effect our 2D rendering is out of scope.
  • Get our renderer and Bevy working on on WebGL2. For now Bevy rendering bugs on WebGL2 that don't effect our 2D rendering is out of scope.
@zicklag zicklag pinned this issue Jul 12, 2021
@zicklag zicklag added the enhancement New feature or request label Jul 15, 2021
@zicklag
Copy link
Member Author

zicklag commented Jul 25, 2021

WGPU on master has support for OpenGL and we are currently helping with WebGL support. If we get this working with Bevy's renderer that means that we can target Vulkan, Metal, DX12, OpenGL, and WebGL, all without 3rd party plugins for Bevy!

Still work to do and lots to test out, but we're making near daily progress on web support and fixing some bugs we ran into while testing OpenGL ( with lots of great help from the WGPU folks! ):

@zicklag
Copy link
Member Author

zicklag commented Jun 23, 2022

Finished in dev. New release should be out soon!

@zicklag zicklag closed this as completed Jun 23, 2022
@zicklag zicklag unpinned this issue Jun 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant