Less CPU hungry VCV Rack alternatives?


(Patman / NYSTHI Manual) #102

Curious if fps limit is just not a target for v1.0 specifically, and if it could come in a potential v1.X update?

Obviously it’s not a high enough priority to block release (because it’s not a game-breaking feature/development milestone), but hopefully it’s high enough on the radar for a minor release?


(Andrew Belt) #103

The idea is that you might not need it.


(Patman / NYSTHI Manual) #104

here’s hoping :smiley:


(Crimsonsunrise) #105

A nice alternative could also be having a button to disable animations. I usually find that a good portion of my audio glitches have nothing to do with the modules, but because the graphics card and cpu have to work hard to display all those multiple lights blinking and sequencing at different times, colors, etc. In many cases, minimizing the window eliminates all audio glitches not caused by too much audio processing.


(Andrew Belt) #106

Common misconception: Animations are an illusion caused by quickly rendering a sequence of frames that are different in appearance, so they don’t really exist and thus “disabling” them doesn’t make sense. What can be done instead is to render frames slower or not at all (e.g. my minimizing the window).


(Crimsonsunrise) #107

Not sure why the semantics clarification was even necessary to begin with but, still goes with the thought of how much of the processing done by VCVRack to display graphics is affecting audio processing…Which is perhaps more important than displaying animations.


(Andrew Belt) #108

It’s not just semantics. There is no way to “disable animations”. There is no code that says “animate this plug LED”, so it can’t be turned off. What happens instead is that the window is redrawn many times per second, which may appear different based on the internal state of the program. If the state changes (e.g. the plug voltage is changed), the next frame will appear differently than the previous frame. This creates the animation illusion.

If you’re asking how Rack’s graphics thread can affect Rack’s engine thread, sometimes the operating system assigns two threads to the same core because another process (your browser, DAW, etc) is currently using the other one. Additionally, your CPU’s L3 cache is shared on all cores, so both threads share its bandwidth. There are many other reasons two threads might not be truly parallel.


(Skrylar) #109

Godot (game engine) ran in to a similar situation (they have a laptop mode for the editor.) What they do is

  • have a screen-wide dirty flag and if a control needs to update its external appearance, set the flag. Then if laptop mode is enabled the screen is only redrawn when the flag is set otherwise it’s always redrawn.
  • there’s a small spinner on the UI that increments with redraws, so you can watch when something is causing renders that shouldn’t be or not.

Although this flag would likely be flipped to maintain compatibility with old modules (assume a draw was dirty, unless the module asserts that its visual update is insignificant.)

Some things for people to think about.


(Andrew Belt) #110

Module panels and components are already cached in framebuffers.


(Crimsonsunrise) #111

I’m aware there’s no way to disable animations. That was a suggestion. If there’s no way to do it, okay. I’ll wait for whatever is implemented so whatever is necessary to create the illusion of animation doesn’t affect whatever is necessary to create the illusion of sound.


#112

I would be surprised if it happened in rack, but sometime if you are moving massive amounts of texture data to the GPU it can can affect the CPU? I think especially with onboard graphics where the GPU memory is really CPU memory. Have to confess this is based on some non-PC systems I’ve worked on on the past.


(Andrew Belt) #113

No textures are moved between the CPU and GPU in Rack whatsoever, except for Images, but few people use those. EDIT: And only when images are loaded from the disk.


#114

haha - I think I do that. But yes, I realize that being entirely vector based, this is won’t be a factor in VCV.