Introduction
Welcome to the documentation for FireRatShader. This shader is designed to be a powerful but efficient Uber shader that works in VR, Android, Mobile, Windows, and Unity 6 across both render pipelines: Built-in Render Pipeline Universal Render Pipeline
Both pipeline versions share the exact same 828 properties, inspector layout, and feature sets in 100% lockstep parity.
Pipeline Variants & Master Shaders
- Renderer Requirement: BRP The Built-in RP version only works in projects using the Built-in Render Pipeline. URP The URP version only works in projects using the Universal Render Pipeline.
- Master Shader Pairs:
- Master Uber:
FireRat/FireRatShader BRP and FireRat/FireRatShader_URP URP — Full-featured master shader for characters, clothing, and props.
- Two-Pass Transparency:
FireRat/FireRatShader_TwoPass BRP and FireRat/FireRatShader_URP_TwoPass URP — Dual-pass rendering (backface depth prepass + frontface) for eliminating alpha sorting artifacts on complex transparent meshes.
- Shell Fur Extrusion:
FireRat/FireRatShader_Fur BRP and FireRat/FireRatShader_URP_Fur URP — Multi-pass vertex shell extrusion (1–8 layers) with wind sway, gravity vectors, and strand noise thinning for furry avatars and plush fabrics.
Use the navigation on the left to jump to a specific feature section. Each section corresponds to a foldout in the material inspector.
VRChat Avatar Setup
The FireRat Shader Avatar Setup tool is a powerful utility designed to automatically generate the necessary VRChat assets (FX Controller, Expressions Menu, and Parameters) to control the shader's features in-game. This saves you the time and effort of manually creating animations and menu toggles.
How to Use
- Open the Tool: Navigate to Tools > FireRat Shader > Avatar Setup from the top menu bar in Unity.
- Select Your Avatar: In the setup window, select your avatar's descriptor from the "Avatar" object field. The tool will automatically find all Skinned Mesh Renderers on your avatar.
- Choose Target Meshes: By default, all found renderers are selected. You can uncheck any renderers that you do not want the generated animations to affect.
- Select Features: Use the toggles in the "Feature Selection" area to choose which shader features you want to create menu controls for.
- Each feature has a master toggle to enable or disable the entire group.
- Within each group, you can select individual controls (e.g., just an "Enable" toggle, or also a "Width" puppet) to save parameter memory.
- The "Total Parameter Cost" display at the bottom shows how much of your VRChat parameter budget your selections will use.
- (Optional) Merge Controllers: If you are using another system that has its own FX Controller (like GoGo Loco), you can select it in the "Base FX Controller" field. The tool will merge its animations into a copy of that controller instead of the VRChat default.
- Generate Assets: Click the "Generate and Merge Assets" button. The tool will create a new folder in
Assets/FireRatShader/Generated/[YourAvatarName] containing all the necessary menus, parameters, and animations. It will then automatically assign these to your avatar descriptor.
Important: Two-Step Feature Enablement
For an expression menu control to work in-game, the corresponding feature must be enabled in two places:
- In the Material Inspector: You must enable the feature on the material itself (e.g., check the "Enable" box for "Outline").
- In the Avatar Setup Window: You must select the corresponding control(s) for that feature (e.g., check "Outline Menu Controls").
This is because the shader is heavily optimized. If a feature is not enabled on the material, its code is completely removed from the shader to save performance. If you generate a menu control for a feature that is disabled on the material, the menu option will appear in-game but will do nothing, because the shader code it's trying to control doesn't exist.
Saved Settings
The tool automatically saves your feature and mesh selections for each avatar. When you select an avatar, it will remember the last configuration you generated for it, making it easy to make small changes without starting from scratch.
Main Settings
Render Mode
Controls the fundamental rendering behavior of the material.
- Render Mode: Sets the transparency type.
Opaque is fastest. Cutout uses an alpha threshold for hard-edged transparency. Transparent allows for soft, blended transparency. Additive adds its color to what's behind it, useful for bright effects. Multiply darkens what's behind it (useful for shadows and tint overlays). Premultiplied blends using premultiplied alpha, giving correct edges for glow/particle-like textures without dark halos.
- Queue Offset: Offsets the render queue relative to the selected Render Mode.
- Force Depth Write (ZWrite): Manually controls if the material writes to the depth buffer. Useful for transparent objects that need to occlude others.
- Alpha Cutoff: The alpha value at which pixels are discarded in
Cutout mode.
- Shadow Cutoff Override: When enabled, uses the Shadow Cutoff value for the shadow-casting pass instead of the material's Alpha Cutoff, so the shadow silhouette can be independently tuned (e.g. tighter or softer than the visible cutout).
Base Appearance
- Use Base Color: Toggles a solid base color for the material.
- Color: The main color of the material. Can be hue-shifted.
- Use Vertex Colors: Tints the material using colors painted onto the model's vertices. Vertex Color Mode selects how they combine with the base color:
Replace uses the vertex color outright, Multiply tints the base color, and Add brightens it.
- Enable Back Face Color: Uses a separate Back Face Color for the back-facing sides of the mesh, letting you color the reverse side differently (useful for thin meshes like wings or clothing). The color can be hue-shifted.
- Use Base Texture: Toggles the main texture of the material. Tiling and Offset can be adjusted in the texture inspector.
Queue Offset
Fine-tunes the material's render queue position relative to its base render mode. This is essential for resolving z-sorting issues with layered transparent materials like hair, clothing overlays, and accessories.
- Queue Offset: Shifts the render queue by the specified amount (range: -50 to +50). A higher value renders later (on top), a lower value renders earlier (behind). Default is
0.
Alpha-to-Coverage Sharpening & Mip Scaling
When using Alpha to Coverage in Cutout mode with MSAA enabled, this feature controls the sharpness and distance stability of the anti-aliased edge at the cutout boundary — ideal for hair cards and foliage in VR.
- A2C Edge Sharpening: Controls the gradient width at cutout edges.
0 uses standard alpha-to-coverage. Higher values produce sharper, crisper cutout edges using screen-space fwidth() derivatives.
- A2C Mip Scale: Multiplies the derivative divisor across texture mipmap levels to prevent cutout edges from unnaturally thinning out or disappearing at medium-to-far viewing distances in VR headsets.
These controls appear when Render Mode is set to Cutout and Alpha to Coverage is enabled.
Advanced Backface Rendering
Extends the existing Back Face Color feature with support for a completely separate texture and independent emission on back-facing triangles. This is ideal for jacket interiors, capes, double-sided curtains, or any mesh where the inside should look different from the outside.
- Use Backface Texture: When enabled, samples a separate texture for back-facing triangles instead of using the flat Back Face Color.
- Backface Texture: The texture applied to back-facing geometry. Uses its own UV tiling and offset controls.
- Backface Emission Color: An independent emission color applied only to back faces.
- Backface Emission Strength: Controls the intensity of the backface emission (range: 0–10).
This feature incurs zero cost when disabled. The keyword _BACKFACE_TEX_ON is only compiled into the shader when the toggle is active.
Video Player Mode
Enables compatibility with Unity's Video Player component and AVPro Video. Video textures often require special handling for gamma correction and UV coordinate flipping that standard textures do not need.
- Video Player Mode: Master toggle that enables video texture handling.
- Is AVPro: When enabled, applies AVPro-specific corrections: flips the texture's Y coordinate (AVPro outputs upside-down) and applies gamma-to-linear correction (
pow(color, 2.2)) since AVPro outputs in gamma space.
When Is AVPro is disabled, the shader assumes a standard Unity Video Player texture which requires no special correction.
Global UV Controls
These controls affect all textures and UV-based effects on the material.
- Use Ping-Pong Scroll: Animates UVs back and forth instead of in one direction. Provides Speed and Range controls.
- Scroll Speed X/Y: Scrolls all UVs at a constant speed.
- Rotation: Rotates all UVs around the center (0.5, 0.5) of the UV space.
- Projection Mode & UV Set: Many textures in the shader offer two extra selectors. Projection Mode chooses how the texture is mapped onto the model (UV, World Space triplanar, Local Space triplanar, Screen Space, Planar, Spherical, Cylindrical, Biplanar, Panosphere (Equirectangular 360), or Polar Coordinates). A UV Set selector instead picks between UV0 and UV1 for that texture. These appear next to the affected texture's controls.
UV Flow (Pathing)
Animates textures along a vector flow map using two seamlessly crossfading phases, creating continuous directional motion without visible looping — ideal for rivers, conveyor belts, wind streaks, and magic trails.
- Enable UV Flow (Pathing): Master toggle.
- Flow Map: RG channels encode direction vectors (
0.5 = neutral), with a UV Set selector.
- Flow Speed / Flow Strength: Animation speed and the magnitude of UV displacement along the flow vectors.
- Cycle Rate: Frequency of the dual-phase crossfade cycles that keep the motion seamless.
UV Tile Discard
Discards geometry per tile of a 4×4 UV grid (0–1 mapped to each 0.25 tile), letting you toggle clothing parts, accessories, or hair pieces on and off from one mesh without blendshapes. Applied consistently across every pass (main color, outline, shadow, depth).
- Enable UV Tile Discard: Master toggle.
- UV Tile Grid (4×4): Clickable grid of 16 tiles; toggled tiles are discarded. Rows map to the texture's V axis (Row 0 at the bottom).
UV Distortion
Warp the UV coordinates using a texture, creating effects like heat haze or water ripples.
- Distortion Map: A texture whose Red and Green channels control the X and Y offset of the UVs.
- Strength: The intensity of the distortion.
- Scroll Speed X/Y: Scrolls the distortion map to animate the effect.
Flipbook Animation
Animates the main texture by treating it as a grid of frames (a spritesheet).
- Mode: Playback mode (Loop, PingPong, Random).
- Columns (X) / Rows (Y): The number of frames in the spritesheet grid.
- Speed (FPS): Animation speed in frames per second.
- Start Frame: The initial frame of the animation, allowing for an offset.
Stochastic Texture Sampling
Procedurally blends randomized texture samples across triangular lattices to completely eliminate repetitive tiling patterns on large surfaces (floors, walls, terrain).
- Enable Stochastic Sampling: Master toggle enabling procedural lattice sampling.
- Stochastic Scale: Controls the scale multiplier for the triangular blending distribution.
Emission (Slots 1 – 4)
Makes the material glow with up to 4 independent emission layers. Requires a Bloom post-processing effect in your scene to see the full effect.
- Strength: Brightness of the primary glow. Values greater than 1 will bloom.
- Use Vertex Color for Strength: Modulates emission strength using the model's vertex color (Green channel).
- Use Emission Mask: Uses a texture to define which parts of the surface emit light. The mask has its own UV Set, Projection Mode, and Mask Scroll Speed X/Y controls.
- Use Texture Alpha for Emission: Uses the main texture's alpha channel as an emission map. Alpha Emission Strength controls the brightness of this emission.
- AudioLink Band: When a band other than
Off is selected, the emission strength is modulated by that audio band. AudioLink Strength controls how strongly.
- AudioLink Blink: When a band other than
Off is selected in the AudioLink Blink Band selector, the emission stroboscopically blinks with the music.
- Enable Emission Bloom Clamp: Clamps the maximum perceived HDR luminance of the emission output using a smooth $C^1$-continuous soft-knee compression curve. This prevents high-intensity AudioLink volume spikes or overexposed emission maps from producing blinding whiteouts in VRChat and HDR post-processing bloom pipelines.
- Max Luminance: The upper luminance threshold ceiling (range: 0.1–50.0).
- Soft Knee: Controls the softness of the shoulder transition into the luminance clamp (
0.0 = hard linear clamp, 1.0 = maximum smooth roll-off).
- Second / Third / Fourth Emission: Independent secondary, third, and fourth emission maps, each equipped with its own HDR Color tint, Strength multiplier, independent X/Y scrolling animation, and dedicated AudioLink frequency band reactivity.
Fluorescence Emission
Makes the material glow in response to scene light levels — the less light hits it, the more it glows. Perfect for glow-in-the-dark accents, UV-reactive paint, or emergency-lights that only appear in dark rooms.
- Enable Fluorescence: Master toggle.
- Fluorescence Map (RGB): Texture defining where the glow appears, with a UV Set selector.
- Color: HDR color tint of the glow.
- Strength: Glow brightness.
- Light Threshold: Light level below which fluorescence activates.
- Hardness: Transition sharpness between dark and lit states.
- Glow Only in Dark: When enabled, the glow is restricted to low-light environments (classic glow-in-the-dark).
Transparency
- Enable Transparency: Makes the object uniformly transparent.
- Amount: The overall transparency (0=Invisible, 1=Opaque).
- Enable Fresnel Transparency: Makes the object more transparent in the center and opaque at the edges, based on the viewing angle.
- Power: Controls the falloff of the fresnel effect.
- Edge/Center Alpha: Sets the transparency at the grazing edges and the center, respectively.
Enable Dithered Transparency (sorting-free screen-door transparency) and Enable Near Camera Fade are documented in the Transitions section, where they appear in the material inspector.
Procedural Textures
Procedural Texture Generation
This feature allows you to replace the standard base texture with a procedurally generated pattern. This can reduce texture memory usage and allow for dynamic, animated effects without external texture files.
- Enable Procedural Texture: Toggles the entire feature on or off. When enabled, it overrides the Base Texture and Base Color settings.
- Mode: Selects the pattern to generate.
- Noise: A classic, smooth value noise pattern (similar to Perlin noise).
- Octaves: Adds layers of noise at different scales to create much more detailed and natural patterns (like clouds or marble instead of just a soft blur).
- Lacunarity: Controls how the frequency of the noise changes with each octave.
- Gain: Controls how the amplitude of the noise changes with each octave.
- Voronoi: A cellular pattern, like cracked earth or biological cells.
- Style: Controls the visual style of the Voronoi pattern.
- Distance: The current smooth gradient effect.
- Color: Assigns a random solid color to each cell.
- Edges: Draws only the borders between the cells for a classic "cracked" look.
- Stripes: Parallel lines that can be animated or static.
- Dots: A grid of circles. The Thickness property controls their radius.
- Checkerboard: A classic alternating square pattern.
- Bricks: A running bond brick pattern with offset rows.
- Hexagons: A honeycomb pattern of hexagonal shapes.
- Squares: A grid of square shapes.
- Triangles: A triangular grid pattern.
- Chevrons: A zigzag pattern of V-shapes.
- Crosshatch: Intersecting diagonal lines.
- Barcode: Vertical bars of varying widths.
- Polka Dot Scallop: Overlapping semi-circles in a polka dot arrangement.
- Rounded Squares: Squares with rounded corners.
- Woven: A pattern resembling woven fabric or chain-link.
- Plaid: Intersecting lines of different thicknesses, creating a tartan look.
- Houndstooth: A classic checker pattern with broken checks.
- Argyle: A diamond pattern with overlapping circles.
- Scales: Overlapping semi-circles resembling fish scales.
- Diagonal Stripes: Diagonal lines across the surface.
- Herringbone: A pattern of interlocking V-shapes, common in flooring.
- Sierpinski: The Sierpinski triangle fractal pattern.
- Box Fractal: A fractal pattern based on repeated squares.
- Truchet Tiles: A pattern of quarter-circle arcs with random orientations.
- Truchet Lines: Connected line segments in a maze-like pattern.
- Spirals: Archimedean spirals emanating from the center.
- Radar: Concentric circles and radial spokes, like a radar screen.
- Sine Waves: Horizontal sine wave patterns.
- Cross Fractal: A fractal pattern based on repeating crosses.
- Mandelbox: A 2D slice of the 3D Mandelbox fractal.
- Color 1 / Color 2: The two colors used to create the pattern. The generated value is used to blend between them.
-
Color Shift
- Color 1 Shift: Toggles hue shifting for Procedural Color 1. The speed is controlled by the global Animation Speed in "Global Color Animation" (Color Controls).
- Color 2 Shift: Toggles hue shifting for Procedural Color 2. The speed is controlled by the global Animation Speed in "Global Color Animation" (Color Controls).
- Scale: Controls the size or tiling of the generated pattern.
- Speed: Controls the speed of the pattern's animation.
- Coordinate Space: Controls whether the pattern uses UV coordinates or world space positioning.
- Direction: Controls the animation direction as a 2D vector (X, Y).
- Thickness: Controls line thickness for patterns, or dot radius for dot patterns. Not applicable to Sierpinski or Checkerboard patterns.
- Density: Controls the size of pattern elements. Higher values make elements larger.
- Sparsity: Controls the spacing between elements. Higher values increase spacing.
- Rotation: Rotates the entire pattern. A value of 0.125 equals 45 degrees.
Procedural Texture Target
This feature allows you to use the generated procedural texture as a mask or input for other shader features, instead of just using it as the base color. This is a powerful way to create complex, dynamic effects by combining procedural patterns with other material properties.
- Target: Selects where the procedural texture output will be sent.
- Base Color: (Default) The procedural texture is used as the main albedo/color of the material, overriding the standard Base Texture and Base Color.
- Emission Mask: The procedural texture controls the intensity of the Emission. The generated pattern will define the glowing parts of the material.
- Metallic/Gloss Mask: The procedural texture's Red channel controls the Metallic property, and the Green channel controls the Smoothness property. This allows for creating surfaces with procedurally animated metallic or shiny patterns.
- Detail Mask: The procedural texture acts as a mask for the Detail Texture, controlling where the detail texture is visible.
- Dissolve Mask: The procedural texture is used as the pattern for the Dissolve effect, allowing you to create animated, procedural dissolve transitions without needing a separate texture map.
Color Controls
A set of controls that affect the final look of the material.
Global Color Animation
This setting controls how all colors with "Animate Hue" enabled will change over time.
- Enable Global Auto Color Shift: Master toggle that continuously animates every color with a shift control enabled. When disabled, shift sliders hold static or externally animated values.
- Animation Mode: Can be set to
Hue Shift (the default rotating rainbow effect) or Gradient.
- Animated Gradient: When in Gradient mode, you can provide a texture (like a long, thin gradient) that all animated colors will scroll through. This gives you precise control over the color palette of your animations.
- Ping-Pong Animation: (Gradient Mode Only) Animates the gradient back and forth instead of looping.
- Use Vertical Scroll: (Gradient Mode Only) Scrolls the gradient from top to bottom instead of left to right.
- Animation Speed: Controls the speed of the selected animation mode (rotation speed for Hue Shift, scroll speed for Gradient).
Color Adjustments
- Hue Shift: Rotates the final color's hue around the color wheel. Combined with "Enable Global Auto Color Shift", this drives the rainbow animation; combined with AudioLink it becomes audio-reactive.
- Saturation: Multiplies the color saturation (0=Grayscale, 1=Default, 2=Vibrant).
- Value (Brightness): Scales the HSV value (brightness) of the final color.
- Desaturation: Blends the final color towards grayscale.
- Invert Color: Inverts the final color.
- Final Color Tint: Multiplies a color over the final result, useful for tinting or grading.
RGBA Color Masking & Global Mask Routing
Enables 4 independent color zones and emissive channels driven by the RGBA channels of a single mask texture, allowing complete outfit recoloring and cross-module routing from one material.
- RGBA Color Mask: The mask texture isolating 4 distinct zones in R, G, B, and A channels.
- Red / Green / Blue / Alpha Tint: Multiplicative color tint applied to geometry where that channel is active.
- Red / Green / Blue / Alpha Emission: Independent HDR emission color applied to each zone.
- Global Mask Channel Routing: Routes individual mask channels (R, G, B, or A) to modulate secondary shader features:
- MatCap Mask Route: Selects a mask channel to modulate MatCap intensity.
- Rim Mask Route: Selects a mask channel to isolate Rim lighting.
- Glitter Mask Route: Selects a mask channel to restrict Glitter sparkles.
- Dissolve Mask Route: Selects a mask channel to bias or control the Dissolve transition progression.
- OKLab Color Blending: Enables Björn Ottosson's perceptually uniform OKLab color space blending for color tints, theme colors, and mask transitions. Eliminates the muddy desaturation and dirty gray intermediate colors inherent to naive sRGB/linear lerping.
Global Theme Colors
Defines 4 global master colors that drive a unified theme across multiple materials on an avatar or prop, so base color, outlines, rim, and emission can all pull from the same shared palette modulated by a single source — much like AudioLink's world theme system, but authored on your own materials.
- Theme Color 1 / 2 / 3 / 4: The four master color slots.
- Modulation Mode: How the theme colors are animated beyond their static values:
Direct: The theme colors are used as-is.
AudioLink: A selectable AudioLink Band hue-shifts the theme colors with the music; AudioLink Strength controls the intensity.
HueShift: Continuously rotates the theme colors through the color wheel at Hue Shift Speed.
- Theme Target Mask: A 4-component weight vector routing theme influence to each module — R = Base Color, G = Outlines, B = Rim, A = Emission. Setting a component to
0 keeps that module at its local color; 1 fully drives it from the theme palette.
Color Correction
- Brightness, Contrast, Gamma: Standard color correction controls.
Pixel Effects
Applies screen-space effects to create retro or stylized looks.
- Pixelation: Creates a blocky, low-resolution effect. The Amount controls the number of 'pixels' across the texture.
- Posterization: Reduces the number of colors in the material, creating a "posterized" look. Levels controls the number of color steps per channel.
Color Mask
Uses a texture to mask the material's alpha (visibility), cutting out parts of the surface or restricting the material to specific regions.
- Color Mask (RGBA): The mask texture. Use its Tiling/Offset to position it, and the UV Set selector to pick between UV0 and UV1.
- Alpha Source: Selects which channel of the mask drives the alpha:
None, R, G, B, or A. The chosen channel is multiplied into the final transparency.
Lighting
Controls how the material reacts to lights in the scene. This section is disabled if a Surface Style like MatCap (only when its Blend Mode is Override), Skybox, or Galaxy is chosen, as they provide their own lighting.
Lighting Modes
- Unlit: The material is not affected by scene lighting.
- Basic: A simple Lambertian lighting model.
- Toon: A two-tone "cel-shaded" look with a hard shadow edge.
- Stylized PBR: A simplified Physically Based Rendering model for metallic and smooth surfaces.
- Standard PBR: An industry-standard Physically Based Rendering model using GGX microfacet distribution, reflection probes, and lightmap support.
Properties
- Shadow Color: The color of the unlit areas of the model. (Applies to Basic and Toon modes).
- Use Ambient Lighting: Toggles sampling of scene ambient light and reflection probes. Makes lighting more consistent across different worlds. (Applies to Basic, Toon, and Stylized PBR modes). While enabled, two extra selectors appear: Ambient Fallback Mode chooses the fallback lighting model (
Flat or Gradient) used when High Quality Ambient (SH) is disabled or unavailable, and Shadowmask Fallback selects how baked shadowmask attenuation is applied (Ambient or Shadow Color).
- Enable Environment Reflections: Samples reflection probes to add environmental reflections even in Basic/Toon modes, giving surfaces a subtle shiny response to the scene. Strength controls how visible the reflections are, and Roughness controls how blurry they are. (Disabled on Medium/Low performance levels).
- Enable Custom Cubemap Reflection: Adds a user-provided Custom Cubemap that substitutes or supplements the scene's reflection probes, ideal for local reflections on props or as a fallback in probe-less worlds. Cubemap Tint colors the reflection, Roughness drives its blur (sampled as a mip level), and Blend Mode selects how it combines:
Override Probes always adds the cubemap reflection, Fallback When Probes Dark only adds it where the existing probe contribution is nearly black, and Additive stacks it on top unconditionally. Intensity scales the reflection brightness.
- Enable LTCGI (Area Light GI): Receives real-time Linearly Transformed Cosines (LTC) area-light global illumination from LTCGI-compatible VRChat worlds, letting the material react to polygonal area lights and video screens. Intensity scales the area-light diffuse and specular contribution, and Roughness Multiplier widens/blurs the specular highlight response. (Disabled on Medium/Low performance levels).
- Unity 6 URP Adaptive Probe Volumes (APV): URP The shader compiles
PROBE_VOLUMES_L1 / PROBE_VOLUMES_L2 fragment variants so ambient lighting automatically participates in Unity 6 / URP 17+ Adaptive Probe Volumes, replacing a dense grid of light probes with a single volume that is refined where it matters. No inspector control is required — it activates automatically when APV is enabled in the scene. BRP Not applicable in the Built-in pipeline.
- Override Scene Light: Ignores the scene's main light and uses custom values instead. Useful for making the material look consistent regardless of the world's lighting. Light Direction sets the direction the light comes from, Light Color tints the light, Light Intensity controls its brightness, and Shadow Strength sets the darkness of the shadowed areas.
- Min Light Brightness / Max Light Brightness: Clamp the environment and light brightness, so models never become pitch black in dark rooms (Min Light Brightness) or overexposed in bright worlds (Max Light Brightness).
- Shade Shift Map: A grayscale texture (with a UV Set selector and Strength) that biases the shadow threshold per-pixel, letting you fix clothing folds, muscle creases, and baked ambient occlusion that would otherwise be washed out by toon lighting.
- Monochrome Lighting: Desaturates scene lighting color so accurate skin tones are preserved regardless of strongly colored world lighting.
- As-Unlit Lighting: Blends lighting towards a uniform unlit floor in dark environments, keeping the character readable when scene light falls below useful levels.
- OpenLit Harmony Mode: Switches the diffuse calculation to the OpenLit CC0 standard half-Lambert formula, so your avatar's lighting matches other OpenLit-based avatars (lilToon, Poiyomi) in photo and cross-avatar worlds.
- VRC Light Volumes: Samples REDSIM's VRCLightVolumes v2 for per-pixel voxel ambient lighting in supported worlds, including their analytic point/spot/area lights. Falls back to standard light probes elsewhere; forced OFF in Medium/Low performance levels.
- VRSL (VRC Studio Lighting) GI: Real-time reception module for DMX stage fixtures, moving heads, lasers, and club lighting in VRSL-compatible VRChat worlds. Features controls for GI Intensity, Direct Light Intensity, and Specular Highlight Reception.
- Light Layers: URP Evaluates fragment-level lighting masks matching Unity URP's Rendering Layers (Light Layers). Lights in URP only illuminate geometry whose Mesh Renderer shares at least one matching layer bit. BRP In the Built-in pipeline, all lights illuminate all layers normally.
Toon Mode
- Threshold/Hardness: Controls the size and sharpness of the shadow edge.
- 2nd Shadow Tier (Dual-Step Anime Cel Shadows): Adds a second, softer shadow layer beneath the first for multi-tone anime shading. 2nd Shadow Color tints the intermediate shadow band, 2nd Toon Threshold places its boundary, and 2nd Toon Hardness controls how sharp its edge is.
- Toon Ramp: An optional gradient texture (shadow on the left, light on the right) that defines the exact shading ramp. If no ramp is set, the shader uses flat tone bands instead.
- Tone Count: The number of lighting bands when not using a ramp texture (
TwoTone, ThreeTone, or FourTone).
- Mid-Color / Mid Threshold: (3+ tones) The color and boundary of the midtone band.
- Highlight Color / Highlight Threshold: (4 tones) The color and boundary of the brightest band.
- Step Specular: Turns the specular highlight into a hard, cartoon-style step. Step Specular Threshold places the highlight boundary and Step Specular Hardness controls its edge sharpness.
- Shadow Border: Offsets the Toon shadow line boundary, letting you grow or shrink the lit area without touching the threshold ramp.
- Shadow Blur: Softens the Toon shadow step for smoother cel transitions.
- AO Shadow Modulation: Uses the mesh's ambient occlusion map to push crevices and folds into shadow, grounding the cel shading.
Stylized PBR Mode
- Normal Map/Strength: Adds surface detail using a normal map texture. The Normal UV Set selector chooses between UV0 and UV1 for the normal map, and Flip Normal Map Y inverts the Green channel to convert between DirectX and OpenGL normal map formats.
- Detail Normal System (1–4 Layers + Bicubic): Micro-surface detail normal stacking supporting up to 4 independently scrolled and scaled detail normal layers:
- Bicubic Normal Filtering: 5-tap Catmull-Rom bicubic spline filtering eliminating bilinear texel grid diamond artifacts at close inspection distances in VR.
- Detail Layers (1 to 4): Dynamically enables independent layers 1 through 4 with individual strength scales, UV coordinate sets (UV0/UV1), and continuous UV scroll velocities.
- Normal Blend Mode: Selects between standard
Whiteout / UDN blending and high-fidelity Reoriented Normal Mapping (RNM).
- Detail Normal Distance Fade: Automatically attenuates high-frequency detail normal strength across distance to suppress shimmering and temporal aliasing in VR headsets.
- Metallic/Smoothness: Controls the metal-like and shiny properties. These can be set with sliders or controlled by a Metallic/Gloss Map, where the Red channel controls metallic and the Alpha channel controls smoothness.
- Workflow: Switches between the
Metallic workflow (Metallic/Smoothness sliders and Metallic/Gloss Map) and the Specular workflow, which uses a Specular Color and a Specular Gloss Map (RGB = specular color, A = smoothness) instead.
- Enable Clear Coat: Adds a transparent protective layer over the surface, like clear coat paint. Strength controls how visible the coat is and Roughness how blurry its highlight is.
Standard PBR Mode
- Normal Map/Strength: Adds surface detail using a normal map texture. The Normal UV Set selector chooses between UV0 and UV1 for the normal map, and Flip Normal Map Y inverts the Green channel to convert between DirectX and OpenGL normal map formats.
- Detail Normal System (1–4 Layers + Bicubic): Identical 4-layer detail normal chaining with bicubic Catmull-Rom reconstruction and RNM blending.
- Metallic: Controls the metal-like properties of the surface.
- Workflow: Switches between the
Metallic workflow and the Specular workflow, which uses a Specular Color and a Specular Gloss Map (RGB = specular color, A = smoothness) instead of metallic.
- Roughness Map/Roughness: Controls the roughness of the specular reflections. A higher roughness creates a broader, more blurry reflection. If no roughness map is set, it falls back to the inverse of the Metallic/Gloss Map's Alpha channel (smoothness).
- Occlusion Map/Occlusion Strength: Simulates self-shadowing in crevices using an occlusion map.
- Detail Mask: A mask texture to control where the secondary Detail Texture is applied.
- Use High Quality Ambient (SH): Enables vertex-evaluated Spherical Harmonics ambient lighting for high-quality indirect diffuse light. When disabled, a fast sky-ground gradient fallback is used instead. Automatically supports lightmap sampling on static objects.
- Enable Clear Coat: Adds a transparent protective layer over the surface, like clear coat paint. Strength controls how visible the coat is and Roughness how blurry its highlight is.
Subsurface Scattering (SSS)
Simulates light passing through and scattering within thin or translucent objects, like skin, wax, or leaves. This adds a soft, glowing look from behind the object.
- Enable Subsurface Scattering: Toggles the effect on or off.
- SSS Scale: The overall strength of the SSS effect.
- SSS Radius: Controls how far light scatters within the material. Larger values create a softer, more diffuse look.
- SSS Tint: The color tint applied to the scattered light.
- Enable Thickness Map: Uses a grayscale texture to control how much light passes through different areas, simulating thin parts (ears, leaves, fabric) glowing more. Thickness Strength scales the effect.
Anisotropic Reflection
Creates stretched or elongated specular highlights, common on surfaces with a grain or direction, like brushed metal, hair, or vinyl records.
- Enable Anisotropic Reflection: Toggles the effect on or off.
- Mode: Switches between
Ward (a general model) and Stretched-Blinn (which uses a Tangent Map for more precise control).
- Roughness U / V: Controls the roughness (and thus the highlight size) independently along two perpendicular directions (U and V). The difference between these values creates the stretching.
- Specular Strength: The overall brightness of the anisotropic highlight.
- Tangent Map: (Stretched-Blinn mode only) An optional texture map that defines the direction of the surface grain, giving precise control over the highlight's orientation.
Dedicated Shading Models
Specialized shading models for organic surfaces. These apply regardless of the selected lighting mode.
- Enable Eye Iris Parallax: Simulates the depth and refraction of a pupil and iris beneath a transparent cornea. Iris UV Tiling scales the iris texture, Iris Depth Offset controls the simulated refraction depth, and Pupil Scale controls the size of the pupil.
- Enable Internal Parallax (Gems / Eye Layers): Simulates layered interior depth beneath glass, lenses, crystals, and anime irises by ray-offsetting a texture in tangent space across multiple sample steps, creating believable "thickness" under a transparent surface. Internal Layer Texture is the interior depth texture (with its own tiling/offset), Layer Color tints the interior layer and supports the global color-shift timeline, Depth Scale controls how deep the simulated interior sits, Sample Steps sets how many layers of light are traced through it (1–10), Layer Strength scales the layer's opacity, and Emissive Boost adds an internal glow to make the interior surface appear self-lit.
- Enable Skin Diffuse Wrap: Softens the lighting on curved organic surfaces by wrapping light around the shadow terminator, reducing harsh shadow lines. Wrap Amount controls how much light wraps around.
- Enable Hair Specular (Kajiya-Kay): Adds anisotropic highlights styled specifically for hair strands, producing bright streaks aligned with the hair direction. Specular Color tints the highlights, Primary/Secondary Exponent control the sharpness of the two highlight streaks, Specular Strength controls brightness, and Specular Shift moves the highlights along the hair direction.
SDF Face Shadows
Clean, stable anime face shadows using a Signed Distance Field map instead of geometric normals — the standard technique for preventing messy shadow artifacts on stylized faces as the light direction changes.
- Enable SDF Face Shadows: Master toggle.
- Face Shadow Map (SDF): The SDF face shadow texture encoding light threshold gradients (the same maps used by other anime shaders).
- Face Shadow Offset: Offsets the front/back shadow threshold angle.
- Face Shadow Softness: Softens the SDF shadow edge boundary.
- Invert Face Shadow: Inverts the SDF shadow gradient for maps authored with opposite conventions.
Geometric Specular Anti-Aliasing
Reduces specular shimmer, flickering, and firefly artifacts on dense meshes and detailed normal maps. This is especially valuable in VR headsets where high-frequency specular highlights cause distracting visual noise. Based on the Kaplanyan 2016 technique used in AAA game engines.
- Geometric Specular AA: Master toggle to enable the effect.
- Variance: Controls how aggressively the specular lobe is widened based on screen-space normal variation. Higher values produce smoother specular but may lose fine detail. Default:
0.15.
- Threshold: Caps the maximum roughness adjustment to prevent over-blurring on extremely dense geometry. Default:
0.2.
This control only appears when the Lighting Mode is set to Stylized PBR or Standard PBR. It has zero cost when disabled.
Surface Style
Defines the fundamental appearance of the surface, often overriding standard lighting. Only one style can be active at a time.
Crystal
Simulates a refractive, crystalline material. It distorts the view of the texture behind it and can add chromatic aberration for a more stylized look. This effect works best with a base texture enabled.
- Refraction Noise Map: A noise texture used to control the pattern of the distortion.
- Refraction Strength: Controls how strongly the texture is distorted.
- Chromatic Aberration: Simulates color separation by offsetting the red and blue color channels, creating colored fringes at the edges of the distortion.
Galaxy
Renders a texture that appears to have depth and moves independently of the object's rotation, creating a "window into space" effect. This style disables standard scene lighting.
- Galaxy Map: The texture to display inside the object.
- Depth: Creates a 2D parallax effect based on view angle, making the texture appear to have depth.
- Rotation Speed: Rotates the galaxy texture over time.
Skybox
Reflects a cubemap from the inside of the object, making it look like a portal or a window into another environment. This style disables standard scene lighting.
- Skybox Cubemap: The cubemap texture to display.
- Rotation Speed: Rotates the reflected skybox around the vertical axis over time.
Tri-Planar Mapping
Projects a texture onto the model from the top, front, and side, then blends them together. This is an effective way to texture complex models without needing perfect UV maps, as it avoids stretching and seams.
- Tri-Planar Texture: The texture to project onto the model.
- Scale: Controls the size (tiling) of the projected texture.
- Blend Sharpness: Controls how sharply the textures from the three different projections blend into one another. Higher values create a harder edge.
MatCap (Material Capture)
A lighting technique that uses a special "material capture" texture to define an object's complete lighting and reflection information. It's a very fast way to get complex, stylized lighting effects. This style disables standard scene lighting.
- MatCap Texture: The texture that defines the object's appearance. It's typically a sphere rendered with the desired lighting.
- Intensity: A multiplier to control the brightness of the MatCap effect.
- Blend Mode: How the MatCap combines with the material's base color.
Override fully replaces it, Multiply tints it, Additive brightens it, and Screen gives a softer brightening.
- MatCap Mask (R): An optional texture whose Red channel restricts where the MatCap is visible. White areas show the MatCap, black areas fall back to the base color. Its UV Set selector picks between UV0 and UV1.
MatCap 2 (Secondary Layer)
A second, independently controlled MatCap layer blended on top of the first for multi-layer material capture looks (e.g. a stylized base layer plus a glossy rim layer).
- Enable MatCap 2: Toggles the secondary MatCap layer.
- MatCap 2 Texture / Intensity / Blend Mode: The same controls as the primary MatCap (blend modes:
Add, Multiply, Replace, Lighten, Overlay).
- MatCap 2 Mask (R): An optional texture whose Red channel restricts where the second layer is visible, with its own UV Set selector.
- MatCap Normal Perturbation: How strongly the surface normal map perturbs the MatCap sampling direction, letting baked normal detail affect the captured lighting.
- MatCap Perspective Correction: When enabled, corrects the MatCap UVs for per-view perspective so the capture stays stable when viewed from an angle, improving VR comfort.
Iridescence
Creates a rainbow-like effect where the color shifts based on the viewing angle, similar to a soap bubble or an oil slick. This effect is blended over the existing surface color and lighting.
- Color Scale: Controls the frequency of the color shifting across the surface. Higher values create more, tighter rainbow bands.
- Strength: Controls how strongly the iridescent color is blended with the base color.
Glitter
Adds an animated, sparkling glitter effect to the surface. This effect is applied after lighting.
- Blend Mode: Controls how the glitter is blended with the underlying surface color.
Additive can get very bright. Lerp replaces the base color (emissive). Max ensures it's never darker than the glitter color.
- Color: The color of the glitter sparkles. Can be animated with "Animate Hue".
- Scale: Controls the size of the glitter noise pattern. Higher values mean smaller, finer sparkles.
- Sparsity: Controls how many sparkles appear. Higher values mean fewer, more sparse sparkles.
- Shape: Selects the sparkle shape:
Random (the default noise-based sparkles), Circle, Square, or Star. The shape-based options render a tiled grid of that shape instead of random sparkles.
- Use Screen Space: Bases the glitter pattern on screen coordinates instead of the model's UVs. This makes the glitter appear to "swim" across the surface as the camera or object moves.
- Use Scrolling Animation: Changes the animation from sparkles "popping" in and out to a smooth, scrolling noise pattern.
- Pop/Scroll Speed: Controls the speed of the chosen animation style.
Psychedelic
Applies domain-warped fractal Brownian motion (FBM) noise that creates flowing, organic color patterns. The effect is linked to the Global Color Shift timeline for synchronized color animation.
- Coordinate Space: Controls whether the pattern uses world space, screen space, or UV coordinates.
- Hue Shift Scale: Multiplier for how strongly the psychedelic pattern shifts colors.
- Flow Speed: Speed at which the psychedelic noise flows across the surface.
3D Fractal
Renders a volumetric fractal using raymarching techniques. This creates complex, infinite 3D structures that appear to extend infinitely into the object. This style disables standard scene lighting and uses a custom raymarching renderer.
Performance Warning: 3D Fractal uses computationally intensive raymarching. Use low iteration counts (4-8) on mobile/VR platforms. Higher iterations can cause significant frame rate drops.
Fractal Types
- Mandelbulb: The 3D extension of the Mandelbrot set. Creates bulbous, organic shapes with variable power parameter.
- Menger Sponge: A 3D fractal based on repeatedly removing cubes from a larger cube. Creates intricate, sponge-like structures.
- Kaleidoscopic IFS: Iterated Function System with kaleidoscopic symmetry. Creates complex, mirrored patterns.
- Mandelbox: A fractal based on box folding and sphere folding operations. Creates blocky, crystalline structures.
- Julia Set 3D: A complex number extension of the Julia set in 3D space with coupling between dimensions.
- Sierpinski Tetrahedron: The 3D Sierpinski fractal based on tetrahedron subdivision.
- Apollonian Gasket: A fractal based on mutually tangent circles/spheres.
- Burning Ship: A variation of the Mandelbrot set using absolute values, creating "ship-like" structures.
- Tricorn: The conjugate of the Mandelbrot set, creating different symmetry patterns.
- Mandelbulb Power 2: Standard Mandelbulb with fixed power of 2 and higher iteration count.
- Mandelbulb Power 8: Mandelbulb with fixed power of 8, creating more detailed, spiky structures.
- Quaternion Julia: A true 4D quaternion Julia set for mathematically correct quaternion fractals.
- IFS Tetrahedron: Iterated Function System based on tetrahedron vertices.
- Octahedron: Platonic solid fractal based on octahedron symmetry.
- Dodecahedron: Platonic solid fractal based on dodecahedron symmetry with golden ratio proportions.
- Icosahedron: Platonic solid fractal based on icosahedron symmetry with golden ratio reflections.
- Cubic Fractal: Simple fractal based on repeated cube subdivision.
- Hybrid Box-Bulb: Combination of Mandelbox and Mandelbulb techniques for unique hybrid structures.
Core Properties
- Fractal Type: Selects which fractal algorithm to use from the list above.
- Repetition Mode: Controls how the fractal repeats in space.
- Single Instance: One fractal object, fastest performance.
- Repeated (Clipped): Fractal repeats in a grid but is clipped to prevent infinite computation.
- Endless: True infinite fractal, most computationally expensive.
- Scale: Controls the overall size of the fractal structure.
- Animation Mode: How the fractal animates over time.
- None: Static fractal.
- Yaw: Rotates around the Y-axis.
- Pitch: Rotates around the X-axis.
- Roll: Rotates around the Z-axis.
- Tumble: Complex rotation combining multiple axes.
- Sway: Gentle oscillating motion.
- Pulsate: The fractal appears to inflate and deflate.
- Animation Speed: Controls how fast the chosen animation plays.
Fractal-Specific Properties
These properties change based on the selected fractal type:
- Mandelbulb Power: Controls the power parameter (typically 2-8) for bulb-like fractals.
- Iterations: Number of fractal iterations. Higher values = more detail but slower performance. Most fractals work well with 4-12 iterations.
- Box Scale (Mandelbox): Scale factor for box folding operations. Negative values (-2 to -1.5) create interesting visuals.
- Hybrid Scale (Hybrid Box-Bulb): Scale factor for the hybrid fractal. Try values between 1.5 and 3.0.
- Angles (Kaleidoscopic IFS): Rotation angles for the kaleidoscopic IFS symmetry.
- Julia C Constant: The complex/quaternion constant that defines the Julia set shape. Try small values like (-0.2, 0.6, 0.2, 0.2) and animate for morphing effects.
Color Properties
- Fractal Depth Hue Shift: Shifts colors based on raymarching depth for rainbow effects.
- Auto Hue Shift: Automatically animates the color shifting over time.
- Auto Shift Speed: Speed of the automatic color animation.
Overlays
These effects are drawn on top of the base surface.
Grid
Overlays a procedural geometric pattern on the surface. This is a powerful feature for creating sci-fi, holographic, or abstract visuals. It has many properties to customize its appearance and animation.
Core Properties
- Pattern: Selects the geometric pattern from the list below. Each pattern may have unique behaviors or properties. The pattern library is shared with the Procedural Texture feature.
- Color: The color and transparency of the grid pattern. Can be hue-shifted.
- Coordinate Space: A projection selector that maps the pattern onto the model:
UV sticks to the surface, World Space (Triplanar) makes it appear to "swim" over the surface as the object moves, and additional local, screen, planar, spherical, cylindrical, and biplanar projections are available.
- Grid Tiling X/Y: Independent horizontal and vertical tiling multipliers for the pattern.
- Density: Controls the tiling or frequency of the pattern. Higher values mean a denser pattern.
- Sparsity: Controls the spacing between pattern elements. Higher values increase the spacing.
- Thickness / Size / Fill: This property's function changes based on the selected pattern. It can control line thickness, dot radius, or the fill amount for certain patterns.
- Rotation: Rotates the entire grid pattern.
- Use Fill Style: For patterns like Squares, Triangles, and Hexagons, this toggles between an outline and a filled shape. For fractal patterns, it can have a more complex effect on the final look.
Pattern Descriptions
- Noise: A smooth value noise pattern with Octaves, Lacunarity, and Gain controls.
- Voronoi: An organic, cell-like pattern with a selectable style (Distance, Color, Edges). Can be animated to morph over time.
- Stripes: Parallel lines that can be animated or static.
- Dots: A grid of circles. The
Thickness property controls their radius.
- Checkerboard: A standard checkerboard pattern. This is a binary fill pattern (Thickness does not apply).
- Bricks: A classic running-bond brick pattern.
- Hexagons: A honeycomb pattern of hexagonal shapes. Can be outlines or filled.
- Squares, Triangles: Classic tessellating geometric shapes. Can be outlines or filled.
- Chevrons: A pattern of V-shapes.
- Crosshatch: Intersecting diagonal lines. Can be outlines or filled diamonds.
- Barcode: Vertical bars of varying widths.
- Polka Dot Scallop: Overlapping semi-circles in a polka dot arrangement. The
Thickness property controls dot size.
- Rounded Squares: Squares with rounded corners.
- Woven: A pattern that resembles a woven basket or chain-link fence.
- Plaid: Intersecting lines of different thicknesses, creating a plaid or tartan look.
- Houndstooth: A classic checker pattern with broken checks.
- Argyle: A diamond pattern with overlapping circles.
- Scales: A pattern of overlapping semi-circles, like fish scales.
- Diagonal Stripes: A simple pattern of diagonal lines.
- Herringbone: A pattern of interlocking V-shapes, common in flooring and textiles.
- Sierpinski: The Sierpinski Carpet fractal. This is a fill-only pattern (Thickness does not apply).
- Box Fractal: A fractal pattern based on repeating squares. Has its own Use Fill Style toggle.
- Truchet Tiles: A pattern of quarter-circle arcs with random orientations, creating complex, maze-like visuals.
- Truchet Lines: Connected line segments in a maze-like pattern.
- Spirals: Archimedean spirals emanating from the center of the coordinate space.
- Radar: Concentric circles and radial spokes, like a classic radar screen.
- Sine Waves: A pattern of horizontal sine waves.
- Cross Fractal: A fractal based on repeating crosses.
- Mandelbox: A 2D slice of the 3D Mandelbox fractal, creating intricate blocky structures. Has its own Use Fill Style toggle.
Animation
- Pulse Mode: Animates the grid. Intensity pulses the grid's transparency between a defined min/max range. Color pulses the grid's color towards its hue-shifted variant.
- Enable Scrolling: Animates the grid by scrolling it across the surface. For radial patterns like Spirals and Radar, this controls radial (in/out) and angular (spin) motion.
Depth-Based Color
When Use Depth-Based Color is enabled, the grid will change its color when it gets close to another object's surface. This requires scene depth information and may not work with all rendering setups. Depth Color sets the target color, and Depth Range controls the distance of the effect.
Grid Mask
Allows you to use a texture to mask the grid effect, controlling where it appears on your model. This is useful for restricting the pattern to specific areas without needing to create separate materials.
- Use Grid Mask: Toggles the masking feature on or off.
- Grid Mask: The texture used to mask the grid. The grid pattern will only appear where this texture is white (based on the red channel).
- Invert Mask: Inverts the mask, so the grid pattern appears where the mask texture is black.
Detail Texture
Blends a secondary texture over the base material. This is a powerful way to add high-frequency detail, like fabric weaves, scratches, or grunge, without needing a high-resolution base texture.
- Detail Texture: The secondary texture to overlay. It's often a small, tileable grayscale texture.
- Blend Mode: How the detail texture combines with the base color:
Overlay, Multiply, Additive, or Soft Light.
- Intensity: How strongly the detail texture is blended with the base material.
Scanlines
Simulates the look of a retro CRT monitor by overlaying a pattern of dark, scrolling lines. This screen-space effect is great for holographic displays, computer terminals, or retro-futuristic aesthetics.
- Color: The color and transparency of the scanlines. Typically black with some transparency.
- Density: How many scanlines appear on screen.
- Speed: How fast the scanlines scroll.
- Thickness: The thickness of the scanlines.
- Direction: The direction of the scanlines (Vertical or Horizontal).
Interlacing
A simple but effective screen-space effect that darkens every other horizontal row of pixels on the screen. This mimics the look of old interlaced video signals, adding a subtle retro or lo-fi quality to the material.
- Intensity: How dark the interlaced lines are. A value of 1 will make them completely black.
Noise/Grain
Adds a layer of animated noise over the final color, similar to film grain or digital sensor noise. This screen-space effect can be used to add texture, break up smooth gradients, or enhance a lo-fi or cinematic aesthetic. The animation is stepped, not smooth, to better simulate digital noise.
- Color: The color of the noise particles. Can be a solid color or hue-shifted.
- Intensity: The strength of the noise effect.
- Animation Speed: The 'frames per second' of the noise animation. Lower values look like slow-updating static, while higher values resemble fast film grain.
Wetness
Simulates a wet surface by darkening the material, boosting its smoothness, and optionally adding animated rain ripples. Great for rainy scenes, recently drenched props, or watery creatures.
- Wetness Strength: The overall intensity of the wet look.
- Darkening: How much the surface darkens when wet.
- Wet Smoothness: The smoothness boost applied to wet areas, sharpening specular highlights.
- Rain Ripple Map: A normal map used for the rain ripple animation. The ripples use the map's normal data to distort reflections.
- Ripple Scale: The size of the rain ripple pattern.
- Ripple Speed: How fast the ripples animate.
Decal
Overlays up to three independent textures onto the surface like stickers or painted emblems, without needing a separate decal projection setup. Each decal layer has its own texture, UV set, blend mode, strength, and rotation, and can be enabled or disabled individually.
- Enable Decal 1/2/3: Toggles each decal layer on or off.
- Decal Texture: The texture to overlay. Use its Tiling/Offset to position it.
- Decal UV Set: Selects the coordinate channel (UV0 or UV1) for the decal.
- Blend Mode: How the decal blends with the base color (
Alpha Blend, Multiply, Additive, Lighten, or Overlay).
- Strength: The overall opacity/strength of the decal.
- Rotation: Rotates the decal around the center of the UV space (0–360 degrees).
- AudioLink Band / Strength: Each decal has an AudioLink band selector and strength multiplier, letting the decal pulse or fade with the music (e.g. a beat-synced logo or muzzle flash).
PBR Decals
Each of the shader's three decal layers now supports PBR (Physically Based Rendering) overrides. When enabled, a decal can modify the surface's normal map, metallic, and smoothness values in addition to its base color — allowing physically accurate decals like metallic bolts, bumped scars, leather patches, or glossy stickers.
- Affects PBR: Per-decal toggle that enables the PBR properties below.
- Decal Normal Map: A tangent-space normal map applied in the decal's UV region. Blended with the surface normal using the decal's alpha as the blend factor.
- Normal Strength: Controls the intensity of the decal's normal map (range: 0–2).
- Metallic: Overrides the surface metallic value within the decal region (range: 0–1).
- Smoothness: Overrides the surface smoothness within the decal region (range: 0–1).
The PBR overrides are blended using the decal texture's alpha channel multiplied by the decal strength, so they naturally fade at the decal's edges. This feature is available on all three decal layers independently.
Hologram
Simulates a sci-fi holographic projection with animated scanlines, a glowing edge rim, and subtle flicker. It is layered over the existing surface color and lighting, making it ideal for projected displays, force-field emitters, and holographic avatars.
- Hologram Color: The color tint of the hologram projection. Can be hue-shifted.
- Scanline Tiling: The density of the horizontal hologram scanlines.
- Scanline Speed: How fast the scanlines sweep across the surface.
- Rim Power: The falloff sharpness of the hologram's edge glow.
- Hologram Strength: How strongly the hologram blends over the base surface.
- Alpha Modulation: Modulates the material's transparency with the scanline pattern, adding a flickering, translucent quality.
Effects
A collection of miscellaneous visual effects.
Rim Glow
Adds a glow to the edges of the object based on the viewing angle (a Fresnel effect). This is great for highlighting silhouettes.
- Use Gradient: If enabled, uses a gradient texture to color the rim glow instead of a solid color.
- Color / Gradient: The color or texture ramp for the rim glow.
- Power: Controls the falloff of the rim effect. Higher values create a tighter, sharper rim.
- Intensity: The brightness of the rim glow.
- Rim Mode: Switches between
Outer (glow on the outer silhouette edge) and Inner (inverted, glowing toward the interior).
- Rim Depth Mode: Switches the rim response between
Fresnel (based on viewing angle) and Depth (based on scene depth, highlighting where the object is close to other geometry). Rim Depth Width controls the width of the depth-based rim band. Depth mode requires scene depth information.
- Environmental Rim: Tints and modulates the rim glow using ambient spherical harmonics and reflection probes, so the rim reacts to the surrounding environment instead of a fixed color.
Intersection Effect
Creates a visual effect where the material's surface interacts with other objects in the world. This is ideal for force fields, liquid surfaces, or soft proximity indicators. This effect requires the material's Render Mode to be set to Transparent or Additive.
- Mode: Selects the effect's behavior.
Color fades to a specified color at the intersection point. Alpha fades out the object's transparency at the intersection point, creating a soft blend.
- Color: The color that appears at the point of intersection (only in Color mode).
- Distance: The distance from an intersection over which the effect will fade in.
Pulse
Adds a pulsing animation to the material's emission strength, creating a "heartbeat" effect.
- Speed: How fast the emission pulses.
- Intensity: How bright the pulse is.
Outline
Renders a solid outline around the object. The outline will be correctly hidden by effects like Dissolve and Clipping Mask.
Performance Impact: Outlines can be expensive as they require an additional rendering pass.
- Color: The color of the outline.
- Outline Space: Chooses between Screen Space (constant screen pixel width), Local Space (scales with both distance and object scale), and World Space (scales with distance, independent of object scale).
- Width: The width of the outline.
- Use Vertex Color for Width: Uses the mesh's vertex colors (Red channel) to control the outline width, allowing for artistic variation.
- Outline Min Width / Max Width: Clamp the outline width so it never grows past Max Width at close range or shrinks below Min Width in the distance, preventing outlines from overwhelming or disappearing at different camera distances.
- Outline Normal Source: Selects which vertex stream supplies the smoothed normals used to push the outline out:
Mesh Normals, Vertex Colors, UV2, or UV3. Picking a baked vertex stream (Vertex Colors / UV2 / UV3) eliminates the split-normal seams common on low-poly meshes.
- Outline Noise Scale / Speed / Strength: Applies an animated noise jitter to the outline vertices for a lively, hand-drawn or burning edge effect. Scale sets the noise frequency, Speed its animation rate, and Strength how far the vertices jitter.
- Outline Pulse Speed / Strength: Makes the outline "breathe" by oscillating its width over time. Pulse Speed sets the oscillation rate and Pulse Strength sets the amplitude of the pulsing.
Outline Texture & Gradient
- Outline Texture: An optional texture that tints and modulates the outline color. Its UV Set selector picks between UV0 and UV1, and Scroll Speed X/Y scroll the texture across the outline.
- Enable Outline Gradient: Tints the outline from a Gradient Top Color to a Gradient Bottom Color based on the vertical position on the object, for a two-tone gradient outline.
Outline Stencil Buffer Controls
Allows independent stencil testing and writing specifically during the inverted-hull outline pass. This is crucial for preventing outlines from overlapping or dirtying inner face meshes, hair strands, or layered clothing.
- Stencil Ref: The reference stencil value for the outline pass (0–255).
- Read / Write Mask: Bitmasks controlling which bits of the stencil buffer the outline pass reads or writes.
- Comparison (Comp): Stencil comparison function against the current buffer (e.g.
NotEqual to skip drawing outlines over interior surfaces stamped with matching stencil IDs).
- Pass / Fail / ZFail: Stencil buffer operations performed on pass, test failure, or depth test failure.
Shell Fur Extrusion
Available when using the FireRat/FireRatShader_Fur BRP or FireRat/FireRatShader_URP_Fur URP master shader variants. Extrudes up to 8 concentric shell layers along vertex normals to render volumetric fur, velvet, and plush textures.
- Shell Layers: Number of active extruded shell passes (1 to 8). Inactive passes collapse to zero vertices with 0% rasterization cost.
- Length: Physical extrusion distance of the fur strands in object/world units.
- Fur Mask Texture: Grayscale noise map controlling strand distribution and density across the surface.
- Density: Tiling frequency of the fur strand noise pattern.
- Tip Thinning: Progressively sharpens strand alpha thresholds toward outer shell layers.
- Gravity Vector: Direction and magnitude of physical gravity pulling fur tips downward.
- Wind Speed & Strength: Procedural wave oscillation simulating breeze rustling through fur.
- Root & Tip Colors: Two-tone vertical color gradient from strand base to outer tip.
- Root AO Shadowing: Simulates ambient occlusion darkening at the base of the fur coat.
Ripple Effect
Creates a concentric ripple effect that distorts vertices and color, emanating from a point in the object's UV space.
- Center (UV): The origin of the ripples in UV space (X,Y).
- Ripple Count: The number of concentric ripple rings.
- Fadeout Radius: The distance from the center at which the ripples fade out completely.
- Width: The width of each individual ripple ring.
- Color: The color of the ripples.
- Strength: The brightness of the ripple color.
- Distortion Strength: How much the ripple displaces the model's vertices along their normals.
- Progress / Animate: Manually control or automatically animate the ripple's phase.
Vertex Animation Texture (VAT)
Applies pre-baked vertex animation from a texture instead of a Skinned Mesh Renderer. Each row of the texture is a frame of the animation. Useful for pre-baked cloth, fluids, destruction, or any heavily animated mesh that needs to stay performant.
- Position Texture: The VAT texture containing the position offsets. Each row is a frame.
- Frame Count: The total number of animation frames in the texture.
- Speed: The playback speed of the vertex animation.
- Bounds Min / Bounds Max: The bounds used to remap the packed vertex positions back to world space. These must match the bounds used when baking the animation.
PS1 Retro Vertex Snapping
Quantizes vertex positions to a coarse grid to emulate the classic wobbly PlayStation 1 aesthetic. Great for retro-styled avatars and worlds, especially combined with pixelation and affine-style textures.
- Enable PS1 Vertex Snapping: Master toggle.
- Snap Resolution: The grid resolution vertices snap to (higher = finer wobble).
- Snap Space: Chooses between
Screen Space (classic console look) and Object Space snapping.
LookAt Billboarding
Dynamically rotates mesh vertices so the object always faces the active camera — useful for sprites, eye highlights, floating companions, and particles that should never be seen edge-on. Applied consistently in shadow, depth, and motion-vector passes.
- Enable LookAt Billboarding: Master toggle.
- Mode:
Full 3D faces all axes toward the camera; Y-Axis Only rotates horizontally while staying upright.
- Strength: Blends between normal orientation and full billboarding (0–1).
Screen-Space Refraction
URP Only Provides true screen-space refraction for glass, water, and crystal-like materials by sampling the camera's opaque texture with UV offsets derived from the surface normal. This creates realistic distortion of the background scene visible through transparent geometry.
- Screen Refraction: Master toggle to enable the effect.
- Refraction Strength: Controls the intensity of the UV distortion (range: 0–1). Higher values produce more pronounced refraction.
- Index of Refraction (IOR): The refractive index of the simulated material (range: 1.0–2.0). Water is approximately
1.33, glass is approximately 1.5.
URP Only: This feature uses URP's _CameraOpaqueTexture and is not available in the Built-in Render Pipeline. The BRP variant has the properties for material compatibility but the effect is a no-op. Ensure "Opaque Texture" is enabled in your URP Renderer Settings.
Emission Pulse
Animates the emission intensity over time using various waveform patterns, creating pulsing, breathing, or flashing glow effects without requiring any animation controllers or scripts.
- Emission Pulse: Master toggle to enable pulsing emission.
- Pulse Speed: The frequency of the pulse animation.
- Pulse Min / Max: The range of emission intensity to pulse between.
- Pulse Mode: Selects the waveform shape:
Sine (smooth), Square (on/off), Triangle (linear ramp), Sawtooth (ramp up, snap down).
Outline Width Map
Allows per-vertex control over the outline thickness using a texture map. This enables artistic effects like thicker outlines on silhouette edges and thinner outlines on interior details.
- Outline Width Map: A grayscale texture where white = full outline width and black = zero outline width. Multiplied with the global Outline Width value.
This control appears within the Outline settings when Outline is enabled.
Transitions
Effects used to make a material appear or disappear.
Proximity Effects
Triggers visual surface transformations when approaching or moving away from a reference position (the active VR camera / player head, the object pivot, or a custom world position).
- Enable Proximity Effect: Master toggle.
- Proximity Mode: Selects the reference position:
Camera / Player: Distance is calculated to the VR camera / player's head.
Object Pivot: Distance is calculated to the object's transform origin.
Custom World Position: Distance is calculated to a fixed (X,Y,Z) world coordinate set in Custom Position.
- Proximity Action: Visual response applied as proximity factor increases:
Glow / Emission: Adds an emissive glow (Proximity Color).
Dissolve / Fade: Fades out alpha transparency smoothly.
Dither Transparency: Clips surface pixels using a screen-door dither pattern.
Color Tint: Blends surface albedo toward Proximity Color.
- Radius: Maximum distance threshold at which proximity begins.
- Softness: Soft-edge transition falloff as a percentage of the radius.
- Invert Proximity: Inverts distance response so the effect triggers when moving far away instead of close.
- Proximity Color / Animate Hue: HDR color with full support for the Global Color Shift timeline.
Dithered Transparency
Fades the object out with a Bayer-matrix screen-door stipple instead of alpha blending. Dithered cutouts behave like opaque geometry, so they avoid transparency sorting artifacts — ideal for transparent fabrics, hair, and cross-fades in VR.
- Dither Strength: Controls how aggressively the pattern dissolves the surface (
0 = sharp cutout, 1 = full stipple).
Chroma Key
Masks out a specific color from the final output, creating a green-screen or blue-screen effect. Useful for live streaming overlays, video production, or creative transparency effects.
- Chroma Key: Master toggle to enable chroma keying.
- Key Color: The color to remove from the output.
- Threshold: Controls how closely a pixel must match the key color to be removed. Lower values create a tighter key (more precise), higher values remove a broader range of similar colors.
Distance Fade
Fades the object out based on its distance from the camera. Useful for level-of-detail (LOD) systems.
- Start Distance: The distance from the camera where the fade begins.
- Range: How quickly the object fades out over distance.
Near Camera Fade
Fades the object out when the camera gets too close, preventing transparent materials from filling the view or clipping through the player's head in VR.
- Near Camera Fade: Toggles the proximity fade.
- Near Camera Fade Radius: The distance from the camera at which the fade begins.
- Near Camera Fade Range: The distance over which the object fully fades out.
Dissolve
Makes the object appear or disappear using a procedural pattern, often with a glowing edge.
Common Properties
- Amount: The progress of the dissolve effect (0-1).
- Edge Width: The width of the glowing edge on the dissolve line.
- Edge Color / Gradient: The color or texture ramp for the glowing edge.
- Animate: Automatically animates the dissolve amount over time. You can choose between a simple Ping-Pong/Loop mode or an Advanced Timing mode that gives you full control over the animation cycle.
Mode-Specific Properties
- Mode: The pattern of the dissolve effect (Noise, Wave, Spherical, Glitch).
- Noise Mode: Uses a Dissolve Map texture to control the pattern.
- Wave Mode: Uses a Direction vector and a Scale value to control a directional wipe.
- Spherical Mode: Uses a world-space Origin point and a Scale value to control a spherical reveal. Can be set to use the object's center.
- Glitch Mode: Uses a Block Size to create a blocky, digital dissolve. The block pattern is hashed in world space, so it stays perfectly stable and VR-safe (consistent across both eyes) regardless of camera movement.
Planar Wipe
Reveals the object with a smooth, directional wipe across its surface. Great for dramatic entrances.
- Direction: The direction the wipe travels across the object.
- Progress: The progress of the wipe effect.
- Hardness: The sharpness of the wipe's edge.
- Animate: Automatically animates the wipe progress over time. You can choose between a simple Ping-Pong/Loop mode or an Advanced Timing mode that gives you full control over the animation cycle.
Vertex Collapse
Animates the model's vertices collapsing into its center point, as if being sucked into a black hole.
- Amount: The progress of the collapse effect (0=Normal, 1=Collapsed).
- Animate: Automatically animates the collapse amount over time. You can choose between a simple Ping-Pong/Loop mode or an Advanced Timing mode that gives you full control over the animation cycle.
Effect Distance LOD
Automatically disables expensive shader effects when the object is far from the camera, providing a significant performance boost for distant objects without requiring Unity LOD Groups. The transition is smooth and configurable.
- Effect LOD Start Distance: The camera distance at which effects begin to fade out.
- Effect LOD End Distance: The camera distance at which effects are fully disabled.
Effects controlled by the LOD system include procedural textures, overlays, surface styles, and other expensive per-pixel operations. Core rendering (base texture, lighting, normal maps) is always preserved regardless of distance.
Advanced Settings
Low-level controls for rendering and performance.
Parallax Mapping
Uses a height map to create the illusion of depth and relief on a flat surface. This can add significant detail without extra geometry, but can be performance-intensive.
- Height Map: A grayscale texture where white is high and black is low.
- Strength: How deep the parallax effect appears.
- Enable Parallax Occlusion Mapping (POM): Upgrades the effect to multi-step height tracing for a much higher quality depth result with proper self-occlusion. Performance-intensive and only available on the High performance level. Max Steps is the step limit used at steep angles, and Min Steps the reduced step count used at glancing angles.
Clipping Mask
Uses a texture to perform a hard clip on the material, making parts of it invisible. Unlike transparency, this is an all-or-nothing effect that works in any render mode.
- Clipping Mask: The texture used for clipping.
- Mask Scroll Speed X/Y: Scrolls the mask texture to create animated effects.
- Mask Channel: Selects which color channel (R, G, B, or A) of the texture to use for the mask.
- Invert Mask: Inverts the mask logic, making visible areas invisible and vice-versa.
Render States
- Culling: Controls which faces of the mesh are rendered (Back, Front, or Off for double-sided).
- Shadow Culling: Independent cull mode for the ShadowCaster pass.
Back (default) is faster for closed meshes; use Off for double-sided shadows on hair, cloth, or foliage.
- Polygon Offset Factor / Units: Applies a depth bias to resolve z-fighting between co-planar surfaces (e.g. decals, blush overlays, layered clothing).
- Source/Destination Blend: Low-level control over how colors are blended in
Transparent mode. The Additive render mode sets these automatically. Only change if you know what you're doing!
Camera & Mirror Visibility
Controls from which cameras the material is rendered. Useful for hiding parts from mirrors, showing elements only in VR headset eyes, or creating desktop/stream-exclusive effects. Enforced consistently across the main pass as well as shadow, depth-normals, depth-only, and motion-vector passes.
- Visibility Mode:
Show Always, Hide In Mirrors, Show Only In Mirrors, VR Headset Eyes Only, or Desktop Stream Spectator Only.
- Mirror Detection Method: How mirror/reflection cameras are identified:
Auto Oblique And Inverted Transform (recommended), Oblique Matrix Only, or Inverted Transform Only.
- Custom Camera Filter: A layer mask for fully custom per-camera control.
Stencil Buffer
The Stencil Buffer is an invisible GPU "mask layer" for your screen. Think of it like painter's masking tape applied pixel-by-pixel onto the screen.
Out of the box, the default settings (Comp = Always, Pass = Keep) do nothing—the shader simply renders normally on every pixel. But when configured, it allows materials on different objects to communicate with each other visually without touching C# code.
Common Use Cases (Why It's There)
- Portals & Magic Windows
- Object A (The Portal Doorframe): Draws an invisible mask by setting
Ref = 1 and Pass = Replace. It "stamps" the number 1 onto the screen pixels where the door is.
- Object B (The Fantasy World inside): Sets
Ref = 1 and Comp = Equal. It will ONLY render on pixels that have the number 1 stamped on them. From any other angle or outside the doorframe, Object B is completely invisible!
- X-Ray & Wall See-Through Effects
- The main character writes
Ref = 2, Pass = Replace when visible.
- An X-Ray outline material sets
Ref = 2, Comp = NotEqual. When occluded behind a wall, it draws the glowing silhouette only where the main body isn't directly visible.
- Decal & UI Masking: Restrict complex geometric effects (like a holographic grid or glowing scanline) so they only show up inside a specific 3D volume, badge, or lens on an avatar.
What Each Inspector Setting Means (In Plain English)
| Setting |
Analogy / Meaning |
Default |
| Stencil Ref |
The ID Tag (0–255): The number stamp you want to write or look for (e.g. 1). |
0 |
| Comparison (Comp) |
The Rule: When should this pixel render?
Always — Render everywhere (default).
Equal — Render ONLY where screen pixel ID matches Ref.
NotEqual — Render ONLY where screen pixel ID is different.
Never — Never render. |
Always |
| Pass |
Action on Render Success: What to do to the screen pixel ID when this object draws.
Keep — Leave screen pixel ID untouched (default).
Replace — Overwrite screen pixel ID with our Ref number.
Zero — Reset screen pixel ID to 0. |
Keep |
| Fail / ZFail |
What to do if the stencil test fails (Fail) or depth/wall test fails (ZFail). |
Keep |
| Read / Write Mask |
Bitwise masks (advanced, usually left at 255). |
255 |
Quick Example Setup (Portal / Magic Window)
If you want to create a magic portal window:
- Mask Material (Door Window):
- Render Mode:
Opaque or Cutout
- Stencil Ref:
1
- Pass:
Replace
- Comparison:
Always
- Hidden Object Material (Object inside):
- Stencil Ref:
1
- Comparison:
Equal
- Pass:
Keep
Render State Overrides
Advanced hardware-level rendering controls for specialized effects and workflows. These settings directly control GPU pipeline state and should be used with care.
- Depth Test (ZTest): Controls when a pixel passes the depth test. Default is
LEqual (standard rendering). Set to Always to render through walls (useful for VR overlays, HUD elements, X-ray glasses). Other options: Less, Greater, GEqual, Equal, NotEqual, Never.
- Color Write Mask: Controls which color channels are written to the framebuffer. Default is
RGBA (all channels). Set to 0 to create invisible geometry that only writes to the stencil or depth buffer. Individual channels (R, G, B, A) can be toggled independently.
Warning: Changing ZTest to anything other than LEqual can cause objects to render in unexpected order or appear through walls. Use with care, especially in VR.
VRChat Fallback Tag
Sets the material's VRCFallback override tag, which controls which standard shader VRChat swaps in when custom shaders are blocked by safety settings (e.g. when a viewer hides custom shaders or on incompatible platforms).
- VRChat Fallback Tag: Selects the fallback shader (
Toon, Standard, Unlit, VertexLit, Cutout, Transparent, and more).
Picking a fallback that matches your render mode keeps the avatar looking reasonable instead of flashing white for users with custom shaders hidden.
HSV Mask
A texture-driven mask that controls where HSV (Hue, Saturation, Value) color adjustments are applied. This allows selective color grading on specific parts of the material while leaving other areas untouched.
- HSV Mask Texture: A grayscale texture where white areas receive the full HSV adjustment and black areas are unaffected.
Shader Diagnostic & Debug View HUD
Enables real-time in-viewport inspection of intermediate lighting and shading buffers for debugging material setups and spotting rendering issues.
- Enable Shader Debug View: Master toggle enabling diagnostic buffer isolation.
- Debug View Mode: Selects which diagnostic channel is rendered directly to the screen:
Off — Standard final color output.
BaseColor — Unlit albedo color.
Normal — Tangent-space perturbed normal vector.
WorldNormal — World-space geometric/shading normal.
Smoothness — Surface smoothness value.
Metallic — Surface metallic value.
DirectShading — Direct scene light attenuation and cel shadow mask.
Roughness / GI — Surface roughness and indirect diffuse irradiance.
Emission — Isolated HDR emissive buffer.
AudioLink — Live AudioLink 4-band spectrum diagnostic visualization.
TexelDensity — World-space UV texel density checkerboard to identify stretching or over/under-sampling.
Complexity — Heatmap visualization of active feature complexity.
- Material Performance & Stats HUD: Displays live counts of active shader keywords, total exposed properties, current render queue, and shader variant names directly at the bottom of the inspector foldout.
Audio Link
Overview
AudioLink allows shader visuals, textures, colors, and vertex deformations to react dynamically to live world audio in VRChat and Unity environments. FireRatShader provides full AudioLink support across both pipelines — BRP and URP — including per-feature audio modulation, a standalone Audio Spectrum Visualizer (FFT frequency analysis), and an Audio Waveform Visualizer (real-time oscilloscope and 3D vertex mesh displacement).
When the AudioLink package is present in your project, the shader reads frequency bins, raw audio waveforms, and theme color data directly from the AudioLink texture. In the Unity Editor, the built-in AudioLink Editor Companion automatically emulates live audio data from any playing AudioSource, allowing you to preview and fine-tune your visualizers in the Scene view without entering Play Mode or uploading your avatar to VRChat.
Per-Feature AudioLink Controls
In addition to dedicated visualizers, many built-in shader effects feature integrated AudioLink modulation toggles. When enabled, the effect's intensity, speed, or displacement scales proportionally with the amplitude of a chosen frequency band.
- Pulse: Modulates the Pulse effect's emission brightness and expansion radius with the music beat.
- Emission: Scales the emission strength with a chosen band, and the separate AudioLink Blink control stroboscopically blinks the glow on the beat.
- Color Shift: Dynamically accelerates or slows the global Hue Shift animation speed in response to audio energy.
- Vertex Distortion: Scales the amplitude of vertex glitch and displacement effects with the music rhythm.
- Procedural Texture: Modulates the procedural pattern's scale and speed with audio amplitude.
- Grid: Modulates the grid overlay's intensity with the chosen band.
- Dissolve: Drives the dissolve amount with audio, letting objects materialize and dematerialize on the beat.
- Fresnel Transparency: Pulsates the fresnel edge transparency with the music.
- Glitter: Brightens the sparkles with the chosen band for a beat-synced shimmer.
- Psychedelic: Boosts the psychedelic flow and color shift with audio energy.
- 3D Fractal: Modulates the fractal scale and animation speed with the music.
- Rim Glow: Brightens the rim with the chosen band.
- Outline: Modulates the outline intensity with the music.
- Ripple: Drives the ripple progress and strength from audio.
- Vertex Collapse: Collapses and expands the mesh to the beat.
- Glitch Scanlines: Modulates scanline flicker intensity and scroll speed with audio signal levels.
- Decals: Each of the three decal layers has its own band selector and strength, letting logos or effects pulse with the music.
Audio Bands
Each feature link provides a Band selector and an independent Strength multiplier:
- Bass: Sub-bass and kick drum frequencies (approx. 0–150 Hz). Best for rhythmic pulsing, heartbeats, and beat tracking.
- Low-Mid: Snare drums, bass guitar, and low vocal fundamentals (approx. 150–500 Hz).
- High-Mid: Lead guitars, brass, synths, and vocal presence (approx. 500–2,000 Hz).
- Treble: Hi-hats, cymbals, acoustic transients, and high-frequency "air" (approx. 2,000–20,000 Hz).
- Strength: Multiplier for the audio response (0 = disabled/no modulation, higher values amplify response).
Global Audio Reactivity Controls
Global controls that shape how every AudioLink reading responds to audio. They apply to all per-feature links and both visualizers.
- AudioLink Reactivity Smoothing: Smooths the audio response over time, damping sudden spikes and jitter for a more stable, reactive feel. Higher values smooth more.
- AudioLink Min Floor: Remaps the lower bound of the audio value range, raising the quiet floor so weak signals never fully drop out.
- AudioLink Max Ceiling: Remaps the upper bound of the audio value range, compressing or expanding the loudest peaks.
- Avatar Param Fallback: When enabled, falls back to local avatar parameters / OSC inputs when no world AudioLink source is present, so your avatar's audio-reactive features still respond to your own music outside of world instances.
Per-Band Delay & Timing (History Buffer)
Independent time delays per frequency band that offset audio readings along AudioLink's rolling history buffer, letting different features react at slightly different moments of the same sound (e.g. a beat that hits the bass rows first and ripples up through the treble rows). Each of Bass Delay, Low Mid Delay, High Mid Delay, and Treble Delay shifts that band's lookups into the past; higher values delay further. This is applied consistently to all AudioLink-driven features and both visualizers.
Temporal Smoothing
FireRatShader's Audio Spectrum and Waveform visualizers support true temporal (time-based) smoothing, which is independent of the Edge Softness control. Edge Softness only softens the visual edges of bars, curves, and scope strokes; it does not smooth audio over time. Temporal Smoothing damps jitter and flicker in the audio signal itself, producing stable, fluid reactive motion.
Audio Smoothing Mode
Set Audio Smoothing Mode (under AudioLink Visualizers → Global AudioLink Controls) to choose the smoothing strategy:
| Mode | Name | Behavior | Performance |
0 |
Raw |
No temporal smoothing. Visualizers read the live AudioLink frame directly (identical to the original behavior). |
Zero overhead — no extra texture lookups or math. |
1 |
Frame Blend |
Blends the current AudioLink frame with the previous frame (2-frame exponential moving average). Controlled by Spectrum Temporal Smoothing. Works for the spectrum; the waveform has no AudioLink history, so it remains live in this mode. |
Two samples per tap. Negligible cost. |
2 |
Temporal Buffer |
Reads a dedicated Custom Render Texture (CRT) that maintains a persistent exponential-moving-average buffer of the spectrum and waveform, with independent attack/release envelopes. Smoothed Audio CRT must be assigned. The Spectrum / Waveform Temporal Smoothing sliders blend between the live and buffered signal. |
One extra texture sample per tap. The CRT asset auto-updates on the GPU each frame while it exists. |
Setting up the Temporal Buffer (CRT)
- In the Project window, create Assets → Create → Rendering → Custom Render Texture. Name it e.g.
FireRatAudioSmoothing.
- Set its size to 128 × 2, Color Format = R Float, and Update Mode = Realtime.
- Assign its Update Shader to
FireRat/AudioSmoothingCRT (ships with the shader).
- On the CRT asset, tune Attack (e.g.
0.02s, fast rise) and Release (e.g. 0.35s, slow fall) — the asymmetric envelope gives punchy attacks and smooth decays.
- On the FireRat material, set Audio Smoothing Mode = Temporal Buffer and drag the CRT into the Smoothed Audio CRT slot.
Performance & Best Practice
- Raw and Frame Blend incur no cost beyond a couple of extra samples and never sample the CRT, so leaving the mode on Raw has zero GPU overhead.
- The CRT only consumes GPU time while the asset exists and is set to Realtime. If you are not using Temporal Buffer mode, you can delete the CRT asset (or set its Update Mode to On Demand) to remove that cost entirely.
- All FireRatShader variants across both render pipelines — BRP (
FireRatShader, FireRatShader_Fur, FireRatShader_TwoPass) and URP (FireRatShader_URP, FireRatShader_URP_Fur, FireRatShader_URP_TwoPass) — expose identical temporal-smoothing controls.
Audio Spectrum Visualizer
The Audio Spectrum Visualizer performs real-time Discrete Fourier Transform (DFT / FFT) frequency analysis directly on the shader, breaking incoming sound down into individual frequency bins from sub-bass to treble.
Spectrum Modes
| Mode |
Name |
Description |
Mode-Specific Parameters |
0 |
EQ Bars |
Renders discrete vertical equalizer bars resembling physical DJ mixer displays or studio graphic equalizers. Each bar samples an averaged frequency sub-band with configurable spacing and edge anti-aliasing. |
Bar Count: Number of discrete frequency bars across the span (4–128).
Bar Gap: Horizontal gap/spacing between adjacent bars (0–0.5).
Smoothness: Anti-aliasing softness at bar peaks.
|
1 |
Continuous Curve |
Traces a smooth, continuous mathematical FFT frequency curve with 3-tap neighbor smoothing. Includes an optional semi-transparent filled area underneath the curve. |
Line Thickness: Stroke thickness of the spectrum curve line (0.001–0.1).
Fill Alpha: Opacity of the shaded region beneath the curve (0–1).
Smoothness: Line anti-aliasing softness.
|
2 |
Radial Spectrum |
Transforms the frequency spectrum into a 360-degree circular radar display radiating outward from the center point, creating an energetic glowing aura, circular ring gauge, or techno-shield. |
Radial Inner Radius: Radius of the central circular cutout hole (0–0.5).
Edge Thickness: Softness and width of the outer radial frequency boundary.
Smoothness: Angular and radial transition smoothness.
|
3 |
2D Waterfall Spectrogram |
Displays a continuous temporal history heatmap of audio frequencies over time. Frequencies run horizontally while time scrolls vertically, creating a rich visual soundscape spectrogram. |
Directly samples AudioLink's multi-row history buffer.
Gain: Color sensitivity and response range.
Mirror: Symmetrical horizontal frequency reflection.
|
Spectrum Controls
- Enable Audio Spectrum: Master toggle for the spectrum visualizer. When disabled, all spectrum shader code is completely compiled out.
- Spectrum Mode: Selects between
EQ Bars, Continuous Curve, Radial, and Waterfall.
- Gain: Signal amplification multiplier (0.1–10). Useful for boosting sensitivity on quiet audio tracks or soft world audio.
- Logarithmic Scale: When enabled, applies a power-scaled perceptual curve to frequency distribution. This expands the bass and mid-range regions while compressing high treble, mirroring human auditory perception.
- Mirror: Folds the spectrum horizontally around the center (0.5), creating a symmetrical dual-wing visualizer.
- Edge Softness: Controls the spatial anti-aliasing softness of bar edges, curve strokes, and radial boundaries (geometric edge AA). Temporal response damping and smoothing is handled by the shader's global AudioLink Reactivity Smoothing control (see Global Audio Reactivity Controls above).
- Intensity: Overall HDR brightness multiplier (0–5). Values above 1.0 produce vibrant post-processing bloom.
Audio Waveform Visualizer
The Audio Waveform Visualizer renders the raw time-domain audio signal (oscilloscope trace, waveform ribbon, circular polar loop, stereo Lissajous figures, or 3D vertex mesh displacement), capturing instantaneous sound wave amplitude and phase.
Waveform Modes
| Mode |
Name |
Description |
Mode-Specific Parameters |
0 |
Oscilloscope |
Simulates an authentic cathode-ray tube (CRT) or digital laser oscilloscope. Draws a vibrant neon beam tracing the audio voltage over time, complete with a sharp inner core and exponential outer bloom glow. |
Cycles: Number of waveform periods visible across the span (0.5–8).
Line Thickness: Stroke width of the sharp inner beam (0.001–0.1).
Glow Intensity: Brightness and radius of exponential bloom glow (0–5).
|
1 |
Ribbon |
Renders a solid bipolar audio waveform filled symmetrically from the center line (Y = 0.5), similar to visualizers in modern digital audio workstations (DAWs) and SoundCloud waveforms. |
Cycles: Number of waveform periods shown (0.5–8).
Smoothness: Anti-aliasing sharpness at the upper and lower waveform boundaries.
Features an automatic edge-fade gradient for visual depth.
|
2 |
Polar Ring |
Wraps the time-domain waveform into a 360-degree circular loop around a center point. The ring pulses and distorts radially in response to incoming audio waves. |
Polar Base Radius: Unmodulated resting radius of the circular ring (0.01–0.5).
Cycles: Number of wave undulations around the circle (0.5–8).
Line Thickness & Glow: Core thickness and neon bloom intensity.
|
3 |
Lissajous X-Y Scope |
A stereo phase-space oscilloscope plotting the Left channel on the X-axis against the Right channel on the Y-axis. Produces intricate, hypnotic geometric loops, circles, and figure-8 phase patterns depending on stereo width and phase correlation. |
Evaluated with an unrolled 64-sample phase-space trajectory loop.
Line Thickness: Trace beam thickness (0.001–0.1).
Glow Intensity: Exponential glow bloom along the trajectory.
|
4 |
Vertex Displacement |
Deforms the 3D model's actual geometry in the vertex shader, displacing vertices along their surface normals in real-time based on the local audio waveform value. Ideal for audio-reactive speakers, pulsating orbs, and dancing avatar elements. |
Displacement Strength: Maximum vertex displacement distance along mesh normals (0–1).
Uses vertex-safe LOD texture sampling for full single-pass VR compatibility.
|
Waveform Controls
- Enable Audio Waveform: Master toggle for the waveform visualizer. When disabled, all waveform shader code is completely compiled out.
- Waveform Mode: Selects between
Oscilloscope, Ribbon, Polar, Lissajous, and Vertex Displacement.
- Channel: Selects the audio input channel:
Mono: Summed average of Left and Right audio channels (L + R) * 0.5.
Left: Samples only the discrete Left stereo channel.
Right: Samples only the discrete Right stereo channel.
- Cycles: Controls how many complete waveform repetitions are displayed across the coordinate space (0.5–8 cycles). (Applicable to Oscilloscope, Ribbon, and Polar modes).
- Gain: Multiplier for waveform amplitude and vertical/radial deflection (0.1–10).
- Line Thickness: Adjusts the stroke width of the central beam in Oscilloscope, Polar, and Lissajous modes.
- Glow Intensity: Controls the exponential bloom falloff radius and brightness around neon beam traces.
- Edge Softness: Controls spatial edge anti-aliasing softness for line borders and filled ribbon silhouettes.
- Intensity: Master brightness multiplier (0–5).
- Displacement Strength: (Vertex Displacement mode only) Multiplier for normal displacement distance.
Shared Visualizer Controls
Both the Audio Spectrum and Audio Waveform visualizers provide a consistent suite of color, coordinate projection, spatial transformation, and blending options.
Color Modes
- Solid (
0): Renders the entire visualizer using a single solid color (Color).
- Frequency Gradient / Velocity (
1):
- Spectrum: Smoothly blends from Color (for low bass frequencies) to High Frequency Color (for high treble frequencies). In Waterfall mode, this serves as a 2-tone thermal heatmap.
- Waveform: Dynamically shifts from Color at rest toward Intensity Color based on instantaneous waveform velocity and signal power.
- Hue Shift (
2): Animates the entire visualizer through a synchronized hue cycle over time. Hue Shift Speed controls the cycling rate.
- Rainbow Gradient (
3): Generates a rich, multi-hue spectral rainbow distributed across frequency bands (Spectrum) or flowing along the waveform curve (Waveform), with optional speed animation via Hue Shift Speed. In Waterfall mode, this provides a vibrant full-spectrum thermal laboratory spectrogram.
- AudioLink Theme (
4): Automatically samples the 4 world theme colors defined by the AudioLink theme system in VRChat worlds, ensuring seamless visual cohesion with world-reactive lighting installations.
Projection Spaces
The visualizers can be projected onto the surface using several coordinate frames:
- UV (
0): Maps directly into the mesh's UV0 texture coordinates. Follows the model's skinning and texture mapping.
- Screen (
1): Projects in screen/viewport space. The visualizer remains fixed relative to the player's camera view, creating a HUD or lens overlay effect.
- World (
2): Projects onto the horizontal world-space XZ plane. The visualizer remains locked to world coordinates, ideal for dancefloors, stages, and ground decals.
- Local (
3): Projects onto the object's local-space XZ plane, moving and rotating with the object while ignoring internal mesh UV layout.
Transform Controls
- Scale (Vector2): Tiling and aspect ratio multiplier along the X and Y axes.
- Offset (Vector2): Positional offset to reposition the center of the visualizer.
- Rotation (Range 0–360°): Rotates the visualizer around its center point (0.5, 0.5) in degrees.
Blend Modes
- Additive (
0): Adds the visualizer's emissive color directly onto the surface lighting (finalColor += visualizer.rgb * alpha). Ideal for holographic displays, laser beams, and glowing neon effects.
- Emissive Lerp (
1): Linearly interpolates the surface color toward the visualizer's color based on opacity (finalColor = lerp(finalColor, visualizer.rgb, alpha)). Useful for solid UI panels, opaque LED screens, and painted-on visualizer dials.
Performance Considerations & Best Practices
Zero-Cost When Disabled: All AudioLink visualizer features are protected by shader keywords (_USE_AUDIO_SPECTRUM_ON and _USE_AUDIO_WAVEFORM_ON). When a visualizer is toggled off in the material inspector, all associated variables, functions, and texture fetches are completely eliminated from the compiled shader variant, incurring 0.00% GPU performance cost.
- Lissajous X-Y Scope: Evaluates phase-space stereo curves using a highly optimized, unrolled 64-sample search loop. It executes efficiently on desktop GPUs, but on mobile/Quest standalone avatars, simpler modes like
Oscilloscope or Ribbon are recommended for maximum battery efficiency.
- Waterfall Spectrogram: Reads directly from AudioLink's pre-computed temporal history buffer rows using a single texture fetch per pixel. It requires no additional compute passes or CPU memory overhead.
- VR & Single-Pass Instancing: Both visualizers sample audio data textures using LOD-explicit sampling (
SAMPLE_TEXTURE2D_LOD URP / tex2Dlod BRP), ensuring seamless compatibility with Single Pass Instanced rendering in SteamVR and Oculus Quest without gradient artifacts.
- Vertex Displacement (Mode 4): Performs vertex displacement entirely in the vertex shader. Ensure target meshes have sufficient vertex density (e.g. subdivided spheres, planes, or grids) to resolve fine waveform wave shapes.