Skip to main content

Branches 🍂

There are some things that are awesome to include into June, like motion-based effects and AudioLink, but requires a bit of extra work in the shader. Branches is a system that allows for you to choose a version of June that has the feature you need. Think of it like different flavours of June - you have the base, vanilla one, and you have other ones like AudioLink that add in extra features.

What Branches Do What?

  • Default: The default branch is the base shader. This is the one you will use most of the time.
  • AudioLink: This branch includes the AudioLink module, which allows you to use audio data in your shader. This is useful for creating effects that react to audio, like visualizers or beat detection.
  • Motion: This branch includes the Motion module, which allows you to use motion data in your shader. This is useful for creating effects that react to motion, like motion blur.
  • Render Texture: This branch allows you to use a RenderTexture in place of a GrabPass. This is useful for non-VRChat uses.

Then, there are some combined branches, such as MotionAudiolink that just combine the features in both branches.

Why Not One Big Shader?

Because some features, like AudioLink, require extra files. Motion requires reading a past frame buffer. Render Texture replaces the GrabPass. These all make it not practicle to include these features in the base shader.

Making Your Own Branch!

Sometimes you want to change the render queue and GrabPass name. Whether this is to resolve ordering in your setup or to introduce multiple June objects at once (I suggest not doing that, but if you do, please make sure each is its own branch with its own GrabPass name). You can do this in the Branches section at the bottom of the material editor. This will create a new shader with the name you specify, and the render queue and GrabPass name you specify. You will just select your new branch like any other shader by going to Luka -> June -> [Version] -> Custom -> [Branch]. There are also some compiler settings you can mess with, but I suggest not doing that. They are there for debugging purposes mostly!