RGB Radial Slider | VRC Avatars for Dummies

An RGB radial slider lets a player adjust an avatar color from the VRChat Action Menu instead of choosing a single on/off state. It is useful for hair colors, emission intensity, clothing accents, or other shader-driven color controls.

Do this after a simple color animation works. A radial control adds parameter and animator complexity, so it is much easier to debug when you already know the material property can be animated.

Creator: DedZedOffishal

Use the video for the Unity clicks, then use this page to keep the parameter, menu, and shader pieces aligned.

Recommended Setup

Make one radial value work before building a full RGB system.

  1. Confirm the shader property visibly changes in Unity.
  2. Create one float expression parameter and one radial puppet control.
  3. Upload privately and test saved, synced, and platform behavior before adding more sliders.
VRChat note

A Radial Puppet drives a float from 0.0 to 1.0. Synced custom expression parameters share VRChat's 256-bit sync budget, so only sync values other players actually need to see.

What This Tutorial Helps With

Use this when a color should be adjustable across a range instead of switching between fixed variants.

Control idea Better control Why
Simple glow on/off Toggle One boolean-style state is enough.
Brightness or hue amount Radial Puppet The player needs a smooth value.
Red, green, and blue channels Three radial controls or a purpose-built shader setup Each channel needs its own value.
A few fixed color presets Material swap or exclusive choices Fixed options are easier to test and label.

Before You Start

  • A working avatar upload.
  • A material/shader property that can be animated.
  • An Expressions Menu and Expression Parameters asset assigned on the Avatar Descriptor.
  • A backup of the FX controller and expression assets.
  • A plan for whether the color should be saved, synced, both, or neither.

If you are not sure which material property to animate, start with Animation Hue Shift before building the radial control.

Build Order

  1. Pick one renderer and one material property.
  2. Create or identify the animation/blend setup that changes that property.
  3. Add a float parameter to the Expression Parameters asset.
  4. Add the same float parameter to the FX controller.
  5. Add a Radial Puppet control in the Expressions Menu.
  6. Drive the animation or blend tree from that parameter.
  7. Set the parameter default to the color value you want on avatar load.
  8. Decide whether Saved should be enabled.
  9. Decide whether Synced is needed for other players.
  10. Upload privately and test in VRChat.

Keep spelling exact. HairHue, Hair/Hue, and hairHue are different names.

Saved And Synced Choices

Setting Use it when Avoid it when
Saved the user expects the color to persist after changing avatars or worlds the color is temporary or should reset on load
Synced other players need to see the exact chosen color the value is local-only or only affects the wearer
Unsaved default the avatar should always load in a known color state the avatar is meant to remember customization

VRChat's Expressions Menu and Controls page explains how menu controls and expression parameters connect, while Animator Parameters documents parameter types and memory use.

Common Problems

Help! The slider moves but the color does not.

Check the radial control parameter, Expression Parameters asset, FX controller parameter, and animation or blend tree. One mismatched name or wrong parameter type can break the whole chain.

Help! The color resets after avatar reload.

Review the parameter default value and Saved checkbox. Saved parameters remember the user's last value, while unsaved parameters return to the uploaded default.

Help! Other people cannot see the color change.

Check whether the parameter is synced. Only sync it if remote players need the result, because synced parameters consume avatar sync budget.

Help! The color works on PC but not Quest or Android.

Check whether the mobile shader supports the property you are animating. PC-only shader features may not survive the Android avatar version.

Related Resources

Final Advice

Build the smallest useful slider first. When one radial value works, the rest of an RGB system is mostly careful repetition: clear names, correct parameter types, tested defaults, and a shader that supports the look on the platform you care about.

Topics: RGB Radial Slider, VRChat avatars, avatar workflow