0
\$\begingroup\$

enter image description hereSo I made some software using unity for my FRC team. All this application is, is just a User Interface with labels, input fields, buttons, etc... When I choose the quality to be on Ultra, I will get about 50% GPU usage but when on very low, I got 90%, close to 100%. How can I optimize my software to use much less of the GPU(Preferably less than 15%)? I am measuring with the Task Manager Performance Menu

\$\endgroup\$
  • 3
    \$\begingroup\$ Unfortunately I don't think anyone can answer this unless you provide more details about your project. How do you measure GPU activity? Can you check which part of your project occupies that much GPU ? \$\endgroup\$ – TomTsagk Mar 5 at 17:47
  • \$\begingroup\$ What does GPU percentage even mean. If you're doing nothing but UI rendering wouldn't that consume 90% of all GPU activity because that's all that's going on? Things that matter are what FPS you're pushing, how many microseconds and milliseconds are being consumed per frame, things like that. I agree with @TomTsagk that we need deeper detail on what you're measuring and how dense of a UI are you trying to handle, etc... \$\endgroup\$ – Patrick Hughes Mar 5 at 18:29
  • \$\begingroup\$ @TomTsagk I edited the post with more information \$\endgroup\$ – user8980526 Mar 5 at 22:19
  • \$\begingroup\$ @PatrickHughes I edited the post with more information \$\endgroup\$ – user8980526 Mar 5 at 22:19
  • \$\begingroup\$ Higher settings by default enable VSync while low have it disabled. So maybe on low the app pushes the frames to the limit of the GPU because there is nothing else to bottleneck the app. \$\endgroup\$ – Nikaas Mar 6 at 11:12
1
\$\begingroup\$

Unity is pretty much unfit by design if you just want a simple UI without any animated content. This isn't just about VSync, it's about Unity - by design - keeping rendering in a loop regardless of any state changes.

If you want to conserve resources properly use an event driven UI framework for such tasks. A dedicated UI framework will only render if something has changed, and if nothing is to be animated, that's actually just on user input or other explicit events.

I suppose you could just "Pause" Unity if you wanted, but that would just stop even more than you intended.

\$\endgroup\$
  • \$\begingroup\$ The real problem is not that Unity is doing exactly what it's meant to do, it's that OP is misunderstanding how to use profilers and what Task Manager is showing in the first place. \$\endgroup\$ – Patrick Hughes Mar 7 at 19:03
  • 1
    \$\begingroup\$ @PatrickHughes Task Manager is effectively showing command queue utilization / active time. While that doesn't correlate to actual shader core utilization or load depended peak power consumption, it already does correlate to time slice where none of the GPU resources associated with the corresponding command queue are power gated. So aiming to minimize it is a reasonable optimization goal for an UI. \$\endgroup\$ – Ext3h Mar 8 at 6:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.