Unsupported — We cannot guarantee that this software will work properly on Mac OS 10.8 and above. Please be careful.

Release: GL Tools, v20080325

Release Type: Beta
Version: 20080325
Release Notes

This update to GLTools adds a few small new features.

First, the Spline patch now allows you to render points at each subdivision (not just each control point).

Second, the Polygon Mode patch now allows you to enable/disable point and line smoothing, as well as line stipple control.

Unsurprisingly, another Intel GL bug was uncovered: Enabling point-smoothing in polygon-mode mode results in no output. Yay lame intel drivers...

[ yanomano should have some really cool pictures to show for these requests... ;) ]

GLTools-20080325.zip152.7 KB

yanomano's picture

Some screenshots with splines and GLSL:

A_Subdivided (a lot ;) Splines in a "vertex noise" GLSL patch B_Stipple subdivided splines with the toneburst Bourke-superformula GLSL patch (the fragment shader is modified )

A_Subdivided_splines.jpg250.52 KB
B_Stipple_Splines02.jpg219.77 KB

toneburst's picture
Verrrry Nice

I liiiiiiiike...


Quartz Composer Blog: http://machinesdontcare.wordpress.com

Music Site: http://www.toneburst.net

yanomano's picture
Like_that_you_like :)

Another one with splines... yanomano.

Splines03.jpg169.62 KB

toneburst's picture



Quartz Composer Blog: http://machinesdontcare.wordpress.com

Music Site: http://www.toneburst.net

dwskau's picture

Is there any way to get a clean ending on splines? I am using them to graph data, but at the beginning and ending of the graph the spline overflows beyond the endpoints. I have been dealing with this by creating another point at the same Y but at an X beyond the bounds of the graph and then covering the overflow with a sprite. The example I attached is without the covering sprites. If there isn't, could the next release possibly deal with this somehow?

Splines.png21.03 KB

cwright's picture
i think...

I think that's a property of the interpolation method used. I'm not sure that it can be dealt with without using a different spline algorithm (which we've considered, but haven't investigated at all really). This will probably take place as an additional input to the spline, to select the type or something.

In the mean time, can you provide some simplified examples (3-5 point spline compositions) so I can tinker with it and see if I can figure out a shorter-term solution for you?

[edit: never mind the simplified compositions, I was able to whip a couple up in no time flat. There may be a simple change in the code to address that, I'll play with it eventually and see what I can discover]

dwskau's picture
Individual point tension

Would it be simple to have tension for each point or maybe for each side of a point? Something similar to handle tools on spline editors in Adobe Illustrator. Their tools also let the angle the tension occurs at change, allowing sharp angles to happen. In essence it makes multiple splines that can be tangent sometimes giving the illusion of a continuous spline. I don't really know how this would integrate with your current interpolation method. It may even be a separate issue, but it seems that it would allow the most control for the user.

cwright's picture

Yeah, tension is how most splines handle this sort of thing. Simple Cubic Splines (what's currently implemented) don't have per-control-point weighting though, so it's not quite possible out of the box.

It's definitely the kind of functionality we'll need when more sophisticated spline types get added though. Do you happen to know what kind of splines Illustrator uses in the cases you mentioned? Typically the tool versions I've seen have control points that are off the curve, while the present spline has all control points on the curve.

dwskau's picture
Cubic Beziers

As far as I know Illustrator uses cubic bezier splines, but I am not sure. I am well beyond my bounds with the majority of the stuff going on here, I am just an architecture student who likes computers. I have been contemplating a masters in computer science however and I hope in the next year or so as I take some of those classes I will start to understand a lot more of what you guys discuss here.

toneburst's picture
And the QTZ for you used for

And the QTZ for you used for the Splines screenshot would be cool, too. Hope you don't mind me asking...


Quartz Composer Blog: http://machinesdontcare.wordpress.com

Music Site: http://www.toneburst.net

toneburst's picture
Hi yanomano, could I

Hi yanomano,

could I possible have the QTZ you used for screenshot B? I really love the effect, and I'd love to see how you made it work with the Superformula shader.


Quartz Composer Blog: http://machinesdontcare.wordpress.com

Music Site: http://www.toneburst.net

yanomano's picture
With pleasure !

With pleasure ! Can i have your mail ?

cwright's picture

alx, don't worry about posting your e-mail addy publicly. I'll send it along to yanomano without a public record of it (to prevent spam etc etc).

[edit: I've e-mailed you both, so you should be in good shape now]

tobyspark's picture
demo comps?

does anybody have any demo comps on how they're using gltools? and i'm really hurting for the lack of structure tools to merge streams of coordinates. vvvv spreads, such a good design.

cwright's picture

spreads would basically solve all of QC's massive-data shuffling problems in one blow. I really should put that higher up on the todo list..... so much going on lately though!

Anyway, franz and yanomano are basically wizards at this stuff, from what I can tell (well, yanomano at least, franz uses structures in other ways, but sometimes with gltools)

franz's picture

there is the kineme structure maker that i use heavily (let alone these NAN entries problems) that you can use to merge structures i think. I just don't remember from what package it comes from... then Chris implemented spreads for GL lines and points (restricted to positioning, no texture spreading a la vvvv tho'). If you want Typo-spread for your own plugin, it shouldn't be to difficult to implement it i guess (with some help.....)

EDITED: double-checked, and apart from the openCV tracker (that i'm using) plugin, there doesn't seem to be anything able to make a suitable structure for the GLpoints/lines. Using a queue patch just crashes QC .... so no, i can't provide any sample comp. Anyone ?

cwright's picture
js or structureMaker

can't our structureMaker or the Javascript patch make suitable structures as well? smokris made a JS demo for points a bit back, and I made structuremaker for use in the last GLTools.

p.e. I'm working on a more full-featured GLTools with better spreads support. Should be fun, but might break backwards compatibility with the last version a bit (instead of position-only spreads, each input will be a spread for that specific attribute)

tobyspark's picture
gl lines... yeah. this is what i was wanting to do...

my 'this should be a simple demo' test case would be to draw a line across the screen whose y coordinate is fed from a queue recording the mouse y over time, and whose x is the position in the queue. like waggling a piece of string in the wind.

expanding a spline to have tens, hundreds of points and patch them all together doesn't seem the right kind of answer either.

all pointers and alternative strategies welcome...


Markh's picture

The GL tools are one of my favorite patches... unfortunately my compositions using the spline patch using v4 look a bit bitmapped when I installed the new version- I tried re inserting the (new) spline into the compositions but it still have a jagged feel - the width and alpha dont seam to work with the patches I've made. I've had to reinstall the original. If anyone wants to have a look I'll forward on a patch I've been having problems with.

thanks ~mark

cwright's picture
bug report

please post this on the bug reporter, and include the version numbers in question.

1.0 underwent some gl blending changes to make it more consistent with the other QC rendering patchs. However, we're still a bit split up on the results of this change (because of the wrong blending stuff that's built-in).

Installation Instructions

Place the plugin file in
/Users/[you]/Library/Graphics/Quartz Composer Patches/
(Create the folder if it doesn't already exist.)

A set of patches for drawing GL primitives and modifying the GL environment.

Source code is available on GitHub.


Logo by @usefuldesign.au.

Known issues

  • The GL Field of View patch doesn't work properly on Mac OS 10.9 (it produces stretched output).