Attenuate function of GL Points not Environmental context aware

usefuldesign.au's picture

Was going through my comps searching and came across this bug demo I made long ago, still a bug. Attenuate doesn't work on some GPUs but where it does, it's broke in the sense that the perspective based size adjustment is locked off and not aware of the viewing angle. Seeing's believing:

PreviewAttachmentSize
Attenuate.qtz18.78 KB

gtoledo3's picture
Re: Attenuate function of GL Points not Environmental ...

What's weird to me is that in your example the structure renderer seems to actually deliver different sizes at different z positions.

A GL Point should always stay the same size regardless of Z placement, and should also always face forward no matter what the rotation.

usefuldesign.au's picture
Re: Attenuate function of GL Points not Environmental ...

These GL Points are actually attenuating according to changes in 'Y' value also. You can see that in there start position before it spins. Just to be clear I added another row of single GL Points in the Structured renderer patch.

So the display is: Row 1: GL Point Structure

Row 2: Sphere in Structure Transform

Row 3: GL Point in Structure Transform

Space to att, 'S" to start them spinning.

Quote:
"A GL Point should always stay the same size regardless of Z placement, and should also always face forward no matter what the rotation."

Perhaps you're used to seeing them with a GPU that doesn't attenuate. There was discussion of this topic on tb's random walk thread, I seem to remember his laptop's GPU didn't execute attenuation at all. From what I remember attenuate is a GLSL function that Kineme's GL Tools is leveraging rather than any feature design/construct on their part.

PreviewAttachmentSize
Attenuate II.qtz21.04 KB

gtoledo3's picture
Re: Attenuate function of GL Points not Environmental ...

I see them attenuating with X and Y placement, corresponding to the edges of the QC projection mode (as well as Z).

I see what you are saying is a bug now... there was something about the constant spinning that was obscuring it for me, and then when I disconnected the spin, I didn't get it at first. The points at the edges are staying the same size they would be if a Y rotation of the whole structure wasn't taking place.

It's that I don't use that function. If I wanted to draw a bunch of points that changed with Z, I would most likely also want rotation, at which point I would typically use an iterator and sprites. I've been under the impression the GL Points always billboard.