How to Convert Textures for VRChat Avatar Quest Compatibility
Getting your VRChat avatar running on Quest isn't just about reducing polygon counts — texture conversion is one of the most critical and often misunderstood steps in the process. Quest hardware runs on mobile-grade GPUs, which means the rendering pipeline, supported formats, and texture memory limits are fundamentally different from PC VR. If your textures aren't set up correctly, your avatar either won't upload for Quest or will look broken in-game.
Here's what you actually need to know.
Why Quest Textures Are Different From PC Textures
On PC, VRChat avatars typically use standard Unity-compatible texture formats rendered through a full desktop shader pipeline. Quest avatars run on Android-based hardware using the Oculus Mobile SDK, which requires textures to conform to mobile GPU constraints.
The key differences:
- Shader compatibility: Quest doesn't support most custom PC shaders (like Poiyomi or XSToon in their full forms). Textures baked for PC shaders won't display correctly under Quest-compatible shaders like VRChat's mobile shader set.
- Texture compression: Quest strongly favors ASTC compression (Adaptive Scalable Texture Compression), which is natively supported by Qualcomm Adreno GPUs. PC avatars often use DXT/BC formats, which are incompatible.
- VRAM limits: Quest has strict memory budgets. Uncompressed or oversized textures will push your avatar over the allowed limits and block upload.
- Texture resolution caps: While PC avatars can get away with 2K or 4K textures per map, Quest avatars generally need textures reduced to 1024×1024 or lower per map to stay within budget.
The Core Conversion Process 🎮
The standard workflow for converting PC avatar textures to Quest-compatible versions happens inside Unity, using the VRChat Creator Companion (VCC) and the VRCSDK.
Step 1: Set Up a Quest-Compatible Avatar Variant
You should never overwrite your PC avatar with Quest settings. Instead:
- Duplicate your avatar in the Unity hierarchy.
- Create a separate Quest avatar prefab in your project.
- Assign Quest-compatible materials to this version — typically using VRChat/Mobile/Toon Lit or similar mobile shaders.
Step 2: Rebake or Reassign Textures
Since Quest shaders don't support multi-layer blending, procedural effects, or custom shader properties the same way PC shaders do, your texture maps need to be baked flat:
- Albedo/Base Color: This becomes your primary texture. Any lighting, shading, or effects baked into your PC shader need to be pre-baked into the diffuse map using tools like Substance Painter, Blender's bake system, or Unity's bake tools.
- Normal Maps: Supported on Quest, but keep resolution reasonable (512×512 or 1024×1024).
- Emission Maps: Supported in limited form. Bake emissive effects into the albedo if your mobile shader doesn't support a separate emission channel.
- Metallic/Roughness/Specular: Mobile shaders typically use a simplified MatCap approach. Complex PBR workflows don't translate directly — these effects usually need to be baked into the diffuse or dropped.
Step 3: Configure Texture Import Settings in Unity
Inside Unity, select each texture in your Project panel and adjust the Texture Import Settings:
| Setting | PC Avatar | Quest Avatar |
|---|---|---|
| Max Resolution | 2048–4096 | 512–1024 |
| Compression | BC7 / DXT5 | ASTC (via Android platform) |
| sRGB | Enabled for color maps | Same |
| Generate Mipmaps | Yes | Yes |
| Platform Override | Default | Android |
To set ASTC compression, switch your Unity build target to Android (File → Build Settings → Android → Switch Platform), then set the compression format under the Android tab in each texture's import settings. Unity will automatically apply ASTC when building for the Quest platform.
Step 4: Check Texture Memory Usage
VRChat enforces avatar performance ranks based on total resource usage. For Quest:
- VRAM usage is one of the biggest limiters — textures are the primary contributor.
- Use VRChat's built-in Avatar Descriptor stats panel or the Avatars 3.0 SDK performance readout to check your texture memory footprint before uploading.
- Aim to stay under the "Good" or at minimum "Medium" performance rating for Quest to ensure your avatar displays by default for other users.
Variables That Affect Your Specific Outcome 🔧
Not every avatar conversion follows the same path. Several factors will determine how straightforward or involved your process is:
- Original shader complexity: Avatars using heavy custom shaders (Poiyomi, lilToon) require more baking work. Simpler UNLIT or Standard shaders convert more cleanly.
- Texture atlas structure: Atlased textures (multiple UV islands combined into one texture) are Quest-friendly. Un-atlased avatars with many separate small textures may need texture atlasing before conversion.
- Avatar bone count and draw calls: Texture conversion doesn't happen in isolation — Quest limits apply to the whole avatar package, so texture savings may need to offset costs elsewhere.
- Your Blender or Substance Painter skill level: Baking pre-lit textures manually produces the best visual results but requires software knowledge. Using Unity-only workflows is faster but typically produces flatter-looking results.
- Source texture resolution: If your original textures are already low-resolution, downscaling to Quest limits may cause visible quality loss that requires manual touch-up.
How Results Differ Across Setups
An avatar with a fully atlased UV layout, simple diffuse textures, and no custom shader dependencies can often be Quest-converted in under an hour with minimal visual degradation. An avatar built around a complex multi-layer PC shader with separate maps for every surface property may require hours of baking work — and the Quest version will inevitably look noticeably different from the PC version regardless of effort.
Some creators maintain two fully separate avatar pipelines from the start — one built specifically for PC and one built to Quest constraints — rather than trying to convert retroactively. Others accept a visual quality trade-off and prioritize getting a functional Quest version uploaded quickly.
The right balance between visual fidelity, conversion effort, and Quest performance rank depends entirely on how your avatar was originally built, which tools you have access to, and what visual quality threshold matters to you.