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

Roadmap #279

Open
21 of 22 tasks
vanruesc opened this issue Mar 16, 2021 · 41 comments
Open
21 of 22 tasks

Roadmap #279

vanruesc opened this issue Mar 16, 2021 · 41 comments
Labels
discussion An open discussion or announcement
Milestone

Comments

@vanruesc
Copy link
Member

vanruesc commented Mar 16, 2021

The purpose of this ticket is to track progress towards the next major release and to let people know where things are headed.

Before v7 (non-breaking)

  • Modularize convolution operators Implement different blur operators as passes
  • Implement bilateral blur (depth-based)
  • Implement Gaussian blur (for completeness)
  • Implement mipmap blur (for BloomEffect)
  • Move effect analysis from EffectPass to Effect class
  • Use internal timer, let user provide a custom timer

Into v7 (breaking)

See #419 for details.

  • Implement BufferManager and GeometryPass
  • Create IO interface for passes and effects
  • Remove EffectAttributes
  • Reduce amount of predefined uniforms in EffectMaterial
  • Refactor EffectComposer into RenderPipeline for pass grouping and swapping
  • Use render hooks to run passes, promote use of renderer.render()
  • Drop support for older versions of three
  • Remove deprecated classes, fields and methods
  • Remove code that was added for backwards compatibility
  • Move away from getter/setter properties Reconsider usage of accessor properties #349
  • Convert to TypeScript, add more examples to doc comments
  • Remove CJS bundles
  • Add support for logarithmicDepthBuffer
  • Implement GBuffer clearing
  • Implement GBuffer background rendering
  • Port Effects to the new system: Task Overview: v7 #600
@vanruesc vanruesc added this to the v7 milestone Mar 16, 2021
@vanruesc vanruesc added the discussion An open discussion or announcement label Mar 16, 2021
@vinkovsky
Copy link

Hi @vanruesc ! Thank you for the great library. Will the ssr effect be added in the near future?

@vanruesc
Copy link
Member Author

vanruesc commented Mar 17, 2021

The ReflectionEffect (alias SSREffect) will be added at a later stage because it relies on a geometry buffer (normals, metalness, depth, diffuse, etc.). The plan is to implement a proper buffer system first to pave the way for effects like SSR. Switching to MRT will be a non-breaking change as soon as it lands in three.

SSR will be added soon after v7, but I can't say when that will be.

@vanruesc vanruesc pinned this issue Mar 19, 2021
@vanruesc vanruesc removed the discussion An open discussion or announcement label Apr 7, 2021
@andregoncalvesdev
Copy link

Hello @vanruesc! Great library! Is rgbshift effect doable with the current release or it will available on a future release ?

@vanruesc
Copy link
Member Author

@andregoncalvesdev RGB shift is already available via the ChromaticAberrationEffect.

@talentlessguy
Copy link
Member

talentlessguy commented Jun 5, 2021

Regarding TS migration, to make it easier I'd recommend to set allowJs and strict: false in the tsconfig file so JS code won't be filled with type errors :)

@ghost
Copy link

ghost commented Jul 20, 2021

Awesome! We just implemented all your effects into our platform. We are wondering if there is an ETA for this roadmap? We are interested in the SSR effect more specifically.

@marcofugaro
Copy link
Member

Awesome! We just implemented all your effects into our platform. We are wondering if there is an ETA for this roadmap? We are interested in the SSR effect more specifically.

Dude... it's an open-source project, you don't ask for an ETA.

@vanruesc
Copy link
Member Author

This issue has been on hold for a while now so I understand why people would like to know when things will start moving again. Since this is a hobby project with no financial backing, there is no ETA. I'd really like to continue working on this project right away, but work and other real-life issues take priority. I'm currently aiming for October/November to finally tackle this roadmap.

@marcofugaro I'm sure that @sayduck-daniel didn't mean to be pushy with his comment and I'm happy that people are interested in this project ❤️

@looeee
Copy link

looeee commented Sep 1, 2021

@vanruesc have you considered adding a sponsors page or some other way for people to help fund this project?

@vanruesc
Copy link
Member Author

vanruesc commented Sep 1, 2021

@looeee Yes, I'd like to add a sponsors page at some point, but I haven't really looked into that yet.

@looeee
Copy link

looeee commented Sep 2, 2021

It's pretty easy to set up - will take an hour or two total.
But I guess if you want more than a couple of sponsors you'd have to start doing the social media circus.

@lyonsno
Copy link

lyonsno commented Nov 3, 2021

@vanruesc I think what you're doing with this project is really cool! I have a bit of spare time and would love to contribute, but it sounds like you may be working on some major revisions in the background. Are there areas where I could contribute now or do you think it makes more sense to wait until some of the big things you're working on are merged in?

@vanruesc
Copy link
Member Author

vanruesc commented Nov 4, 2021

@lyonsno Thanks! Unless there's something you'd like to change, fix or add right now, I'd recommend waiting until the big things are out of the way because most of the planned changes affect the entire code base. One of the goals of these changes is to make it easier for people to contribute by making the concepts clearer and the code easier to read.

I'm currently aiming for October/November to finally tackle this roadmap.

It's now November and I'm still preoccupied with other projects so I'll have to adjust this to December, but I'll try to get some time in on the weekends.

@drcmda
Copy link
Member

drcmda commented Feb 23, 2022

please don't get it the wrong way, it's not my place to complain and i'm so thankful for what you're doing!

it's about the setter/getter thing, is it really critical? we would have to rewrite react-pp from scratch. that library gave effects into the hands of a large crowd of people that normally would struggle (think beginners, designers, frontend-devs etc). maybe 50-60% of the pp userbase comes from that lib. the maintenance burden, i honestly don't know how we can manage. i'm thinking this could be the end of it.

as for the technical side:

we won't be able to set and, more importantly, spread props over passes, we'll have to know all props beforehand and translate them to functions. functions in general cannot be expressed declaratively, they are not serializable either, and that is a quite a downside.

<bloomPass foo={1} bar={2} {...otherProps} />

is there any way we could be closer when it comes to drastic breaking changes, and give back and help overall? and again, i completely respect your every decision, you know best where to go with it.

@vanruesc
Copy link
Member Author

@drcmda Thanks for sharing your concerns and the valuable feedback!

It was not my intention to make it harder for people to use this library. The problem I tried to address was that effects didn't only have configurable properties, but also methods for more complex settings. The goal was to normalize this landscape. If the mapping of properties to method calls creates too much work, we can revisit the usage of accessor properties. However, some settings are more complex, i.e. not single-value, so some mapping work will be inevitable.

Let's keep track of this in a separate ticket: #349

is there any way we could be closer when it comes to drastic breaking changes, and give back and help overall?

The recent changes should not have introduced any breaking changes. If something broke, please file a bug report!

@lyonsno
Copy link

lyonsno commented Mar 8, 2022

@lyonsno Thanks! Unless there's something you'd like to change, fix or add right now, I'd recommend waiting until the big things are out of the way because most of the planned changes affect the entire code base. One of the goals of these changes is to make it easier for people to contribute by making the concepts clearer and the code easier to read.

I'm currently aiming for October/November to finally tackle this roadmap.

It's now November and I'm still preoccupied with other projects so I'll have to adjust this to December, but I'll try to get some time in on the weekends.

Are the changes you were referring to implemented yet? I certainly don't mean to pressure you, I just can't tell on my own because I'm not sure what you were planning to change!

@vanruesc
Copy link
Member Author

vanruesc commented Mar 9, 2022

@lyonsno Unfortunately, it's not done yet. I'm still wrestling with the architectural redesign but it's slowly coming along. The time I can spend working on postprocessing is limited and I had to prioritize other issues for the recent 6.25.0 release which slowed things down a bit.

The blocking issues are basically most of the bullet points under "Into v7 (breaking)". The main thing that keeps this from moving forward is to actually figure out a concrete API concept. I'm currently doing just that by drawing and scrapping diagrams.

@vanruesc
Copy link
Member Author

vanruesc commented Mar 9, 2022

I'm also in the process of reorganizing my working schedule to get more stuff done and I've created a Patreon page for financial contributions. However, I'm committed to maintain this project regardless of funds.

@drcmda
Copy link
Member

drcmda commented Mar 9, 2022

additionally, github sponsors and opencollective have been quite comfortable, you can add them to the project sponsor settings just like the patreon. these two allow monthly sponsorship and one-time donations. just putting it out there but https://github.com/pmndrs would also always be open for you.

@vanruesc
Copy link
Member Author

vanruesc commented Mar 9, 2022

I went with Patreon because they handle taxes, unlike GitHub Sponsors. And opencollective seemed more appropriate for teams.

just putting it out there but https://github.com/pmndrs would also always be open for you.

I'd be happy to join 👍

@realsammyt
Copy link

just putting it out there but https://github.com/pmndrs would also always be open for you.

I'd be happy to join 👍

This is the way (I hope and will support monetarily). Our small team fits into the group of designers/front-end devs that @drcmda mentioned. We've been waiting with baited breath for the colorspace dust to settle while we integrate various combos of vanilla/vanruesc/react-pp to find a sweet spot between previous -> current -> future projects. For months, I've dreamed of how a more united collaboration between pmndrs and vanruesc might result in some sort of drei+pp type of situation. It could simplify the complexity of all this wizardry, while allowing those with lesser technical skills of you giants, but with big dreams, to push forward without the fear that the years of cobbling all these stones together might end in a dead end street (that leads back to babylon).

We appreciate so much of the nitty gritty that has been getting resolved over the past while, and are excited for the potential of tighter integration between your collective powers.

@drcmda
Copy link
Member

drcmda commented Mar 11, 2022

i would love to talk @vanruesc , i think it's super important that projects like this one get more attention and funding. how/where can i reach you? your twitter doesn't have dm switched on, no emails anywhere. 😄

@vanruesc
Copy link
Member Author

E-mail is here. DMs should also be on now.

@beginnerJq
Copy link

I am currently using SSAOEffect. Is there any patch that temporarily supports logarithmicDepthBuffer. Thank you.🥹

@vanruesc
Copy link
Member Author

@beginnerJq Unfortunately, I don't think there's an easy way to support log depth (#445 (comment)).

@lviggiani
Copy link

Hi, is there any plan to support WebGPURenderer?

@braebo
Copy link

braebo commented Jun 22, 2023

Just want to mention that I'd be happy to provide some heavy lifting on the typescript front whenever the dust settles enough to establish some style / structure plans for v7. I've spent a good amount of time rewriting most of the passes and effects to TS for another project this year so I think it'd be fun to make it happen for the new version!

@vanruesc
Copy link
Member Author

Hi, is there any plan to support WebGPURenderer?

@lviggiani WebGPU is not widely available yet, so it's not the focus right now. WebGL 1 has only recently been deprecated in three and v7 will rely mostly on WebGL 2 with limited WebGL 1 support. When WebGPU becomes more prevalent, there will be another transition from WebGL 2 to WebGPU.

@fractalhq Thanks! You can follow the most recent development progress by checking the v7 branch. I still need to consolidate the base API and finish implementing the buffer management. After that I want to split the remaining work into smaller tickets so that anyone who'd like to help can pick them up.

@Russo-creation
Copy link

Hi, @vanruesc

In terms of new feature "alpha hash" https://threejs.org/examples/?q=alph#webgl_materials_alphahash that was implemented along with Three.js r.154 which for improve visual "quality" requires antyaliasing methods like SSAA or TAA are there any plans to support it?

Current alternative to implement those effect in react-three-fiber is tu use three-stdlib and extend SSAA or TAA but as I posted the issue here pmndrs/drei#1601 it is not working properly (it's changing colors of scene) as many people use this great lib in their projects it would be helpful to use it through it.

@vanruesc
Copy link
Member Author

vanruesc commented Sep 8, 2023

@Russo-creation Interesting, I didn't know there was support for alpha hash in three. TAA is planned to be added after v7 is done.

@alexpineda
Copy link

Any beginner friendly issues I can help with?

@vanruesc
Copy link
Member Author

@alexpineda I've been working on v7 lately and it's beginning to take shape despite lots of road bumbs. The first alpha version is on track to be released in the next few weeks. After that, I'll prepare tickets for the remaining tasks that can be picked up by anyone who'd like to help. I'll post here when that's ready.

@braebo
Copy link

braebo commented Oct 22, 2023

Sorry if this has been discussed, but I think v7 should have an un-compiled build. My bundler takes care of things like tree shaking and minification, but having the entire build in a single js file interferes with this. Module separation is lost, and working with the code is significantly more difficult. All modern projects use their own bundler, so I don't believe the source should be mangled when I install it!

@vanruesc
Copy link
Member Author

@fractalhq Providing a production-ready library bundle is very common and in this case necessary because shaders need to be integrated before shipping. Custom shader imports require plugins and build confgurations that the end user should not have to worry about.

Most bundlers are able to process library bundles without issues. If dead code elimination isn't working correctly, there's usually something else going wrong.

It's true though that some parts are minified in the shipped bundle, namely worker scripts and shader code. I can see how this might be inconvenient to work with, but this code isn't really supposed to be debugged in user code and if there's a bug, it should be reported so that it can be fixed in the scope of the library project.

Feel free to open a new issue if something's not working as expected with v7 once it's ready.

@yfunk
Copy link

yfunk commented Feb 10, 2024

@vanruesc I noticed 7.0.0-alpha-2 was just published under the latest tag about 20 minutes ago.

I assume this was an accident because now when you run npm i postprocessing the alpha version is installed instead of the latest stable v6 release.

@vanruesc
Copy link
Member Author

@yfunk Thanks for pointing that out! I wrongly assumed that versions with postfixes wouldn't get the latest tag. Since I couldn't find a way to assign that tag to a previous version, I published a new one and fixed the publish script for the alpha releases.

@yfunk
Copy link

yfunk commented Feb 10, 2024

Since I couldn't find a way to assign that tag to a previous version, I published a new one

IIRC you should be able to assign the latest tag (or any other) to a different version using npm dist-tag.

npm dist-tag add [email protected] latest

@vanruesc
Copy link
Member Author

Tried that, but it gave me 400 Bad Request. Removing the latest tag from the alpha release also didn't work, but adding/removing other tags worked just fine.

@vanruesc
Copy link
Member Author

I'll prepare tickets for the remaining tasks that can be picked up by anyone who'd like to help. I'll post here when that's ready.

It's ready now: #600

@vanruesc vanruesc added the discussion An open discussion or announcement label Feb 17, 2024
@valentinradu
Copy link

Hello, thanks for the great library. I have a question about the roadmap to 7.0. It seems like that MaskPass is missing, but nothing is mentioned in the roadmap per se. Is this intended?

@vanruesc
Copy link
Member Author

@valentinradu #652 (comment)

Thanks for pointing this out. I've added MaskPass to the v7 task list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion An open discussion or announcement
Projects
None yet
Development

No branches or pull requests