Using SOP text in 3d space. Performance slow in perform mode at 8k

I am having trouble getting high performance on an 8k screen (8 large screens x1920x1080, each side by side in portrait mode). I made a “mind map” style menu system which uses geometry transforms of SOPs (using instance transforms from an incoming CHOP node.) I have the whole thing working perfectly, with nice subtle motion from the trigger CHOPs. TouchDesigner makes this so easy. However, after realizing the short cut of using TEXT SOPs and circle SOPs, (all transformed at in the Geometry containers) I’m still having tremendous slow downs at perform time. Almost 9 fps with a 3090. I am running at 8k, but this should not be a real problem. I’ve used the performance monitor and getting not much there. “misc Presenting Windows” at 61 milliseconds. I have put tristrips on all geo except the text SOPs. They fill in when you use them. Am I going to have to replace the text with “billboards” with a text TOP as a texture? Would that even help?

Imgur

The added complexity is that the “moons” and their text expands from each of the “planet” shapes, then the “satellites” and their text expand to come out from the back of each shape. It’s an easy thing to rig up in SOPs, even adding nice noise CHOPs to give them some life while they “hover”… If I can’t use SOPs to do performance ceilings, I’m not sure how else to approach the problem.

Hard to judge from your description alone where the heavy load occurs. You can use the Probe COMP from palette to see which nodes are taking up the most cpu time.
But cooking SOPs can be heavy as they are CPU only. Have you tried the Geo Text COMP to replace your Text SOPs? It renders text directly on the GPU.
There are some nice examples how to use it in Help->Operator Snippets. (called “text beside 3d geo points”)

1 Like

Thanks. I forgot about the Text Comp. That might just do the trick. I used the probe tool, and that was amazing. I love that tool.

I’m now running into GPU memory limits when I turn it up to 8k. I really need one of the logos to go to 8k resolution. The other parts can maybe be only 4k, at higher antialiasing perhaps. Is there a way to avoid the 8k memory barrier?
I’m using a lot of render TOPs and layering objects being transformed (using the GPU when possible). I’m using instance transforms on Geometry containers using CHOP data feeding into the instance using a translate OP. I’m using triangle strips on circle geo SOPs, using Geo Text containers.
All of those things really helped, but the client wants this to span 8 monitors and using Mosaic for touch control. I can’t use both A5000 GPUs they have installed because the data runs across all monitors. I can’t separate them into different parts. I have run into a wall on this one. Has anyone out there run into this limit?

Hey @ctedin,

just wondering - you say you are using a lot of Render TOPs, are you able to use a single Render TOP and many Render Pass TOPs instead? What is your GPU Memory usage currently?

cheers
Markus

Thanks for the reply. We are running on two A5000 cards, and when we go up to 8k, we hit the 24 GB limit. We’re just under that. I have tried the render pass, but with so many sets of objects nested inside each other, each moving in different directions, I wasn’t sure how to add render comps together to get the final results. We end up with hundreds of satellites moving on their own in the scene.

Not sure if fully possible in your setup, but it could be a good optimization goal to strive for just a single Render TOP, which points to all the Geometry COMPs in all your scenes. This is good for performance, but will also reduce your overall GPU memory usage, as an 8k TOP consumes about 130MB GPU memory, so with 7 TOPs less in your network (*), you can already save almost a GB of GPU memory!

(*) apart from nodes like Switch / Select / In / Out TOPs which don’t consume GPU memory

Oh man, if that’s possible and works, you would be a lifesaver. I’ll give it a try.

tip: hold middle mouse button on any TOP to see how much GPU memory it uses.

Yeah, that’s really useful. I use the probe tool a lot too. I was wondering how you can tell a render node to render things inside containers, and sometimes containers within containers. Is there a straightforward way to have a render at the top of the hierarchy that renders everything inside these containers.
Thanks again for the tips.

for instance you can use pattern matching in the render TOP’s parameters for geo / light / cam, like this:

scene*/*
to make it render all Geo COMPs found in scene1, scene2, scene3 etc

you can also add multiple items and use pattern matching in each, like this

scene*/* scene4/deeper/*
will do as above but now also render all Geo COMPs found in scene4/deeper

example attached
wildcards_in_render_top_v2.tox (20.4 KB)

Thanks. I need to figure this out. It is promising for sure.

Man, that was the ticket. Thank you so much, nettoyeur! It really increased performance just in time for a presentation tomorrow.

1 Like

Oh, actually Snaut, you suggested the single render TOP first. Thanks to you too!