• Home
  • Blog
  • Support

VDMX - MAC VJ SOFTWARE

  • Home
  • Blog
  • Support
  • Menu
Using the v002 Analog Glitch.fs FX on a live camera in VDMX6.

Using the v002 Analog Glitch.fs FX on a live camera in VDMX6.

Adapting the v002 Glitch Analog GLSL shader to ISF

April 24, 2025

As VDMX6 and other tools were forced to sunset Quartz Composer, we've gotten quite a few requests to help revive some beloved FX patches. In some cases—like the classic Rutt Etra effect—the process of modernization requires a rewrite in Metal as a built-in FX. Fortunately for many of the v002 plugins from vade the custom QC object was mostly a wrapper for a cool GLSL shader that could be easily adapted to ISF.

To take advantage of the ISF versions of the v002 FX, just use the .fs versions when selecting from the list of FX in VDMX instead of the .qtz versions where possible.

For those who are curious about how these shaders were adapted from GLSL to ISF, in this tutorial we will look at the ‘v002 Glitch Analog’ plugin as an example.


What is ISF? Why should we use it?

ISF (Interactive Shader Format) is a simple, flexible format for writing GPU-accelerated visual effects that run in real time. It’s used by apps like VDMX, Lumen, CoGe, and even in web-based environments with the right embedding.

ISF shaders are written in GLSL, just like traditional fragment shaders, but they include a JSON metadata block at the top for defining control parameters, persistent memory buffers, multiple passes, and other useful information.

Like with Quartz Composer compositions, one of the best parts of working with ISF shaders is they can be easily opened and modified. Using any standard text editor you can create your own custom remixes of your favorite video generators and visual FX.


Getting Started

The first step is getting the code that we will be converting from the Github repository,

  1. The original v002.AnalogGlitch.frag GLSL shader code from the plugin.

  2. The v002AnalogGlitchPlugIn.m file for the QC plugin that wraps the .frag file and declares the inputs.

Beyond declaring the names and ranges for the input controls, we don’t need anything from the .m file in this case; most of the code here is simply a wrapper for loading and rendering the GLSL code, all of which is handled automatically when working with ISF based shaders.


JSON section describing the input controls and other metadata for the FX in BBEdit.

Converting from GLSL to ISF

The general process here will be:

  1. Create the new ISF file by,

    1. Using the “New” menu option in the ISF Editor, or

    2. Creating a new file with the .fs file extension in your favorite text editor, such as BBEdit

  2. Declare the input controls and other metadata in the JSON section at the top of the ISF.

    1. We can find the original declarations for the plugin in the ‘+ (NSDictionary*) attributesForPropertyPortWithKey:(NSString*)key’ portion of the v002AnalogGlitchPlugIn.m file.

    2. Don’t forget to includes the credits!

  3. Adapt the AnalogGlitch.frag file to ISF. In this case there are only a few details to change.

    1. Switch from using texture2DRect() calls to IMG_NORM_PIXEL() and IMG_PIXEL() functions.

    2. Use the RENDERSIZE built-in variable instead of texdim0.

    3. Use the isf_FragNormCoord built-in variable instead of texcoord0.


End Result

The final adapted version of v002.AnalogGlitch.frag that we now include with VDMX6 looks like this:

/*
{
  "CATEGORIES" : [
    "Glitch", "Distortion Effect"
  ],
  "DESCRIPTION" : "Emulates classic analog video interference, distortion and sync issues.",
  "ISFVSN" : "2",
  "INPUTS" : [
    {
      "NAME" : "inputImage",
      "TYPE" : "image"
    },
    {
      "NAME" : "inputDistortionImage",
      "TYPE" : "image"
    },
    {
      "NAME" : "inputDistortion",
      "TYPE" : "float",
      "MAX" : 5,
      "DEFAULT" : 0.0,
      "LABEL" : "Distortion",
      "MIN" : 0
    },
    {
      "NAME" : "inputBarsAmount",
      "TYPE" : "float",
      "MAX" : 1,
      "DEFAULT" : 0.25,
      "LABEL" : "Distortion Mix",
      "MIN" : 0
    },
    {
      "NAME" : "inputVSYNC",
      "TYPE" : "float",
      "MAX" : 2,
      "DEFAULT" : 0.0,
      "LABEL" : "V Sync",
      "MIN" : 0
    },
    {
      "NAME" : "inputHSYNC",
      "TYPE" : "float",
      "MAX" : 2,
      "DEFAULT" : 0.0,
      "LABEL" : "H Sync",
      "MIN" : 0
    },
    {
      "NAME" : "inputResolution",
      "TYPE" : "float",
      "MAX" : 10,
      "DEFAULT" : 5,
      "LABEL" : "Scan Line Size",
      "MIN" : 1
    },
    {
      "NAME" : "inputResolutionMix",
      "TYPE" : "float",
      "MAX" : 1,
      "DEFAULT" : 0.5,
      "LABEL" : "Scan Lin Mix",
      "MIN" : 0
    }
  ],
  "CREDIT" : "Vade / VIDVOX"
}
*/
//	Original v002 Analog Glitch by Vade
//	https://github.com/v002/v002-Glitch/blob/master/v002AnalogGlitchPlugIn.m
//	Adapted to ISF by VIDVOX 2025

void main (void) 	{ 		
    vec2 point = isf_FragNormCoord.xy;
    
    // sample center of the 1st pixel, down the height
    vec4 bars = IMG_NORM_PIXEL(inputDistortionImage, vec2(0.5, point.y));

    // scanlines
    float stripe = mod(floor(gl_FragCoord.y), floor(inputResolution)) / floor(inputResolution);
    float scanlineMask = mix(1.5, 0.75, stripe);
    scanlineMask = mix(1.0, scanlineMask, inputResolutionMix);
    
    // get rough luma 
    vec4 key = IMG_PIXEL(inputImage, (vec2(point.y, point.y)) * RENDERSIZE);
    key += IMG_PIXEL(inputImage, (1.0 - vec2(point.y, point.y)) * RENDERSIZE);
    key -= bars.r;
    float d = (key.r + key.g + key.b) / 3.0 - 0.5;
    point.x -= d * inputDistortion * 0.1;

    //sync			
    vec2 texcoord = point + ( mod(vec2(inputHSYNC, inputVSYNC), 1.0)); 
    
    // wrap
    texcoord = mod(texcoord, 1.0);
    
    // outout
    vec4 result = IMG_PIXEL(inputImage, texcoord * RENDERSIZE);
    result.rgb = result.rgb * scanlineMask;
    
    gl_FragColor = mix(result, bars*result, inputBarsAmount);
}

For more examples of ISF shaders that are recreations of QC plugins and compositions from vade, look for the following files in your /Library/Graphics/ISF/ directory:

  • v002 Bleach Bypass.fs

  • v002 Crosshatch.fs

  • v002 Dilate.fs

  • v002 Dilate.vs

  • v002 Erode.fs

  • v002 Erode.vs

  • v002 Light Leak.fs

  • v002 Light Leak.vs

  • v002 Technicolor.fs

  • v002 Vignette.fs

  • v002-CRT-Displacement.fs

  • v002-CRT-Mask.fs

You can also find more tips and tricks in ISF documentation for converting GLSL shaders to work in ISF.

In Advanced, Technique Tags ISF, FX, GLSL, v002
← Visualizing and adjusting color levels with the VDMX Scopes pluginTracking faces, bodies, and hands with VDMX →

Download VDMX6

Download VDMX6 Plus

Download VDMX5


ISF for Motion


Buy VDMX

Email / Support

Free Sample Clips

Free Utility Apps

Open Source

GLSL Shaders

Privacy Policy

FAQ


Recent Features

Featured
Announcing VDMX 6.3!
Announcing VDMX 6.3!
Read more →
Community, Access, and Bending the Raster: A Conversation with Nica Ross and Seej
Community, Access, and Bending the Raster: A Conversation with Nica Ross and Seej

In the second episode of the VIDVOX podcast, hosts David Lublin and Cornelius sit down with two pillars of the live visual community: Nica Ross and Chris Jordan (Seej).

Read more →
Arts, Tech, and Glitch: A Conversation with Vade and Sarah GHP
Arts, Tech, and Glitch: A Conversation with Vade and Sarah GHP

The first in a new series of conversations from VIDVOX, hosts David Lublin and Cornelius (ProjectileObjects) sit down with artists Anton Marini (Vade) and SarahGHP to talk about breaking machines, analog history, and the art of making your own tools.

Read more →
Doing visuals for your first house party? Here's how to make it happen.
Doing visuals for your first house party? Here's how to make it happen.
Read more →
ima_b688ecf_720.jpg
VDMX and macOS 26!
Read more →
Recommended VDMX Gear Guide 2025
Recommended VDMX Gear Guide 2025

Building the Ultimate VDMX Rig: The 2025 Gear Guide

Ready to build or upgrade your live visual setup? Our comprehensive new gear guide has you covered. We dive deep into the most important choice for any VJ: the right Apple Silicon Mac. Discover why even a budget-friendly Mac Mini can be a powerhouse for standalone installations, and which MacBook Pro models are best for the most demanding shows.

But the computer is just the start. We also cover crucial pro-tips on which macOS version to run for maximum stability, our top picks for essential peripherals like external SSDs, capture cards, and Thunderbolt docks, and a complete checklist for your VJ travel kit. Whether you're a seasoned pro or just starting out, this guide has the recommendations you need to build a rock-solid VDMX system. [Click to read the full guide...]

Read more →
Color Spaces, Compression Quality Metrics, and the Human Eye
Color Spaces, Compression Quality Metrics, and the Human Eye
Read more →
VDMX 6.2 Update: Pop over previews, directly capture audio from other apps, and more!
VDMX 6.2 Update: Pop over previews, directly capture audio from other apps, and more!

The VDMX 6.2 update is here! Directly capture audio from other applications, bundled ProjectMilkSyphon, improved fullscreen output panel, pop out previews, and more!

Read more →
Featured
Receiving and Displaying MIDI Time Code (MTC) with ISF
Receiving and Displaying MIDI Time Code (MTC) with ISF
Read more →
VDMX_OREI_4Way.png
Four Outputs From One Mac: Using VDMX Advanced Output With an Affordable Video Wall Processor
Read more →
VDMX Eurorack Clock Sync Tutorial with the Pamela's Pro Workout
VDMX Eurorack Clock Sync Tutorial with the Pamela's Pro Workout

When working with Eurorack systems alongside VDMX, a particularly useful technique is to synchronize the clock timing between the systems using MIDI. In this tutorial we will be looking at two different ways to go about this. In the first section we will use the MIDI Clock output feature of VDMX to drive a Eurorack clock module. In the second section we will flip this and use MIDI clock out from our Eurorack clock module to control the tempo of a Clock plugin in VDMX.

Read more →
Spooky Halloween Projections with VDMX
Spooky Halloween Projections with VDMX
Read more →
VuoSources.gif
Extending VDMX6 Plus with Vuo
Read more →
VDMX and Ableton Live: A Beginner's Guide to Animate your Music.
VDMX and Ableton Live: A Beginner's Guide to Animate your Music.

Learn how to create a powerful audio-visual synthesizer by linking VDMX and Ableton Live. This tutorial shows you how to use MIDI to control your music and then drive stunning, reactive visuals from your audio. Perfect for performers and creators looking to add a dynamic visual layer to their projects.

Read more →
Creating glitchy hologram style visuals with the Remove Background FX in VDMX6
Creating glitchy hologram style visuals with the Remove Background FX in VDMX6
Read more →
Some techniques for drawing text in GLSL
Some techniques for drawing text in GLSL
Read more →
Visualizing and adjusting color levels with the VDMX Scopes plugin
Visualizing and adjusting color levels with the VDMX Scopes plugin
Read more →

Top Posts

Automatic BPM Detection

The “Hap” Open Source Video Codecs for OS X

Multi-screen video mixing on a Macbook Pro

Creating a multi-channel live camera video sampler

Video Fundamentals Taught with VDMX Part 1


Tutorials by Topic

Quick Start

Basics

Intermediate

Technique

Templates

Data-Sources

MIDI / OSC / DMX

Quartz Composer

ISF