How to Edit VRChat Avatar Textures Like a Pro (Unity and Photoshop Guide)

tutorialvrchatunityavatarphotoshoppbr

Whether you purchased a commercial anime model from Booth or downloaded an open-source base character, giving your VRChat avatar a distinct personal identity starts with editing its textures. While beginner creators often attempt to tint whole materials using basic color pickers in Unity, achieving vibrant eye highlights, custom clothing patterns, and realistic skin tone variations requires directly editing the underlying albedo and UV maps.

Unity 3D character editing workspace with Poiyomi shader settings and VRChat anime avatar texture modifications

Editing source albedo maps in external image editors and configuring Poiyomi shader settings in Unity allows you to completely customize your VRChat avatar’s look.

However, editing VRChat textures without understanding Unity’s asset pipeline and shader requirements frequently results in washed-out colors, broken transparency layers, or glowing white seam artifacts. Below is the comprehensive technical guide on how to safely extract, modify, and reimport VRChat avatar textures using Unity and Photoshop or Procreate.

Understanding Your VRChat Avatar Texture Files

Inside your Unity project’s Assets folder, a typical VRChat character package separates surface data across several specialized image sheets:

  1. Body and Face Albedo (Body_BaseColor.png): Contains the base diffuse coloring for skin, eyes, facial expressions, and blush layers, usually mapped across a 4096x4096 or 2048x2048 atlas.
  2. Clothing and Outfits (Outfit_Albedo.png): Holds fabric textures, metallic embroidery, laces, and ribbons.
  3. MatCap and Shading Masks (Shadow_Mask.png): Grayscale masks used by stylized shaders (such as Poiyomi Toon or lilToon) to dictate where crisp anime shadow steps occur or where metallic reflections shine.
[VRChat Avatar Texture Editing Pipeline]
Locate Source Texture in Unity Assets Folder


[Step 1: Right-Click Texture ──> Show in Explorer / Finder]


[Step 2: Open in Photoshop / Procreate with UV Overlay]
       ├── Add New Layer Above Source Albedo
       ├── Paint Eye Recolors, Tattoos, or Fabric Patterns
       └── Export as PNG (Preserve Alpha Channel for Cutout Mesh)


[Step 3: Unity Import & Shader Configuration]
       ├── Set Max Size to 2048 or 4096
       ├── Uncheck sRGB if editing Mask / Normal Data
       └── Assign to Poiyomi / lilToon Main Texture Slot

Step-by-Step Guide to Editing Avatar Textures

To modify your avatar without introducing compression artifacts or shifting the UV coordinates, follow this three-phase workflow.

1. Locate and Export Source Textures from Unity

  1. Open your VRChat avatar scene inside Unity 2022.3 (or the required VRChat SDK version).
  2. Click your avatar mesh in the Hierarchy panel to reveal its assigned materials inside the Inspector.
  3. Click the small thumbnail next to the Main Texture or Base Color property inside your shader UI (Poiyomi or lilToon). This highlights the original image asset in your Project window.
  4. Right-click the highlighted texture asset and select Show in Explorer (Windows) or Reveal in Finder (macOS).
  5. Copy the original PNG or PSD file to a dedicated backup folder before making any edits so you can always revert if a layer gets corrupted.

2. Modify UV Layers and Color Palettes in Photoshop or Procreate

  1. Open the copied texture file inside Adobe Photoshop, Clip Studio Paint, or Procreate on an iPad.
  2. If your avatar package included a UV Layout overlay sheet (UV_Grid.png), import it as the top layer and set its blend mode to Screen or Multiply at 30% opacity so you can clearly see polygon wireframe boundaries.
  3. Never paint directly onto the base background layer. Create a new transparent raster layer above the original albedo map for your custom edits.
  4. To change eye colors precisely: use the Lasso Tool to select both eye iris circles, create a Hue/Saturation adjustment layer clipped to your selection, and adjust the Hue slider (-180 to +180) until you achieve your target shade.
  5. To add skin details, tattoos, or clothing decals: paint on a fresh layer using soft brushes, ensuring your artwork stays strictly inside the wireframe islands of the target body part.
  6. Once finished, hide the UV Layout wireframe layer and export your updated image as a 24-bit PNG with transparency (Save Copy As > PNG).

3. Reimport and Configure Color Compression in Unity

  1. Drag your newly exported PNG file back into your Unity project’s Assets/Textures/ directory, overwriting the old file or saving it alongside as Body_BaseColor_Edited.png.
  2. Click the imported texture asset in the Project window to inspect its Import Settings in the Inspector panel.
  3. Verify that Texture Type is set to Default and Alpha Source is set to Input Texture Alpha if your mesh requires cutout ribbons or eyelashes.
  4. Set Max Size to 2048 (or 4096 for high-resolution PC avatars) and ensure Compression is set to High Quality (BC7) to avoid blocky color banding across skin gradients.
  5. Click Apply, then drag your edited texture directly into the Main Texture slot of your avatar’s material.

Diagnostic Table: Common VRChat Texture Editing Errors

Symptom (Visual Bug)Primary CauseImmediate Solution
Texture appears washed out, overly bright, or greyish in UnityTexture imported with incorrect color space (sRGB disabled on color albedo map)Open asset import settings, check sRGB (Color Texture) for diffuse maps and click Apply
White lines or dark halos appear along clothing and neck seamsPainting exactly up to the UV wireframe edge without bleeding marginExtend your painted colors at least 8px to 16px outside the UV island boundaries (edge padding)
Entire clothing piece or hair turns invisible after editingAccidentally saved a blank alpha channel when exporting PNG from Procreate/PhotoshopOpen material in Poiyomi/lilToon, change Culling & Alpha Mode from Cutout to Opaque
Custom decal or tattoo looks mirrored backwards on the other armThe avatar’s UV layout shares overlapping mirrored islands across left and right limbsCheck if the 3D mesh shares symmetrical UVs; if mirrored, asymmetrical text must be separated in Blender

Elevating Your Avatar with Custom Surface Normals

While repainting diffuse colors gives your character fresh styling, adding custom normal maps elevates your avatar from a flat 2D illustration into a tangible, reactive 3D presence. Normal maps allow fabric knits, leather jacket seams, metallic zippers, and skin pores to catch real-time world lights across VRChat worlds without adding a single extra triangle to your polygon budget.

If you have designed a custom clothing outfit or fabric pattern and want to generate instant studio-quality normal maps and roughness masks from your artwork, power up your VRChat creation pipeline with our Free Online Normal Map and PBR Generator — Try Stylized Anime Fabric. You can also craft high-detail seamless textile patterns for your character hoodies and skirts using our Seamless Texture Generator Online.

VRChat Texture Editing Quick Checklist

  • Backup original PSD/PNG files before applying permanent color adjustments.
  • Paint all modifications on isolated layers above the base albedo.
  • Ensure edge bleeding (8px+ padding) around all UV seams to prevent edge halos.
  • Verify sRGB is enabled for Base Color textures and disabled for Normal/Mask textures.
  • Assign updated textures to the Poiyomi/lilToon Main Texture slot and check Culling mode.

Related reading: What is a Normal Map? · How to Use Normal Maps in Unity and UE5 · Why Adding a Texture Makes Your VRChat Avatar Invisible · Roughness Map Guide

Ready to create your own materials?

Turn any image into a production-ready PBR texture in seconds.

Open NormalMap.ai Editor