Skip to content

Compatibility renderer outperforms Forward+ renderer (GPUParticles3D) #97903

Description

@TheYellowArchitect

Tested versions

  • Reproducible in 4.4 dev3, dev2 (and probably previous versions)

System information

Godot v4.4.dev3 - Artix Linux #1 SMP PREEMPT_DYNAMIC Wed, 02 Oct 2024 15:03:06 +0000 on Tty - X11 display driver, Multi-window, 1 monitor - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1050 Ti (nvidia; 560.35.03) - AMD Ryzen 5 2600 Six-Core Processor (12 threads)

Issue description

I was making a smoke grenade, so I went to use GPUParticles3D. I basically made quad meshes (backs are culled) with smoke textures, and with only 80 particles on-screen, the FPS tanks - a single GPUParticles3D!
So if a few smoke grenades are thrown, the game becomes unplayable.

Yet, this does not happen at the compatibility renderer. I made a MRP and benchmarked them with 3 trials each.

Single Smoke Grenade GPUParticles3D:

Renderer Forward+ Compatibility
Lowest FPS 63 201
Lowest FPS 73 206
Lowest FPS 74 218

2 Smoke Grenades GPUParticles3D:

Renderer Forward+ Compatibility
Lowest FPS 40 151
Lowest FPS 52 176
Lowest FPS 57 170

smoke-grenade-54-fps-forward-renderer

I think this issue is important as it addresses the "godot sucks at 3D, its performance is abysmal." complaint from users.

Steps to reproduce

Make any GPUParticles3D with quad mesh and make a practical effect, so it uses alpha/transparency.

Minimal reproduction project (MRP)

smoke-grenade-room.zip

Use arrow keys to zoom up (and WS if you want to move front/back)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions