Comments (5)
FPS is not a linear measurement. For example, a drop of 1,000 FPS isn't the same thing at all if you drop from 1050 to 50 FPS (19 mspf difference) compared to dropping from 3050 to 2050 FPS (0.16 mspf difference).
This is why graphics programmers generally never refer to rendering measurements as FPS and always talk in frametime instead (milliseconds per frame, also known as "mspf"). This is a proper linear measurement.
Can you reproduce this issue with an inactive AnimationPlayer node (instead of AnimationTree)?
from godot.
What calinou is saying is if enabling AnimationTree drops the frame time from 30 milliseconds to 60 milliseconds it is a very different problem than dropping 30 millisecond to 31 millisecond.
Since you mentioned frame drops one possible interpretation is a 0.3 ms drop to a 0.5 ms drop which is hard to justify work so we need to check in milliseconds per frame units.
So I think we need some justification this drop is too slow for your game.
from godot.
What calinou is saying is if enabling AnimationTree drops the frame time from 30 milliseconds to 60 milliseconds it is a very different problem than dropping 30 millisecond to 31 millisecond.
While the FPS drop might be small here, it has the potential to be larger in a game that has a lot of animated characters, even if you disable animation processing when far away. That's the issue we should aim to resolve if possible 🙂
I ran some profiles with HotSpot using an optimized (optimize=speed lto=full
) editor build:
Top-down view with AnimationTree processing expanded
Flamegraph (full view)
Flamegraph zoomed on AnimationTree::_blend_pre_process()
Flamegraph zoomed on AnimationTree::_blend_apply_()
from godot.
Thanks for clarification, although this concept is still weird to me, I will learn more about it before making more assumptions.
If you mean setting this to false, yes I still can reproduce the FPS drop and the increase of mspf.
I can even remove the AnimationPlayer and I will have the same result. The problem is definitely the AnimationTree.
from godot.
I usually have around 1k FPS without any AnimationTree
My game has a few creatures in the screen, and its enought to notice that frame time is going up. I aim to publish it to mobile, so I was procupied that this could hit the performance on this low end graphic cards devices.
Just to notice thats how I've setup my AnimationTree using AnimationNodeBlendTree with a StateMachine
from godot.
Related Issues (20)
- Polyphonic Audio Stream doesn't stop in HTML export in 4.3 beta HOT 1
- Web closure compiler build fails after #94109 HOT 2
- Behavior of enum types is not properly documented HOT 2
- animation tree animation node error HOT 1
- Import glsl shaders in headless mode
- Moving and then unhiding a Node2D makes it flicker with physics interpolation enabled HOT 5
- BlendShapeTrack insertion is not working
- The tooltip doesn't close automatically on X11
- glTF importer does not check for invalid property name on blendshapes
- Android editor crash when interacting with some GUI elements HOT 23
- 2D editor viewport flashes on size change when using D3D12 renderer HOT 2
- Can't load C# scripts when exporting a build on macOS HOT 2
- GDScript function calls have unexpected overhead
- SubViewportContainer devouring click events HOT 3
- `--headless` doesn't have any effect HOT 6
- get_surface_override_material_count returns '1' even when its property is set to '0' HOT 2
- MeshInstance3D AABB doesn't return merged AABB dimensions, nor is it affected by any transformations HOT 4
- Parallax2D autoscroll does not use scroll_scale HOT 5
- Windows PC without Vulkan or OpenGL should default to Direct3D12 HOT 5
- [4.3 RC 1] AudioStreamPlayer does not work correctly during web export HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from godot.