godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.93k stars 21.15k forks source link

Particles2D are broken in GL|ES 2 compatibility mode #20524

Closed henriquelalves closed 5 years ago

henriquelalves commented 6 years ago

Godot version: Godot v3 (master).

OS/device including version:

Issue description: Particles2D node is broken on GL|ES2 compatibility mode; no texture is shown, and it's not possible to set it to emit something, whether it has a texture and a particle material or not. No error is shown on console.

Steps to reproduce: Just create a Particle2D node anywhere when in GL|ES2 mode, and check whether you can set it to emit any kind of particle.

eon-s commented 6 years ago

GPU particles are supposed to not work on GL|ES2, but there are no CPU particles node for 2D (yet?).

karroffel commented 6 years ago

Yeah, as @eon-s said, the Particles(2D) nodes are using shaders on the GPU and feedback transform, which are not available on GLES2, so they can't be implemented. For 3D there is CPUParticles, but the 2D counterpart is not implemented yet.

henriquelalves commented 6 years ago

Didn't know about this! Thanks for answering.

But then, shouldn't Particles2D (and all other nodes that don't work with GL|ES2) be disabled when changing the GL|ES compatibility mode? The way it is right now is misleading; it should at least show the yellow warning sign at the Node tree to indicate it's not compatible with GL|ES2 mode.

(Keeping the issue open to discussion, maybe changing this to a UX kind of problem)

volzhs commented 6 years ago

@karroffel said...

but the 2D counterpart is not implemented yet.

so, it will be added eventually. no need to add a warning for this.

henriquelalves commented 6 years ago

@volzhs okay, no problem than! I would keep this issue open for tracking, but mantainers may close it if they see fit.

eon-s commented 6 years ago

I do not think it should be disabled or use an annoying icon on the tree, but a warning message when running the project could be useful.

Corruptinator commented 6 years ago

I'd like to point out that the same goes for 3D particles when the graphics mode is set to GLES2. turns out that the same problem occurs for 3D particles, especially when it does GPU processing. Figured I point it out cause I tried to get the 3D particles in GLES2 but to my absolute stun, the emission button does not work unless in GLES3. So unless 3D particles work in GLES2, its a bit of a bummer that both 2D and 3D particles absolutely does not work. Just an FYI before I nearly posted an issue that 3D particles doesn't work in GLES2.

eon-s commented 6 years ago

@Corruptinator is because are practically the same, you can convert GPU to CPU particles if you want to use on GLES2 and are using particles material.

reduz commented 6 years ago

No, they will never work in OpenGL ES 2.0 because they lack sufficient API. I think what we should add is some sort of warning if this mode is selected, likewise with many unsupported properties

eon-s commented 6 years ago

@reduz maybe you can use a tracker to get a list of incompatible parts of gles2 and gles3 to design a warning system when changing renderer (output on debug will be enough, but needs to be descriptive for the user).

DleanJeans commented 6 years ago

CPUParticles2D doesn't work with GLES2 either 😕 (3.1 alpha 1 and master)

Zireael07 commented 6 years ago

I believe GLES2 doesn't have a concept of CPU particles at all.

kiidmale commented 6 years ago

As @karroffel said above, “CPU” particles are for gles2 support. (like particle systems in godot 2.x which used gles2 backend) My project is stucked on this very issue(#21839) and I am looking forward to hearing some good news on the issue soon...

jimmyjonezz commented 5 years ago

CPUParticles2D doesn't work with GLES2 either confused (3.1 alpha 2 and master), but if i used Godot 2.1, i have a working Particles2D (mark "Emitting") and visible particles... How?