Help with instancing positions and size

Hello, I have a question about instancing and efficiency. Basically, I am rendering 800 circles per line(17 lines) on a (9600x1080 window), but I noticed I probably need to change the size of the dots the further away they are as the width of each line is slightly shorter the further away it is, but the dots just get clustered. I am wondering if it would be better to go about trying to use the GPU to give all the position and size information for each dot, over using the sop and copy to create the shape I want and give the points and positions for each dot. Or what would be the most efficient way to send size data for each individual dots, as it would be a lot of chops or a big table data right now?

Depends where your animation happens (if any).
For performance, SOPs with many points are best to keep mostly static, but SOPs are often the easiest to create the basic shape. Animation for larger numbers of instances is best done in CHOPs or TOPs, where you let the GPU (Geo COMP) take care of all final translation/rotation/scaling based on the instance data you feed it, as that is basically free.

The great thing is you can combine multiple operator families and instance from all of them simultaneously.

Attached example which instances positions from a Grid SOP, and gets the size for each instance from a Pattern CHOP, which is outputting 17 different sizes, grouped per row of 800 samples - adjust desired range in the Math CHOP (currently front row has size 0.5, last row has size 0.1).
This CHOP channel is also easy to animate - as 17*800 samples is very doable in CHOPs.

As an example I also added a TOP where the Geo now instances the color from - but you could also use a TOP as instance data for size/position, etc.
Hope this helps!

instance_from_multiple_OP_families.tox (1.3 KB)