ALTIMA OFFICIAL DOCUMENTATION
CONVERTER — SETUP & USAGE GUIDE

A Unity Editor extension that converts the materials of an avatar using lilToon to ARLitToon (ALTIMA/ARLitToon) non-destructively.

NON-DESTRUCTIVELILTOON → ARLITTOONAVATAR DUPLICATEMASK BAKINGMATCAP ×3RIM SHADEFAKE SHADOW MESHCONVERSION REPORTPREFAB OUTPUTUNDO SUPPORT
SCROLL
MATERIAL CONVERTER FOR ARLITTOON

This is the English edition of the converter's README.md, translated from the Japanese README.md (the canonical source) as of converter version v7_GUIr0. The Japanese README remains the authoritative document. The converter window can be switched to English, and this page uses its English labels; the conversion report is written in Japanese, so report lines are quoted as they appear, followed by an English gloss in parentheses.

SEC. 01 — OVERVIEW

Overview

// non-destructive material conversion
  • It never modifies the original materials or textures. All conversion results are newly created in the output folder.
  • It assigns the converted materials to a duplicate of the avatar (the original avatar is kept as is; Undo is available).
  • It automatically maps lilToon settings that are hard to port by hand, such as "2nd texture + separate mask" and "MatCap with a mask".
  • Every feature that could not be converted automatically is listed in the conversion report (nothing is dropped silently).
  • This tool is a companion tool separate from the ARLitToon shader itself.
  • lilToon is referenced only to read property names; this tool contains none of lilToon's code or assets and does not modify them.
  • Supported shader version: ARLitToon v48_GUIr0 (it also works with earlier versions; items that do not exist are skipped automatically).
  • This tool's own version: v7_GUIr0 (see the "Version (Changelog)" section at the end for the changelog; this is a different number from the "supported shader version" above).
SEC. 02 — SETUP

Installation

// requirements, placement, launch

Supported Unity: 2022.3 LTS (a VRChat SDK3 environment is assumed). Import the ARLitToon shader itself (ALTIMA/ARLitToon) into the project beforehand.

  1. Copy this folder (the one containing this README and the Editor folder) into your Unity project, for example to Assets/ALTIMA/ARLitToonConverter/ (any location works as long as Editor/ARLitToonConverter.cs is under an Editor folder).
  2. Launch it from the menu Tools → ALTIMA → ARLitToon Converter (lilToon から変換) (the last item means "convert from lilToon").
SEC. 03 — USAGE

Usage

// options, convert, report

Switch the display language with the 日本語 / English tabs at the top of the window (the first time, it opens in the same language as the shader's Inspector; the conversion report is in Japanese only).

  1. Drag the avatar from the Hierarchy into the window's Avatar (root) field.
  2. Check the options (the defaults are recommended):
    • Duplicate the avatar and convert: when ON, the conversion results are assigned to a duplicate named 〇〇_ARLitToon, and the original is deactivated (Undo is available).
    • Generate composite textures with the masks baked in: when ON, PNGs that merge masks such as the "separate mask of the 2nd texture" into the alpha are generated automatically. If Main Color 2nd is a "mask only" setup, turning this OFF leaves the mask ineffective and the look breaks (see "Blend modes of Main Color 2nd (Texture Layer)" below). Keeping it ON is recommended.
    • Cast-shadow material conversion: see "Converting cast-shadow-only (FakeShadow) materials" below.
    • Remove the Pipeline Manager from the converted avatar: when ON, the Pipeline Manager (which holds the Blueprint ID pointing to the upload destination) is removed from the converted avatar (default ON). If it stays attached, it points to the same upload destination as the original avatar, so uploading the converted avatar overwrites the original avatar. It only works when "Duplicate the avatar and convert" is ON; when that is OFF the avatar is the original itself, so it is left untouched regardless of this setting. If another component requires it and it cannot be removed, only the Blueprint ID is cleared (which of the two happened is shown in the report).
    • Save the converted avatar as a Prefab: when ON, the converted avatar is written out as a Prefab asset (default ON). By default it is saved to the same place as the "Output folder" above (including when _2, _3 … was appended to it). Reset to default makes it follow that folder again. If a Prefab with the same name exists, it is saved under a different name, so an existing Prefab is never overwritten. The result always appears in the conversion report (the path if it was saved, the reason if it was not).
    • Output folder: the default is Assets/ALTIMA/ARLitToon_Converted/<avatar Prefab name>/ (for a Prefab instance, the name of the source Prefab asset is used instead of the name in the Hierarchy). This default follows automatically when you switch avatars (if you typed a path yourself, that value takes precedence; Reset to default makes it follow again). If a folder with the same name already exists, the output goes to a new folder with _2, _3 … appended (each conversion's results stay separate and never mix with earlier output). The actual output location is shown in the completion dialog and at the top of the conversion report.
  3. Press Convert avatar. The converted avatar is also saved as a Prefab (default ON). The save path appears in the conversion report.
  4. Check the conversion report at the bottom of the window (also saved as a .txt in the output folder), and adjust by hand anything listed as 「[注意]」 ([Caution]). Materials that were not converted are gathered in the 「スキップしたマテリアル」 (Skipped materials) section, which shows the reason and where in the avatar they are used (GameObject path / slot number).

You can also select materials in the Project view and convert just those materials with Convert only the selected lilToon materials (no scene assignment).

SEC. 04 — MAPPING

Main Conversion Mapping

// what is converted into what
lilToon sideARLitToon side
Main texture / color / color correction (HSV)Albedo / Color / Hue Shift・Saturation・Brightness
2nd texture (color, blend mode, separate mask)Texture Layer (the separate mask is baked into the alpha; a mask-only setup has its mask re-baked into the alpha)
Alpha mask (+ transparency adjustment Scale/Value)Texture Layer Alpha Mask (the transparency adjustment is baked into the mask image) / baked into the alpha of the main texture
Shadow (color / strength / border / blur), 2nd / 3rd shadow, shadow boundary tint, brightness upper and lower limitsLighting & Shadow / Toon Shadow (2nd / 3rd shadow, shadow boundary tint) / Light Limit
Shadow receiving (receiving cast shadows ON/OFF)Receive Shadow (carried over only when it is set. When it is not set, the ARLitToon default applies, which is OFF from v48_GUIr0. When ON is carried over, the report shows a caution)
Materials of the cast-shadow-only shader (FakeShadow)Fake Shadow Mesh (the shadow mesh is reused as is; see below)
Normal map / reflection (Smoothness, Metallic, etc.)PBR(BRDF)
Emission (color / texture / mask / scroll / blink)Emission (the mask is baked into the alpha of the Emission Map [into the RGB when it competes with the glitter mask]; blinking is approximated with a pulse)
MatCap (1st / 2nd, each mask and blend mode)Matcap 1・2・3 + region mask (see below)
Main Color 2nd / 3rd with UV Mode = MatCap selectedMatcap slots (not Texture Layer; see below)
Rim light (color / apply lighting / texture)Rim Light (strength and width are set to the post-conversion defaults; see below) + Rim Env Adapt + Rim mask (generated from the texture's brightness)
Rim shade (darkening the edges / mask)Rim Shade (color, width, strength, mask). If ARLitToon is v47_GUIr0 or earlier, approximated with Rim Light's Multiply mode (see below)
Glitter (color / strength / color & mask texture)Glitter Sparkle (grain shape and density need adjusting; the mask is baked into the alpha of the Emission Map)
UV scroll (main / 2nd / emission)Each scroll (converted to the same speed)
Backlight (color / strength / back-facing directivity)Back Light (fine-tune the spread with Width)
Distance fade (fading to a set color at close range, color mode)Distance Darken (color / distance / strength)
Outline (color / width / width mask / lighting)Outline + Outline Mask
Rendering mode (opaque / cutout / transparent)Blend Preset (equivalent to Opaque / Cutout / Fade)

How reflections and highlights are converted

ARLitToon's lighting is physically based (PBR). Because it works differently from the source, conversion is handled as follows.

  • If a metallic map (a setting that makes only part of the surface metal) is set, Metallic is set to 0. ARLitToon has no metallic map slot, so bringing over the value alone would make the whole surface metal, and the material would turn black because it loses its diffuse light. Since the information that limits the area is lost, it errs on the side of not making it metal. If you need metal parts, set Metallic / Reflection Strength by hand after conversion (a [注意] ([Caution]) entry appears in the report).
  • Materials whose environment reflection is 0 but whose Metallic is high also get Metallic set to 0. With nothing to reflect, only the diffuse light would be lost and the material would again turn black (a combination that is not physically possible either). If you want it to look like metal, raise Reflection Strength first and then restore Metallic.
  • Materials that do not use "reflection" in the source get environment reflection explicitly turned OFF (0). ARLitToon's Reflection Strength has an initial value of 1 for new materials (reflections on), so without this step reflections would appear on materials that did not use reflection. This step prevents that.
  • Specular Highlight is always set to 0 (physically as is). In ARLitToon this item is an "extra boost of light-source highlights" (0 = physically correct, 1 = about 5×), which means something different from the source's switch for "use / do not use specular". Physically based highlights appear from the start, so no boost is added.
  • Even if specular was OFF in the source, the highlight cannot be removed completely (it appears as part of the physical calculation). If it stands out, lower Smoothness. In this case a [注意] ([Caution]) entry appears in the report.

Blend modes of Main Color 2nd (Texture Layer)

The source blend modes map directly: Normal → Normal / Add → Add / Screen → Screen / Multiply → Multiply. Setups with a 2nd texture (with or without a mask) follow this mapping.

Only when Main Color 2nd has no texture and only a mask is set (a setup used as color × mask) is it handled differently.

  • An image with the mask re-baked as "RGB = white / alpha = mask" is generated and assigned (Tiling / Offset also use the mask's values). ARLitToon's Texture Layer reads the alpha of the layer texture as its blend mask, so assigning a grayscale mask image as is would leave the mask completely ineffective, and with Multiply the base would be darkened in the mask's black areas. Re-baking matches the source's behavior of "multiplying the 2nd color only in the white areas of the mask". This generation requires "Generate composite textures with the masks baked in" to be ON (when it is OFF, the mask is assigned as is and the report warns that the look will break).
  • The blend mode defaults to Multiply. This setup is mainly used to lay patterns, dirt or shading onto the base, and with Normal the base's shading and texture are lost inside the mask area, so it looks pasted on and floating. With Multiply it sits on top while keeping the base's light and dark.
  • If you want to paint over the base, change Blend Mode to Normal after conversion (Normal replaces the mask area with the Layer's color). The report shows the same guidance.

A 2nd layer with neither a texture nor a mask (color only) has no corresponding feature, so it is not converted and is reported.

Converting glass materials (refraction)

The source's high-load rendering modes Refraction and Refraction Blur, as well as Gem, are used for glass materials, so they are converted to ARLitToon's Transparent preset (for glass and material-like surfaces) (ordinary transparency uses the Fade preset).

  • The main color's alpha is set to 10/255 (the original value is not carried over). The source's refraction shader looks see-through thanks to the refraction effect even when the alpha is 255, so bringing that value over as is would make it an opaque white board in ARLitToon. Refraction itself cannot be reproduced, so a thin alpha that looks like glass is given as a starting point. Adjust the density with the main color's alpha, and if you want reflections, raise PBR(BRDF)'s Reflection Strength / Fresnel Power / Fresnel Min.
  • There is no feature that reproduces refraction itself (the background appearing distorted).

How MatCap masks are converted

ARLitToon's MatCap mask uses a region-selection method where "white = apply that slot". This differs from lilToon's "application range mask", so it is converted as follows.

There are 3 destination slots (the 3rd was added in ARLitToon v47_GUIr0).

SlotRoleShared mask channel read
1stBase layer shown over the whole surface (the layer without a mask goes here)—
2ndLayer applied to a limited regionR
3rdSame as above (a different region from the 2nd)G
  • 1 MatCap + mask → the MatCap itself goes into the 2nd slot, and the mask (white = apply) is assigned as the region mask as is (the 1st slot is disabled).
  • 2 MatCaps, both with masks → both are reproduced. An image with the 1st mask packed into the shared mask's R and the 2nd mask into G is generated automatically, and they are assigned to the 2nd and 3rd slots respectively (up to v5_GUIr0 only one mask could be held, so the 1st mask could not be reflected).
  • 2 MatCaps, only the 2nd with a mask → the 1st becomes the base (whole surface) and the 2nd is assigned to the mask region.
  • 2 MatCaps, no masks (layered) → cannot be reproduced because the selection is exclusive. One of them is applied to the whole area, and this is reported.

When the UV Mode of Main Color 2nd / 3rd is MatCap

In lilToon, Main Color 2nd / 3rd can select MatCap (projection in view space) as the UV Mode. This setting is effectively used as "a 3rd and 4th matcap", so it is converted to a Matcap slot rather than Texture Layer (sending it to the normal-UV Texture Layer would lose the projection method, and the picture would become something else entirely).

  • The strength comes from the color's alpha, and the blend mode is mapped to Multiply / Add by the same rules as MatCap.
  • Rotation angle and UV scroll are not reflected (they have no meaning with view-space projection). This is reported.
  • When the UV Mode is anything other than MatCap, the behavior is unchanged (2nd goes to Texture Layer; 3rd gives an unsupported warning).

Up to 3 slots in total. When the source has 4 or more layers (MatCap + MatCap 2nd + Main Color 2nd + 3rd, all used as MatCap), up to 3 are assigned in the priority order MatCap → MatCap 2nd → Main Color 2nd → Main Color 3rd, and the overflowing layers are reported.

When using the 2nd and 3rd at the same time, paint separate regions into the R and G of one image (a grayscale image has R = G = B, so both slots would point to the same region and the 3rd would cover the 2nd). When this tool generates the mask, it is packed correctly. For masks that rely heavily on midtones (semi-transparent gradients), check them after conversion with the channel preview in the Inspector and fine-tune.

Converting rim light and rim shade

  • Rim light texture: the source's rim color texture is white by default and works by multiplication, so no rim appears in areas painted black (= it is effectively a mask). This tool converts its brightness into the Rim mask, reproducing "where the rim appears". Color variation cannot be reproduced (Rim Color is a single color).
  • Rim shade (darkening the edges): in ARLitToon v48_GUIr0 and later it is converted to the dedicated Rim Shade (color, width, strength and mask each go to their own items). Rim Shade is a layer independent of Rim Light, so even when both rim light and rim shade are enabled, both are reproduced as they are. The formulas differ, so the strength is approximate; if it is too strong or too weak, adjust it with Rim Shade Intensity.
  • If ARLitToon is v47_GUIr0 or earlier (a version without Rim Shade): as before, it is approximated with Rim Light's Blend Mode = Multiply, and when both are enabled rim light (the brightening side) takes priority, and the rim shade is reported.

Channel assignment of the shared mask

Up to 4 features read one shared mask. When this tool generates it, the channels are assigned as follows.

ChannelUse
RRegion of the 2nd Matcap
GRegion of the 3rd Matcap
ARim Light mask
(see below)Rim Shade mask

Where the Rim Shade mask goes:

  • When there is no rim light mask, A (the same as ARLitToon's default; the slot shared with Rim Light).
  • When there is also a rim light mask, a free channel is used in the order G → R → B (it is a different image from the rim light mask, so it cannot share A). B is the last resort. B is Fake Shadow Texture's default channel, and baking a Fake Shadow overwrites B, so the report warns when B is used. If you bake a shadow into that material, move the rim shade mask to another channel first.
  • When "Generate composite textures with the masks baked in" is ON (default), even with only one mask a shared mask packed into the channels in the table above is generated = each feature reads ARLitToon's default channel (for example, with only a Rim Light mask, A). Unused channels are black (= that feature has no effect), so even if you turn on another feature later, it will not read an unintended picture.
  • The contents of each channel are also saved as separate per-feature images (in Textures/SharedMask_<material name>/: Matcap2.png, Matcap3.png, RimLight.png, RimShade.png, plus SharedMask_<material name>.png that combines them). When you want to redraw the mask of just one feature, you can edit that separate image and recombine it into the shared mask (which image went into which channel appears in the report).
  • When this option is OFF, no image can be generated, so the source mask image is assigned as is and the channel read is R (source masks often have an alpha of 1 everywhere, so reading A would be white everywhere = effective everywhere). When there are 2 or more masks, only the 1st is set, and this is reported.
  • If several features use the same mask image, repacking cannot separate the regions, so this is reported.

Transparency adjustment of the alpha mask

lilToon's alpha mask can adjust how it looks with "transparency (Scale/Value)", but ARLitToon's Alpha Mask has no equivalent adjustment. This tool automatically generates a mask image with this adjustment applied and brings it over (reproducing the original transparency). If you want to fine-tune further after conversion, adjust the transparency of the whole material (the alpha of Color) or Alpha Cutoff, or change the adjustment values and convert again.

Transparency and cast shadows (Dither Fade)

Materials converted to transparent (Fade equivalent) cannot receive cast shadows (Receive Shadow) due to Unity's specifications. If you want a material to be "transparent but still receive cast shadows", for example see-through bangs, you can set the converted material's Blend Preset to Cutout and turn Dither Fade (dithered pseudo-transparency) ON (the conversion report also shows this guidance for the affected materials; it is not switched automatically).

Rim light sharpness and glitter

  • Rim strength and width: only the color is carried over; Rim Power is set to 1 and Rim Intensity to 0.1. The source and ARLitToon differ in both the rim formula and the handling of ambient light, so converting the values and bringing them over makes the rim far too strong. Start from a subdued state and raise it if needed. Reference values appear in the report if you want to get closer to the original settings (sharpness works in opposite directions: in the source, larger values are thinner and sharper / in ARLitToon, larger values are wider, so the converted value is listed). The "apply lighting" setting is carried over to Rim Env Adapt (environment adaptation).
  • Glitter: enabling, color and strength are carried over, but the way grains are generated differs, so grain size, density, shape and flicker speed are not carried over and keep the shader defaults. Match the look with Grain Scale / Coverage / Grain Size / Shape / Flicker Speed in the Glitter / Sparkle section (the report also shows guidance).
  • Glitter "color / mask" texture: the texture's brightness × alpha is baked into the alpha of the Emission Map, and Glitter's Mask Channel = Alpha (A) is set (ARLitToon v48_GUIr0 and later, with baking ON). The emission color (RGB) stays that of the original Emission Map (without an Emission Map the RGB is made white, so the look of the emission does not change). ARLitToon reads this alpha with the same UV as the main texture, so even with emission scrolling or Tiling, the mask does not shift. The "color differences" of a colored texture cannot be reproduced (ARLitToon's glitter is single-colored, so only the brightness is carried over, and this is reported). When a UV other than UV0 is used and when baking is OFF, it is not reflected and the glitter appears everywhere (reported).
  • Emission mask: baked into the alpha of the Emission Map, and Emission's Mask with Emission Map alpha is turned ON (ARLitToon v48_GUIr0 and later, with baking ON). The alpha is read with the same UV as the main texture, so even when the emission scrolls, the mask position matches the source (previously it was multiplied into the emission color, so when the emission scrolled, the mask flowed along with it).
  • When there are both an emission mask and a glitter mask: the Emission Map has only one alpha, so they are assigned as follows.
    • If they are the same image (same Tiling/Offset), the alpha is shared (both the Emission and Glitter masks are ON).
    • If they are different images, the alpha is used for the glitter mask, and the emission mask is multiplied into the emission color (RGB) as before. When the emission scrolls, or the Tiling/Offset of the emission and the mask differ, the mask position can shift, so the report warns about it.
  • The emission texture's own alpha / the emission color's alpha: the source multiplies both into the emission strength (transparent parts do not glow). ARLitToon's emission uses only color (RGB), so the emission texture's alpha is multiplied into the emission color (RGB) (only when the alpha actually has parts below 1, with baking ON), and the emission color's alpha is multiplied into Intensity. The emission texture's color and alpha are the same picture, so their positions match even when the emission scrolls.
  • Images written out: the assembled emission texture and the contents of each channel are placed together in Textures/EmissionMap_<material name>/ (EmissionMap_<material name>.png = the image assigned to the material / Emission_RGB.png = the emission color / Emission_A.png = the alpha contents shown in gray).

MatCap blend modes

The source blend modes map as follows. ARLitToon's MatCap has 2 types: Multiply / Add.

SourceAfter conversion
MultiplyMultiply
AddAdd
ScreenAdd (approximate)
Normal (replace)Multiply (approximate)

Normal (replace) differs from both, so it is approximated. Multiply is chosen because normal-blend MatCaps are often white to bright images, and with Add the material would glow white. With Multiply a bright MatCap comes out almost unchanged, so it never becomes too bright by accident. If you want strong gloss, change the blend mode to Add after conversion and adjust the strength (the report also shows guidance).

Materials skipped without conversion

Materials of the following dedicated shaders have no corresponding settings in ARLitToon and cannot be approximated, so they are not converted. The original materials are left in their slots, so those parts keep working as before (the conversion report shows that they were skipped and why).

  • Fur (Fur, FurCutout, FurTwoPass): dedicated settings for growing fur in many layers. Converting them would make the fur disappear and leave only the base.

Converting cast-shadow-only (FakeShadow) materials

Materials of the cast-shadow-only shader are converted to ARLitToon's Fake Shadow Mesh (v44 and later) (up to v1_GUIr0 they were skipped). You can choose between 2 conversion methods (the window's Cast-shadow material conversion). The default is B (merge into the base material): it removes one shadow slot and keeps the number of materials and passes down. If the same renderer has no base material, it automatically falls back to the equivalent of A, so choosing merge never makes conversion impossible.

# A. Convert the shadow mesh as is

The shadow slot is converted to "an ARLitToon material that draws only the shadow". It uses the shadow's shape and position as crafted in the source, so this method reproduces the look closely.

  • The shadow mesh is kept and used as is.
  • The converted material is set with Fake Shadow Mesh ON and the base pass invisible (transparent + alpha 0). ARLitToon's Fake Shadow Mesh draws the shadow in its own independent pass, so the normal drawing can be removed while keeping only the shadow pass (the shadow board never appears as an opaque board).
  • Render Queue is set to 3001 (it must be drawn after the receiver). If the receiver is set to be drawn after this, the shadow will not appear, so lower the receiver's Render Queue.
  • The extrusion distance (FS Mesh Distance) is set to a small value (0.2), on the assumption that the shadow mesh is already placed in front of the receiver.

# B. Merge into the base material (removes the shadow slot; default)

Fake Shadow Mesh is ported into the base material of the same renderer (such as the hair itself), and the shadow material slot is removed. This saves one material and one pass.

  • The shadow's shape changes: the body mesh itself is extruded to form the shadow, so the shape differs from the source's shadow mesh.
  • The Render Queue of the merge target is raised by 1: Fake Shadow Mesh only works when it is drawn after the receiver (with the same value as the receiver, no shadow appears). If the receiver's (face etc.) Render Queue is the same as or higher than the merge target's, the shadow will not appear, so lower the receiver's value. The values before and after the adjustment appear in the report.
  • If the same renderer has no base material, it automatically falls back to A and writes out a shadow material (which method was used appears in the report).
  • Safety measure for slot removal: Unity assigns the Nth entry of the material array to submesh N, so removing a slot in the middle shifts the pairing of the later meshes and materials. Therefore only the slots that are contiguous from the end are actually removed, and slots left in the middle are replaced with a completely invisible material (it is not drawn, so the look is the same as removing it). Which was done appears in the report.

# Common to both methods

  • The shadow's color and strength are carried over from the source color (color RGB → shadow color, alpha → strength).
  • Unlike the source, with either method the shadow follows the light direction and head movement. Where no light reaches, the shadow appears along FS Fallback Dir in the Fake Shadow Mesh section (by default, diagonally upward).
SEC. 05 — LIMITS

Main Features That Cannot Be Converted Automatically (reported)

// features to set up by hand

3rd texture (when its UV Mode is not MatCap) / decal placement / texture rotation / shadow color texture / AO map / gradation map / 2nd normal map / glitter grain shape and density / 2nd emission / AudioLink (the method differs; set it up by hand) / refraction / tessellation, and so on.

After conversion, always check the look on the actual device (or in the scene) and fine-tune as needed in the ARLitToon Inspector (each section of the material).

SEC. 06 — TROUBLESHOOTING

When No Prefab Is Created

// prefab save failed

The reason appears on the [全体] Prefab 保存: ([Overall] Prefab save:) line of the conversion report. Common causes are:

  • The avatar contains scripts whose references are missing (Missing Script). Unity cannot save objects with a Missing Script as a Prefab. The report shows which GameObjects have how many, so import the missing scripts (VRChat SDK or third-party assets) or delete the affected components, then convert again.
  • The destination folder could not be created, or an exception occurred while saving. The report shows the details.

In either case, the converted avatar in the scene can be used as is (the material conversion is complete). If you do not need a Prefab, turn Save the converted avatar as a Prefab OFF.

SEC. 07 — TROUBLESHOOTING

When Changes Do Not Seem to Apply

// checking the output that is actually in use

First check that the path on the 「変換後マテリアルを保存: …」 (Saved converted material: …) line of the conversion report is the same as the path of the material open in the Inspector. Each run outputs to a different folder (〇〇/ → the 2nd run 〇〇_2/ …), so if you are looking at old materials from an earlier conversion, or an old duplicate avatar left in the scene (〇〇_ARLitToon), the latest conversion result is not reflected there. Deleting old folders and duplicate avatars you no longer need before checking makes it certain.

The report also outputs the toggles that were enabled and their values (for example _UseBackLight=1 / Intensity=1), so you can compare down to the values. If it says 「対応機能がないため反映していません(v39 以降で対応)」 (Not applied because the feature is not supported (supported from v39)), the ARLitToon shader in Unity is old, so update the shader to the latest version and convert again.

SEC. 08 — TROUBLESHOOTING

When the Draw Order Looks Wrong

// render queue, zwrite, slot order

Conversion does not reorder the material slots (Element 0 / 1 …). The converter keeps the slot numbers and only swaps their contents (the only exception is slot removal when "Merge into the base material" is chosen for cast-shadow material conversion; even then, only slots at the end, where the pairing cannot shift, are removed). The material editors listed at the bottom of the Inspector can appear in a different order from the Materials list, but this is just how Unity displays them, not the slot order (selecting the original avatar shows the same order).

If the look of the stacking order has changed, compare the 描画設定: Render Queue=… / ZWrite=… / Cull=… (render settings) lines of the conversion report between the materials involved. The two most common causes are:

  • ZWrite is On for a transparent material: the transparent part also writes depth, hiding what is behind it (such as bangs). It is inherited to respect the source's setting, but if it breaks, set ZWrite to Off in the Transparency section, or switch the Blend Preset to Cutout + Dither Fade (the report also shows this as a caution).
  • Render Queue: the value is carried over only when it was explicitly set in the source. Otherwise it uses ARLitToon's preset defaults (Opaque=2000 / Cutout=2450 / Transparent=3000 / Fade・Additive=3001). For avatars with a carefully built front-to-back order, such as face and hair, fine-tune it with the Render Queue in the Inspector.
SEC. 09 — TROUBLESHOOTING

To Undo the Conversion

// undo, delete output
  • Scene changes (duplication, deactivation, material assignment) can be undone with Ctrl+Z (Undo).
  • The generated materials, textures and report disappear when you delete the output folder (the original avatar and original materials are not affected).
SEC. 10 — VERSION

Version (Changelog)

// versioning and changelog

The changes in the latest version are listed below; earlier history is collected in the collapsible section. Versions are written as integers without decimal points, as v{conversion logic version}_GUIr{GUI revision} (the same scheme as the ARLitToon shader itself). This tool is a single file, converter/Editor/ARLitToonConverter.cs. For changes that affect conversion results, such as adding or changing properties written by the conversion, changing shared mask assignments, or adding shaders excluded from conversion, the v number is incremented and GUIr is reset to 0; for changes that do not affect conversion results, such as the window layout or display text, only the GUIr number is incremented. The current version is shown at the top of the window, in the completion dialog and at the top of the conversion report. It is a different number from the "supported shader version" at the beginning (the ARLitToon version last verified). Do not confuse the two. This changelog lists only the changes in each version. For what each item is converted into, see "Main Conversion Mapping" above.

v7_GUIr0 Added support for ARLitToon v48_GUIr0 (3rd Matcap, rim light mask).• Added support for "UV Mode = MatCap" in Main Color 2nd / 3rd.• When both MatCaps are used and both have masks, the 1st mask can now be reflected too.• When the source uses 4 or more matcap layers, up to 3 are now assigned in priority order.• The rim light texture is now converted into the Rim mask.• Added support for rim shade (darkening the edges).• The feel of gloss (reflection, specular) is now carried over.• Fixed a bug where the mask had no effect when Main Color 2nd was a "mask only" setup.• The rim shade mask is no longer always put into the shared mask's B.• Even with only one mask, a shared mask is now generated so that ARLitToon's default channel is read.• The glitter "color / mask" texture is now reflected.• The emission mask is now moved into the alpha of the Emission Map.• The assembled emission texture and the contents of each of its channels (RGB / alpha) are now written out.• The emission texture's own alpha and the emission color's alpha are now reflected.• When Receive Shadow (shadow receiving) is carried over as ON, the report now shows a caution.• The window's display language can now be switched between 日本語 / English.

Open past changelog (click to expand)
  • v6_GUIr0 Multi-tier shadows are now carried over (for ARLitToon v47_GUIr0). The color, strength, border, blur and normal map influence of the 2nd and 3rd shadows, as well as the shadow boundary tint, are carried over (previously a warning said "the 2nd shadow was simplified to a single tier"). In each case ON/OFF is copied to the dedicated checkbox, and the opacity is passed as "the strength of the density". The degree of receiving cast shadows, the main color multiplication into the shadow color and the fading in bright areas are not written (these are now fixed on the ARLitToon side). Items specified by images, such as the shadow color texture and AO map, cannot be carried over, so they are reported with warnings as before.
  • v5_GUIr0 Added support for ARLitToon v46_GUIr0, and added features such as saving the converted avatar as a Prefab.
  • v4_GUIr0 Fixed a bug where no shadow appeared with "Merge into the base material". The merge target's Render Queue is now adjusted to come after the receiver (+1) (Fake Shadow Mesh only works when it is drawn after the receiver). Before the fix, the symptom was that the shadow appeared only after turning Fake Shadow Mesh OFF and ON again in the Inspector.
  • v3_GUIr0 The cast-shadow material conversion method can now be chosen ("Convert the shadow mesh as is" / "Merge into the base material"). Choosing merge ports Fake Shadow Mesh into the base material of the same renderer and removes the shadow slot. When no base material shares the renderer, it automatically falls back to the previous method.
  • v2_GUIr2 Added a dedicated "Skipped materials" section to the conversion report. In addition to the material name, shader name and reason for skipping, it now lists where in the avatar each material is used (GameObject path and material slot number). This also fixes an issue where materials that were already ARLitToon only increased the count without appearing as rows, so the count and the breakdown did not match.
  • v2_GUIr1 Fixed a bug where the default output folder did not follow the avatar name (if the window was opened with no avatar set, it stayed fixed at .../Materials and did not change after an avatar was set later). The default folder name now also uses the name of the source Prefab asset, and the default ON state of "Generate composite textures with the masks baked in" is kept in EditorPrefs.
  • v2_GUIr0 Materials of the cast-shadow-only shader (FakeShadow) are now converted to ARLitToon's Fake Shadow Mesh instead of being skipped (the shadow mesh is reused as is; the base pass is made invisible).
  • v1_GUIr0 Introduced version management (added this section, the window display and the report display).