godotengine / godot-benchmarks

Collection of benchmarks to test performance of different areas of Godot
MIT License
116 stars 27 forks source link

[TRACKER] Benchmarks to create #11

Open Calinou opened 1 year ago

Calinou commented 1 year ago

⚠️⚠️NOTE⚠️⚠️ This list is outdated, please refer to the following one instead:

https://github.com/godotengine/godot-benchmarks/issues/36

⚠️⚠️END OF NOTE⚠️⚠️

This is a list of benchmarks to add to the benchmark suite. See the contributing guide for instructions on adding new benchmarks.

I plan to tackle some of those benchmarks personally, so please comment on this issue if you plan on working on new benchmarks (to avoid working on the same benchmark at the same time).

Feel free to suggest new benchmark ideas as well :slightly_smiling_face: Remember that we'd like to keep the project fast to clone, so the repository size needs to remain low. This means we can't do things like adding large detailed 3D scenes with textures, as these usually require several GBs of storage.

2D Rendering

3D Rendering

Some of those benchmarks should have "exclude on Forward Mobile" and "exclude on Compatibility" properties so that they are skipped on unsupported renderers.

To compare the relative performance impact of each setting, these tests should render the same scene but with different settings:

Antialiasing

Global illumination

Post-processing

Core

GDScript

https://github.com/godotengine/godot/tree/master/modules/gdscript/tests can be helpful for inspiration.

Navigation

Physics

All tests should be done in 2D and 3D when possible. To only represent physics performance, no visual representation should be made unless a debug flag is passed (e.g. --debug-benchmarks).

Repeat with box, sphere, capsule, cylinder, simple convex (quickhull) and complex convex (VHACD):

GUI

Mach565 commented 1 year ago

I think I might have a go at the Sprite2D and Polygon2D benchmarks, just a quick question, though. Should I instance the sprites/polygons through code, or should they already be in the scene when the benchmark is run?

Calinou commented 1 year ago

Should I instance the sprites/polygons through code, or should they already be in the scene when the benchmark is run?

There will be a lot of sprites/polygons to add, so you should instance them through code like the 3D benchmarks are doing.

Mach565 commented 1 year ago

Alright, thanks. I'll start work on it now.

Mach565 commented 1 year ago

Sprite2D benchmarks should be ready to review, #18

Mach565 commented 1 year ago

Polygon2D benchmarks are ready, #19

tinybitofheaven commented 3 months ago

Could I give the DirectionalLight2D and the PointLight2D tasks a try? Additionally, to get around the 2D light limit, should I instantiate multiple background sprites as well as multiple sprites with occluders?

Otherwise, we could end up with lights not rendering. image

Alternatively, I could toggle lights on and off, but I'm not sure which method would be preferred.

Calinou commented 3 months ago

Could I give the DirectionalLight2D and the PointLight2D tasks a try?

Sure, feel free to open a pull request :slightly_smiling_face:

Additionally, to get around the 2D light limit, should I instantiate multiple background sprites as well as multiple sprites with occluders?

Yes, we need to make sure all lights show up.

tinybitofheaven commented 3 months ago

The PointLight2D and DirectionalLight2D benchmarks are ready for review! #60

leannelu commented 2 months ago

Could I try the GPUParticles2D and CPUParticles2D benchmarks? And are there any specific particle settings for those that I should be setting? Or a specific number of nodes/particles?

Calinou commented 2 months ago

Could I try the GPUParticles2D and CPUParticles2D benchmarks?

Sure, go ahead :slightly_smiling_face:

And are there any specific particle settings for those that I should be setting? Or a specific number of nodes/particles?

I'd try creating the particle setups mentioned (that is, one benchmark with lots of particle nodes that have few particles each, and one benchmark with few particle nodes that have lots of particles each). As for the mesh/material, we want to be testing simulation performance as opposed to rendering performance, so I recommend using a small billboarded QuadMesh (0.1 × 0.1 units) with a material that has its shading mode set to Unshaded.

leannelu commented 2 months ago

GPUParticles2D and CPUParticles2D benchmarks are ready to review! #62