Fixed: switching material type changed the tint and left the gloss. A material applied as metal kept its metal gloss when applied again as fabric, because the Highlight channel wrote a colour and no numbers. The channel now owns the gloss numbers: lilToon _Smoothness and _Metallic, Poiyomi _StylizedSpecularStrength with the highlight size and feather, or the lilToon-mode _Smoothness/_Metallic. Strength follows the material type: fabric 0.12, Leather 0.5, Plastic 0.8, metal and Glass 1.0, Skin 0.3, Emissive 0.
Fixed: on Poiyomi the highlight colour always went to _ReflectionColor, which the default stylized reflection mode does not read. It now follows that mode: _HighColor in Unity Chan mode, _ReflectionColor in lilToon mode.
The deep shadow no longer covers every back-facing surface. Its border moved from 0.33 to 0.21 of the half-lambert range, so the second shadow layer stays in creases and true back surfaces instead of covering up to 23 percent of the skin. Deep shadow colour, blur, and the primary shadow are unchanged.
Fixed: the 1.5.20 shadow border looked worse on a real avatar, so that change was reverted. The default shadow border is back at 0.64 of the half-lambert range (Cel 0.66). 0.55 is no longer the default.
The default shadow border moved from 0.64 to 0.55 of the half-lambert range. At 0.64 the lit cone was 75 degrees from the light, so a light that was not straight ahead left too little lit surface. At 0.55 the shadow starts around 84 degrees. Blur, depth, and colour are unchanged.
Authored-shading detection from 1.5.16 is removed. It was a heuristic for a misread material. Every channel is tool-computed again, and the per-row controls are gone: Auto (detected: keep), Auto (detected: compute), Keep texture, and Tool computed.
Fixed: the shadow border band came out almost as bright as the lit surface and stayed invisible on Poiyomi materials whose border alpha was 0. Both Poiyomi and lilToon treat _ShadowBorderColor as a per-channel blend weight from the shadow colour toward the lit colour, not as a colour. The tool wrote the palette colour directly. It now writes the weight that produces the palette border colour, with alpha 1.
Fixed: a material with a forced light direction (Poiyomi Lighting Direction Mode 4) and no painted shadow texture was treated as authored shading in 1.5.16, so Apply wrote only a tint. The palette colour, border colour, and shadow numbers were not written to these materials. The tool now shades them again.
Fixed: every refresh produced a console warning. Authored-shading detection read _BacklightGlobalMask, a Poiyomi mask property that is a number, not a texture. Detection now checks the property type before reading.
Painted shadows are detected and kept. Apply All changes the tint only, and keeps the authored texture's lightness and the channel numbers. Each material has a per-channel override when automatic detection is not the right choice: Auto (detected: keep), Auto (detected: compute), Keep texture, Tool computed.
Rim, Backlight, Shadow, and Outline writes include every number the channel owns, so a stale value that depended on a gate does not survive an apply.
Outline width comes from the material profile, in centimetres, on both lilToon and Poiyomi, instead of keeping an old shader width.
Each channel has a switch for whether apply turns that feature on. Apply Shadow, Apply Rim, and Apply Outline Colour start on. Apply Backlight starts off. Turn the switch off to keep the material's own choice. The row is Turn on when applying.
A Poiyomi shadow write selects Multilayer Math before writing the shape numbers. A material locked by ShaderOptimizer is unlocked for automatic apply, then relocked, and the status says so.
Fixed: the normal Tiling slider still stopped at 32 after it was widened to 100. Five hidden clamps snapped a drag past 32 back to 32. One shared limit now drives the slider, the session, and the saved marker.
Current Material, Material Type, and Apply to a copy stay pinned above the Colour and Surface tabs, so either workflow can change the active target.
Fixed: Texture Kit normal tiles were nearly flat (encoded range 126-129 of 255). The height gradient was scaled by a constant instead of the texel spacing. Tiles now reach the designed tilt: brushed and twill 27 degrees, crosshatch 25, weave 31, and Soft skin 20 at _BumpScale 1 (about 5 degrees at the kit's 0.25).
Fixed: the shadow mask overlay (red selection, blue existing cutouts) stops the instant the last Toon Color Assistant window closes, including after a script reload. A window test asserts it.
The default shadow border moved to the lit side of the half-lambert middle (border 0.68 Soft / 0.70 Cel, deep 0.38), so a front-lit avatar gets a shadow. Skin and cloth no longer read as flat or glowing under a frontal key light.
Fixed: the shadow mask overlay stops drawing the moment the window is closed. A closed window can no longer paint into the Scene view.
Fixed: the shadow mask selection overlay is attached when the window opens, and re-attached after every script reload. The first clicks after importing an update are marked.
Fixed: Apply to a copy follows the copied material through Shadow Mask, Texture Kit, the target list, and every queued target. Later writes stay on the copy.
Copy assignment is limited to the picked avatar root. Every matching material slot under that avatar is updated. Another avatar is not touched.
A prefab asset is left unchanged, with a clear message. A prefab instance in a scene receives the copy as an override.
A material embedded in a prefab or FBX asset is copied into Toon Color Assistant's Materials folder. It is not written into the importer.
Fixed: Apply to a copy skipped a batch entry that had no renderer. It now resolves every matching renderer slot in the loaded scenes. A repeated apply reuses the existing copy. When a copied row is queued, the original row is disabled.
Apply and Batch Apply are one Apply card. The title shows the target count. Live option chips show the current options. Rows show the current material and the queued materials, with a result on each target. All-target apply and revert are separate controls: Apply to All Targets and Revert All Targets.
The window is split into Pick, Colour, Apply, and Textures tabs. Each step shows only its cards. The current status hint stays.
The Skin Texture Kit includes a deterministic, seamless, low-frequency Soft skin normal tile at scale 0.25. It softens the toon shadow border without pores.
Shadow Mask can Merge, Overwrite, or Keep an existing mask. Merge keeps prior cutouts and accumulates the selected islands. The original texture is not changed.
Apply to a copy duplicates the picked material beside the original, assigns the copy to its renderer slot, and writes the palette. The original asset is not modified.
Shadow Mask keeps eye whites and teeth out of the toon shadow. Pick an island, soften the edge, then write and assign the mask. That is three clicks, and the material colours stay as they are.
Texture Kit generates deterministic procedural matcaps and seamless normal tiles for Skin, Hair, metal, fabric, Silk, Latex, Vinyl, Rubber, and Stockings. Shader assignment is guarded. It includes undo, previews, and a confirmation before replacing a user texture.
Stockings is a material profile. It uses fabric shadows, a higher fill, and classification in English and Korean.
Every card says what it does. Every control has a tooltip in English and Korean.