Avatar Compressor
Components

LAC Texture Compressor

Complexity-based texture compression component

Texture Compressor analyzes avatar textures and compresses them based on their complexity. Complex textures (detailed patterns, text) receive less compression, while simple textures (solid colors, gradients) receive more compression.

Full View

Usage

Add the Component

  1. Select your avatar's root GameObject (the one with the VRC Avatar Descriptor)
  2. In the Inspector, click Add Component
  3. Navigate to Avatar Compressor > LAC Texture Compressor, or search for "Texture Compressor"

Select a Preset

Choose a preset that matches your needs.

Balanced is recommended for most avatars.

Build Your Avatar

Build your avatar normally through VRChat SDK. The component automatically:

  1. Analyzes all textures in your avatar
  2. Calculates compression level for each texture based on complexity
  3. Creates compressed copies (originals remain untouched)
  4. Updates materials to use compressed textures

Presets

Minimal compression for showcase avatars.

SettingValue
Divisor Range1x - 2x
Resolution Range256px - 2048px
Min Source Size1024px
Skip If Smaller Than512px

Best for avatars where visual quality is the top priority.

Prioritizes visual quality while allowing moderate compression.

SettingValue
Divisor Range1x - 4x
Resolution Range128px - 2048px
Min Source Size512px
Skip If Smaller Than256px

Good for PC avatars where you want to maintain quality but reduce some file size.

Good balance between quality and file size. (Recommended)

SettingValue
Divisor Range1x - 8x
Resolution Range64px - 2048px
Min Source Size256px
Skip If Smaller Than128px

Recommended for most avatars. Provides significant file size reduction while maintaining good visual quality.

Strong compression for Quest avatars or limited VRAM.

SettingValue
Divisor Range2x - 8x
Resolution Range32px - 2048px
Min Source Size128px
Skip If Smaller Than64px

Use this for Quest avatars or when you need to significantly reduce VRAM usage.

Maximum file size reduction.

SettingValue
Divisor Range2x - 16x
Resolution Range32px - 2048px
Min Source Size64px
Skip If Smaller Than32px
This preset may noticeably affect visual quality.

Use this when file size is critical.

Full control over all settings.

When you select Custom, all settings become editable. You can also use Custom Preset Assets to save and reuse your settings. See Custom Presets and Advanced Settings below.

Built-in Custom Presets

In addition to the main presets above, intermediate presets are available via the Custom Preset dropdown:

PresetPositionDescription
High Quality+Higher quality than High QualityMaximum quality with minimal processing
Quality+Between High Quality and QualityHigher quality than Quality, less compression
Balanced+Between Quality and BalancedHigher quality than Balanced
Aggressive+Between Balanced and AggressiveHigher quality than Aggressive
Maximum+Between Aggressive and MaximumHigher quality than Maximum

These presets provide finer control when the main presets don't quite match your needs.

Texture Filters

Control which texture types are processed:

FilterDescription
Process Main TexturesColor/albedo textures (_MainTex, _BaseMap, etc.)
Process Normal MapsNormal/bump maps (_BumpMap, _NormalMap, etc.)
Process Emission MapsEmission textures (_EmissionMap, etc.)
Process Other TexturesMetallic, roughness, and other textures

Path Exclusions

Textures from specific asset paths can be excluded from compression. This is useful for:

  • Excluding textures from tools that generate temporary assets
  • Preserving textures from specific packages that shouldn't be modified

By default, the following paths are excluded:

PathDescription
Packages/com.vrcfury.temp/VRCFury temp files

You can add custom path prefixes in the component inspector under Path Exclusions. Any texture whose asset path starts with one of these prefixes will be skipped.

Preview

Click Preview Compression Results in the Inspector to see compression analysis before building.

Search and Filter

Use the search box at the top of the preview to filter textures by name:

  • Standard search: Type any part of the texture name to filter the list (case-insensitive)
  • Fuzzy search: Click the "Fuzzy" button to enable fuzzy matching, which allows up to 1 character tolerance for typos

When searching, the section headers show filtered counts (e.g., "Preview (3/10 shown)") and hidden texture counts.

Summary

The preview shows total size statistics:

MetricDescription
OriginalTotal uncompressed size of all textures
AfterEstimated size after compression
SavingsPercentage and bytes saved
Memory (Est)Estimated VRAM usage after compression

Texture List

For each texture, the preview displays:

  • Texture thumbnail - Click to highlight the texture in the Project window
  • Texture name and type (Main, Normal, Emission, Other)
  • Complexity score (0.0 - 1.0) with visual progress bar
  • Size change - Original resolution → Recommended resolution (with divisor)
  • Predicted format - Expected compression format (e.g., BC7, DXT5, ASTC_4x4)
  • Freeze button - Click to freeze the texture with manual override settings (see Frozen Textures)

Clicking on a texture thumbnail is a quick way to locate and select the texture asset in your Project window.

Complexity Score Interpretation

ScoreLevelCompression
< 0.2Very LowHeavy compression applied
0.2 - 0.4LowSuitable for compression
0.4 - 0.6MediumModerate compression
0.6 - 0.8HighLight compression only
≥ 0.8Very HighMinimal compression

Skipped Textures

Textures that won't be processed are shown separately with skip reasons:

  • Too small: Texture is smaller than the minimum size threshold
  • Filtered by type: Texture type is disabled in filters
  • User frozen (skipped): Texture is frozen with "Skip compression" enabled
  • Runtime generated: Texture has no asset path (dynamically created during build)
  • Excluded path: Texture's asset path matches a path exclusion pattern

The preview does not update automatically. If settings change after generating a preview, a warning will appear prompting you to click the button again to refresh.

Frozen Textures

Frozen textures allow you to manually override compression settings for specific textures. This is useful when:

  • Automatic compression is too aggressive for an important texture
  • You want to preserve a specific texture at full quality
  • You need to use a specific compression format for certain textures

Freezing a Texture

  1. Click Preview Compression Results to analyze your textures
  2. Find the texture you want to freeze in the list
  3. Click the Freeze button next to the texture

The texture will be moved to the "Frozen Textures" section with manual controls.

Frozen Texture Settings

For each frozen texture, you can configure:

SettingDescription
Skip compressionWhen enabled, the texture is completely excluded from compression
DivisorManual resolution divisor (1, 2, 4, 8, or 16)
FormatCompression format override (Auto, DXT1, DXT5, BC5, BC7, ASTC)

When Skip compression is enabled, the Divisor and Format settings are disabled since the texture won't be processed.

Available Formats

FormatDescriptionPlatform
AutoAutomatic format selectionAll
DXT1RGB only, 4 bpp (efficient)Desktop
DXT5RGBA, 8 bpp (with alpha)Desktop
BC5Normal maps, 8 bppDesktop
BC7Highest quality, 8 bppDesktop
ASTC_4x4Mobile highest quality, 8 bppMobile
ASTC_6x6Mobile balanced, 3.56 bppMobile
ASTC_8x8Mobile efficient, 2 bppMobile

Unfreezing a Texture

To remove manual override and return to automatic compression:

  1. Find the texture in the Frozen Textures section
  2. Click the Unfreeze button

The texture will return to normal automatic processing.

If a frozen texture's asset file is moved or deleted, a warning will appear in the Frozen Textures section. You should unfreeze such textures to clean up the list.

Custom Presets

Custom Presets allow you to save compression settings as reusable ScriptableObject assets. This is useful for:

  • Sharing settings across multiple avatars
  • Creating platform-specific configurations (e.g., "PC/High Detail", "Quest/Optimized")
  • Maintaining consistent compression settings across projects

Creating a Custom Preset

  1. Set the component to Custom mode
  2. Configure your desired settings
  3. Click the + button next to the preset field
  4. Choose a location and name for your new preset

The current settings will be saved to the new preset automatically.

Using a Custom Preset

  1. Set the component to Custom mode
  2. Click the Custom Preset button
  3. Select a preset from the hierarchical menu

Only presets with a Menu Path configured appear in the dropdown menu. Presets without a Menu Path can still be assigned by dragging them to the preset field.

Use-Only Mode vs Edit Mode

When you select a preset from the Custom Preset button, the component enters Use-Only Mode:

ModeDescription
Use-OnlySettings are read-only, showing a summary of the preset
Edit ModeFull access to modify settings (click Edit to switch)

In Use-Only Mode:

  • A settings summary shows the current configuration at a glance
  • The preset's Description is displayed if set
  • Click Edit to switch to Edit Mode for modifications

Preset Editing Restrictions

Some presets cannot be edited directly:

Restriction TypeIconDescription
Locked🔒User-locked preset (Lock field enabled)
Built-in🔒Bundled with Avatar Compressor package
External Package🔒From another package (e.g., a preset pack)

When attempting to edit a restricted preset:

  1. A confirmation dialog appears
  2. You can choose to Unlink and continue editing (settings are copied locally)
  3. Or Cancel to keep the preset linked

Managing Preset Settings

These actions are available as icon buttons next to the preset field:

ButtonActionDescription
SaveSave current settings to the linked preset (if editable)
DiscardReload settings from the preset, discarding local changes
+CreateCreate a new preset from current settings
UnlinkDisconnect from preset while keeping current settings

Hover over the icon buttons to see tooltips describing each action.

A sync indicator shows whether local settings match the preset:

  • Modified: Local settings differ from the preset
  • Synced: Settings match the linked preset

Preset Configuration

When editing a Custom Preset asset in the Inspector:

FieldDescription
Menu PathHierarchical path in dropdown (e.g., "PC/High Detail")
Menu OrderDisplay order in menu (lower values appear first, default: 1000)
DescriptionOptional description shown in Use-Only Mode
LockPrevent accidental modifications to this preset

Advanced Settings

These settings are available when using the Custom preset.

Compatibility

Texture Compressor runs during the NDMF Optimizing phase, after Modular Avatar but before TexTransTool and Avatar Optimizer. This ensures proper integration with avatar setup tools while optimizing textures before final avatar optimization.

On this page