Credits and licenses

Blender / Unity Stencil Matrix

Thirteen MToonXT stencil examples: compare the effect, control settings and Unity mapping.

Scenario specification · Blender VRMXT PR · Unity VRMXT PR

Visible previews play muted and loop. Off-screen previews and hidden tabs pause. Individual pause controls are respected.

Blender configuration legend

Simplified values use [T, I, O, S, R, W, D]; 1 is ON and 0 is OFF.

T — Show Writers Through Occluders
I — Writers Only Inside Readers
O — Writers Only Outside Readers
S — Writers Occlude Themselves
R — Ignore Occluded Reader Areas
W — Writers Write Depth
D — Readers Write Depth

Unity defaults: read/write masks 255, Fail Keep, ZFail Keep, ColorMask 15. Stencil references are allocated by the importer, not serialized. Writer Color is ON unless noted. Queues describe the first compiled relationship.

ID Avatar use case Writer / reader Blender example Unity example Blender configuration Unity configuration Mapping Notes
M01 Depth-tested reveal.
  • Hide or reveal hair.
  • Create X-ray vision.
  • Hide or change an outfit.
Writer: colorless moving plane
Reader: Hair1 and Hair+
Unaffected control: Hair2
Mask OFF / Mask ON reveal Mask OFF / Mask ON reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,0,1]
Advanced Outside / LEqual / LEqual
Writer Color Output OFF
Colorless plane writer q2451: Always/Replace, LEqual, ZWrite Off, Cull Off, ColorMask 0.
Hair1 and Hair+ readers q2452: NotEqual/Keep, LEqual, ZWrite On, Cull Off.
Hair2: ordinary MToon pass.
The colorless, depthless plane establishes the allocated shared reference without publishing visible color or depth. Hair1 and Hair+ display outside the writer stencil. Equivalent relationships that share one writer and presentation are coalesced into one writer pass with both readers so they cannot compete for different stencil references. Control: mask disabled. Writer Color OFF suppresses color without disabling stencil. Alpha-zero material fragments are not a substitute.
M02 Facial features through occluders.
  • Show eyes and brows through hair.
  • Reveal emotion with a moving plane.
  • Keep a face readable through glass.
Writer: original brow, lash, iris, shadow, and highlight materials
Reader: Hair1, Hair+, and a compact moving reader plane
Stencil OFF / Stencil ON reveal Stencil OFF / Stencil ON reveal
Synchronized Blender / Unity
Simplified [1,0,0,1,1,1,1]
Advanced Outside / LEqual / LEqual
Reader q2451: Always/Replace, LEqual, ZWrite On.
Base writer q2452: NotEqual/Keep, LEqual, ZWrite On; source culling.
Reader-qualified overlay q2453: Equal/Keep, Always, ZWrite On, Cull Back.
Native material rendering supplies lighting and received shadows; only the base casts shadows.
Show Through combines ordinary-depth outside-reader pixels with an Always-depth pass constrained to reader pixels. Equivalent reader sets and presentation settings share one multi-writer stencil plan. Control: stencil disabled. Reader-qualified show-through retains ordinary depth outside the reader. Overlay back-face culling is not a general nearest-surface solution for open or concave writers.
M03 Face-only hair shadow.
  • Project an anime hair shadow onto the face only.
Writer: hair-shadow volume or decal
Reader: face skin
Unclipped shadow / Face-clipped shadow reveal Unclipped shadow / Face-clipped shadow reveal
Synchronized Blender / Unity
Simplified [0,1,0,1,1,1,1]
Advanced Outside / LEqual / LEqual
Face reader mask: Always/Replace, LEqual, ZWrite On.
Hair-shadow writer q2452: Equal/Keep, LEqual, ZWrite On, Cull Off in the current imported stencil variant.
Inside-only uses Comp Equal against the reader-authored stencil. Control: unclipped shadow. The decal is constrained to face pixels; this is a stylized shadow decal, not a cast-shadow feature.
M04 Animated lens-clipped visor HUD.
  • Reveal a pulsing reticle and scan line behind a fixed opaque lens.
  • Keep oversized HUD geometry out of the background and hair-covered lens areas.
Writer: Animated HUD
Reader: Opaque curved visor lens
Occluders: Hair and head
Synchronized OFF / ON
Animated HUD — stencil ON
Synchronized OFF / ON
Animated HUD — stencil ON
Blender / Unity synchronized comparison
Simplified [1,1,0,1,1,1,1]
Advanced Outside / LEqual / LEqual
Lens q2451: Always/Replace, LEqual, ZWrite On.
HUD q2452: Equal/Keep, Always, ZWrite On.
Shared stencil reference; Cull Off and native MToonXT lighting. No secondary overlay.
Inside Only clips the oversized HUD to the lens reader. Show Through makes the HUD visible despite the lens depth. Ignore Occluded Reader Areas keeps hair-covered portions excluded. M02 alone would reveal HUD outside the lens, so it cannot substitute for this combined behavior. Control: stencil OFF. The lens stays fixed while the HUD pulses, scans and changes color. A companion track supplies animation timing; it is not embedded VRM animation.
M05 Orbiting spirit ribbons.

Traveling cyan, gold, and violet ribbons cross in front of the avatar; the configured mask cuts those overlaps away.

Writer: Textured ribbon mesh
Reader: All 24 avatar materials
Stencil OFF / Stencil ON reveal Stencil OFF / Stencil ON reveal
Synchronized Blender / Unity
Simplified [0,0,1,1,1,1,1]
Advanced Outside / LEqual / LEqual
Reader mask q2451: Always/Replace, LEqual, depth On. Ribbons q2452: NotEqual/Keep, LEqual, depth On. Imported double-sided ribbon material uses Cull Off. The floating talisman is behind the front ribbons. Avatar exclusion leaves the talisman eligible to be covered; M06 excludes it too. Control: stencil OFF. One textured writer excludes avatar pixels while remaining depth-tested against unrelated objects. Curved back-face shading can differ between engines.
M06 Negative-space power-up.

Use the same traveling ribbon geometry but preserve both avatar and floating talisman pixels.

Writer: Textured ribbon mesh
Reader: Avatar targets plus full-scene coverage
Avatar exclusion / Full-scene exclusion reveal Avatar exclusion / Full-scene exclusion reveal
Synchronized Blender / Unity
Simplified [1,0,1,1,1,1,1]
Advanced Outside / LEqual / LEqual
Retain the colorless full-scene coverage pass excluding the writer. Ribbons q2452: NotEqual/Keep, LEqual, depth On, Cull Off. Control changes only Show Through to Off, reproducing M05-style avatar exclusion. The talisman is behind the front ribbon, so ordinary depth cannot explain its reveal. No backdrop plane fills the true background. Control: Show Through OFF (M05). The talisman is also excluded, even behind the ribbons. The colorless scene-coverage pass is required.
M07 Surrounding magical aura.

Breathing cyan/violet wisps and drifting embers wrap the silhouette. Compare accumulated translucent energy with self/depth settings.

Writer: One alpha-textured animated aura mesh
Reader: Avatar materials
Self/depth ON / Self/depth OFF reveal Self/depth ON / Self/depth OFF reveal
Synchronized Blender / Unity
Simplified [1,0,0,0,1,0,1]
Advanced Outside / LEqual / LEqual
Reader mask q2451: Always/Replace, LEqual, depth On. Aura q2452: NotEqual/Keep, LEqual, depth Off; native reader-local overlay q2453: Equal/Keep, Always, depth Off. Both aura passes Cull Off. Base alpha 0.42 × soft RGBA texture; curved wisps around the body, not a frontal card. Show Through intentionally lets rear energy tint the reader silhouette. Control changes Self Occlude and Writer Depth to On; depth Off alone is not transparency. Control: Self Occlude and Writer Depth ON. Preserve source alpha and reader color beneath the aura. The two writer passes use complementary coverage to avoid duplicate blending.
M08 Through-cover X-ray.

An anatomical skeleton inside the avatar. Move an unrelated opaque shield across the body: M02 hides the covered bones; M08 keeps them visible.

Writer: Rig-fitted anatomical skeleton
Reader: Avatar body/materials
Neither: Moving opaque shield
M02 visible-body / M08 through-cover wipe
M02 vs M08 — simultaneous side by side
M02 visible-body / M08 through-cover wipe
M02 vs M08 — simultaneous side by side
Synchronized Blender / Unity
Simplified [1,0,0,1,0,1,1]
Advanced Outside / LEqual / LEqual
Retain hidden-reader colorless coverage: Always/Replace, Always, depth Off. Reader mask q2451: LEqual, depth On. Skeleton q2452: NotEqual/Keep, LEqual; native overlay q2453: Equal/Keep, Always. Both skeleton passes depth On and Cull Back. Shield remains ordinarily opaque. Only Ignore Occluded Reader Areas changes: M02 On → M08 Off. Both show bones through exposed body; only M08 retains them under the unrelated shield. This is not M04 Inside Only; outside the reader, ordinary writer depth applies. Control: Ignore Occluded Reader Areas ON (M02). The opaque shield is neither writer nor reader. Full reader coverage authorizes the X-ray without revealing reader color.
M09 Feather-crest flight visor.

A teal curved visor carries a moving feather crest and animated amber flight instruments, with a sculpted frame.

Writer: Cyan feather crest
Reader: Teal curved visor lens
Neither: Late amber HUD and sculpted frame
Writer depth ON / Writer depth OFF reveal Writer depth ON / Writer depth OFF reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,0,1]
Advanced Outside / LEqual / LEqual
Crest writer q2451: Always/Replace, LEqual, depth Off. Curved-lens reader q2452: NotEqual/Keep, LEqual, depth On. Both Cull Off. Rear amber HUD q3000, depth Off; opaque frame q2000. Only Writer Depth changes. Late amber HUD pixels pass through the crest when its depth write is off; the remaining lens still writes depth. Unlike M04, this tests depth ownership rather than inside-lens clipping. Control: Writer Depth ON. Lens alpha 0.48 and HUD alpha 0.96 remain unchanged. The late HUD reveals writer depth ownership, not lens clipping.
M10 Crystal-iris AR visor.

A violet curved visor has a rotating seven-part crystal iris and cyan circular instruments, visually separate from M09's flight crest.

Writer: Violet/gold crystal iris
Reader: Violet curved visor lens
Neither: Late cyan circular HUD and sculpted frame
Reader depth ON / Reader depth OFF reveal Reader depth ON / Reader depth OFF reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,1,0]
Advanced Outside / LEqual / LEqual
Iris writer q2451: Always/Replace, LEqual, depth On. Curved-lens reader q2452: NotEqual/Keep, LEqual, depth Off. Both Cull Off. Rear cyan HUD q3000, depth Off; opaque frame q2000. Only Reader Depth changes. The visible lens admits the later HUD when reader depth is off, while the crystal iris still writes depth. Not M09's writer-depth effect, and Depth Off does not itself change color alpha. Control: Reader Depth ON. The lens admits the late HUD while the iris still blocks it. Disabling depth writes does not change alpha or disable depth testing.
A01 Ice-silver character transformation.

A feather-edged traveling boundary switches the original character's hair and costume to an ice-blue/silver palette while retaining skin, eyes and source texture detail.

Writer: Feather-edged transformation veil
Reader: Ice-silver character copy
Outside comparison / Inside comparison reveal Outside comparison / Inside comparison reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,1,1]
Advanced Inside / LEqual / LEqual
Veil writer: Always/Replace, LEqual, depth On. Alternate character readers: Equal/Keep, LEqual, depth On. Both alternate and original-color foundation use BLEND with transparent depth write; retain the source material ordering. Only Comparison changes. It switches complementary regions of the character recolor, not M03 writer-inside-reader clipping, M05/M06 negative-space ribbons, or M07's surrounding aura. The original-color foundation draws late so it cannot block the behind-body stencil stamp. Control: Outside comparison. Both character copies use BLEND with transparent depth write; the original-color foundation draws late. This is a palette change, not a wardrobe replacement.
A02 Amber spirit familiar reliquary.

A small amber version of the character bobs inside an ornate, dark feather-and-gold reliquary beside the original avatar.

Writer: Amber character familiar
Reader: Avatar materials
Writer LEqual / Writer Always reveal Writer LEqual / Writer Always reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,1,1]
Advanced Outside / Always / LEqual
Amber projection writer: Always/Replace, ZTest Always, depth On, Cull Off in the active imported stencil variant. Avatar readers: NotEqual/Keep, LEqual, depth On. The opaque reliquary uses ordinary MToon rendering. Only Writer ZTest changes. The familiar appears through unrelated cover outside the original avatar silhouette; no reader is required to authorize that region. This distinguishes unconditional depth bypass from M02 and M08 body-local X-ray. Control: Writer LEqual. This single-atlas projection uses sorted faces and a locked camera. Arbitrary-camera self-occlusion is not supported by this setup. Export doubleSided=false; active Unity stencil variant uses Cull Off.
A03 Feather-shutter spirit projection.

A larger violet character projection appears through a layered petal screen while an articulated white-and-gold feather shutter cuts it away.

Writer: Articulated feather shutter
Reader: Violet character projection
Reader LEqual / Reader Always reveal Reader LEqual / Reader Always reveal
Synchronized Blender / Unity
Simplified [0,0,0,1,1,1,1]
Advanced Outside / LEqual / Always
Feather writer: Always/Replace, LEqual, depth On, Cull Off. Violet projection reader: NotEqual/Keep, ZTest Always, depth On, Cull Off in the active imported stencil variant. The screen remains ordinary opaque geometry. Only Reader ZTest changes. Reader color bypasses cover while the depth-tested writer retains its stencil cutout. Unlike A02 the visible projection is the reader, not an unconditional writer; unlike M08 this is not hidden-reader silhouette authorization. Control: Reader LEqual. The camera-locked projection shows reader color through cover while retaining the writer cutout. Export doubleSided=false; active Unity stencil variant uses Cull Off.