BradLarson / GPUImage3

GPUImage 3 is a BSD-licensed Swift framework for GPU-accelerated video and image processing using Metal.
BSD 3-Clause "New" or "Revised" License
2.67k stars 330 forks source link

Contributing / Timelines #4

Open rorz opened 5 years ago

rorz commented 5 years ago

Hi there,

Firstly, thanks to both @BradLarson and @RedQueenCoder for the valiant effort to out-do OpenGL's deprecation with a Metal-oriented GPUImage framework! I know I speak for the rest of the community in expressing how excited I am to see how this progresses...

I just wanted to continue-on a little bit from here (moving the conversation into this repo now that it's active), and ask a couple of things regarding contributing and timelines:

  1. What is the current scope for contributions? There is clearly a lot of functionality to come before GPUImage3's goal of becoming a 'drop-in' replacement is realised. Selfishly, I'm most dependent on PictureInput before I can fully play-around with the framework — once that's in place I'd like to contribute Metal shaders if that's something you are both looking for.
  2. Relatedly to the above: Do you have a rough estimate on timelines for the various components? And if contributions to these (if wanted) would help speed this up? I don't want to come off as pushy/ungrateful, so no worries if it's all up in the air. I'm more than happy to continue with GPUImage2 for now :)

Thanks again, and I look forward to seeing this unravel!

BradLarson commented 5 years ago

We really appreciate the interest from everyone in the project. Community contributions have added huge chunks of functionality to GPUImage over the years, and I'm always grateful for what people have committed. I feel bad that I've let many pull requests linger for a while due to lack of time.

For this version of GPUImage, @RedQueenCoder and I are using this as much as a learning exercise and experiment as functional project. We'd like to explore how a project like this could be internally rearchitected to support Metal's different conceptual structure and the advantages that brings. We have planned out the basic design elements, but we'll probably keep restructuring things as we go along.

I'm currently working on fundamental architecture, and @RedQueenCoder is going to be doing the bulk of the OpenGL (ES) -> Metal porting. She's trying to document the procedure for this, and provide long-needed documentation on what many of the shaders actually do. Our timeframe right now is to try to get close to feature parity with GPUImage2 in roughly a month, at which point I'd say it would be safe to start contributing additions and fixes.

I just committed the initial PictureInputs for Mac and iOS, and they appear to be working, as well as basic blend support. A lot else needs to be working at an architectural level, though.

We wanted to do the initial build-up publicly, because as I mentioned above @RedQueenCoder is going to document the process and we wanted the code and commit history to be available for people to learn from. Interest has been stronger than we anticipated, and I know people want to start using this in production as soon as they can, but this is very much experimental at this point.

rorz commented 5 years ago

Thank you for taking the time to send a comprehensive response.

Our timeframe right now is to try to get close to feature parity with GPUImage2 in roughly a month, at which point I'd say it would be safe to start contributing additions and fixes.

Sounds great: will hold-off on PRs for now :) Will post issues if they seem to be useful curve-balls (again, do let me know if these are premature since you're still building so much).

I look forward to playing with PictureInput, and also to all the documentation / rich history in the repo!