
Line segments (need square ends for Audulus) This avoids the pre-computation of Loop-Blinn, and the AA issues of Kokojima. Then vger tests the point against the area between the bezier segment and the line, flipping inside/outside again if inside. To determine if a point is inside or outside, vger tests against the lines formed between the endpoints of each bezier curve, flipping inside/outside for each intersection with a +x ray from the point. To avoid having to solve quadratic equations (which has numerical issues), the fragment function uses a sort-of reverse Loop-Blinn. The bezier path fill case is somewhat original. For path fills, vger splits paths into horizontal slabs (see vgerPathScanner) to reduce the number of tests in the fragment function. Vger draws a quad for each primitive and computes the actual primitive shape in the fragment function. If Audulus goes cross-platform again, I will port vger to vulkan or wgpu. Vger isn't cross-platform (just iOS and macOS), but the API is simple enough that it could be ported fairly easily. vger renders analytically without tessellation, leaning heavily on the fragment shader.
Audulus llc full#
nanovg is certainly more full featured, but for Audulus, vger maintains 120fps while nanovg falls to 30fps on my 120Hz iPad because of CPU-side path tessellation, and other overhead. I was previously using nanovg for Audulus, which was consuming too much CPU for the immediate-mode UI. Here's it rendering that svg tiger (the cubic curves are converted to quadratic by a lousy method, and I've omitted the strokes):

Here's an early screenshot from vger in use for Audulus: vger renders primitives as instanced quads, with most of the calculations done in the fragment shader. API is plain C.Įach primitive can be filled with a solid color, gradient, or texture. That said, there is an ever-growing collection of well-modeled filters and such available on the forum.Vger is a vector graphics renderer which renders a limited set of primitives, but does so almost entirely on the GPU. It's easier to get into unrelenting digital weirdness than you would with the Moog Model 15 type of an app, I could see how you might have issues with the results. In Audulus that responsibility falls on you. A lot of eurorack modules are calibrated like instruments, with the designers balancing each knob to ensure the largest sweet spot. I think Audulus is a very unrestricted environment. You have to be mindful of aliasing and filtering out some of the upper harmonic content, but I think you get really nice results isf you use your ears as well as your DSP cookbook. I have used it in all manner of ways like making LFOs, exploring phase modulation, making those saw-triangle-ramp oscillators like the Rossum-Electro Trident. This is actually my favorite oscillator node, because you can start to roll your own oscillators to taste. The "Phasor" is a 0-2π ramp wave that's there for people who want mathematical precision at the expense of aliasing. The nature of sound is obviously subjective, but I think they sound fine for when I want a bunch of oscillators. It has a toggle between the 4 basic wave forms and shape input that is pulse width for the pulse waveform and a supersaw type of modulation for the saw wave. In my estimation it sounds the same as a really clean analog oscillator like a Dixie II +.

There are two oscillator nodes in Audulus, the "OSC" and the "Phasor" audio quality seems to come up a bit in Audulus discussions. in which case are they any different than Max? Is this mainly because the oscillators are just straightforward digital implementations.
