CPUParticles use process material #6661
QbieShay
started this conversation in
Engine Core
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Describe the project you are working on
Professional VFX with Godot
Describe the problem or limitation you are having in your project
It's been a long running issue for me that using custom particle process materials means losing access to CPUParticles.
In a professional setting, you almost never are fine with the possibility of losing entirely effects that run on lower end devices. Creating compatibility code is long and ineffective, so I end up compromising on what I want to do (or make long proposals about features i need) because not using particle process is simply not an option in my current line of work.
Furthermore, every time I add a feature to particles I have to go through 3 separate classes with 2 different languages (shaders and cpp) to implement the same feature and document it 3 times. It's a significant cost in maintainance that hinders my ability to add features to particles.
Also, if this was implemented, we could have a lot of addons offering their own solutions for particle process materials. It would make the particle side of the engine actually extensible.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
I let the details on how to do this to the techies that understand the render pipeline - but ideally I think i should be able to assign any particle shader to a CPUParticle and it should work.
Maybe it can be converted to GDScript, or we can have an interpreter of the shader language that builds a program, I'm not sure, but I think i should be able to do it once and run it wherever. Niagara in Unreal supports this, I'm not sure how, but they have "scratchpad" which is the equivalent of making visual shaders for particle process, and it can be run both on CPU or GPU.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
I don't know. I am not a rendering engineer so I don't want to tell rendering engineers what to do. I prefer saying what I need.
From the user side, CPUParticles and GPUParticles would use the same interface of assigning a process material.
If this enhancement will not be used often, can it be worked around with a few lines of script?
No
Is there a reason why this should be core and not an add-on in the asset library?
It changes a class of the engine.
Beta Was this translation helpful? Give feedback.
All reactions