godotengine / godotengine/godot

On a GPUParticles2D, when using Compatibility renderer, "reverse lifetime" draw order and non-local coords don't play nice.

Open
#95,042 0 comments 0 reactions 0 assignees View on GitHub
bug topic:2d topic:particles topic:rendering
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

### Tested versions

Tested in:
v4.2.2.stable.official [15073afe3]
v4.3.rc2.official [3978628c6]

### System information

Godot v4.3.rc2 - Manjaro Linux #1 SMP PREEMPT_DYNAMIC Mon Jul 15 21:39:34 UTC 2024 - X11 - GLES3 (Compatibility) - NVIDIA GeForce GTX 1070 Ti (nvidia; 550.100) - Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz (8 Threads)

### Issue description

Particles belonging to a GPUParticles2D node with draw_order set to "reverse lifetime", and local_coords set to false, don't properly stay in place when the node is moved around. This happens only in the Compatibility renderer.

https://github.com/user-attachments/assets/5fa5bbb0-f09b-45ef-bfa3-c9f458cdb682

### Steps to reproduce

- Using the Compatibility renderer, make a GPUParticles2D node with a basic particle material and these settings:
![image](https://github.com/user-attachments/assets/b0c44933-37f3-4a7c-9e8f-4d12b4881cf1)
- Move it around, either in the editor or in-game.
(or open the MRP)

### Minimal reproduction project (MRP)

[MRP reverse lifetime bug.zip](https://github.com/user-attachments/files/16462721/MRP.reverse.lifetime.bug.zip)

Contributor guide

Open the contributing guide

Research direction

Start by running the attached minimal reproduction project with the Compatibility renderer and inspect GPUParticles2D behavior using reverse lifetime, non-local coordinates, and node movement. Compare the result with other renderers or draw orders to isolate the Compatibility-specific path. Done means particles remain in place as the node moves without breaking the reported settings.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics, game-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.