fiapup: fur, behind ?fur and in a fur lab master
fur.mjs draws the pup's balls and limbs as shell fur in the same WebGL context and depth buffer as the flat yard: one instanced draw of primitive × layer, alpha-tested, 16 shells by default (8 low, 24 high, stepping down by itself under 50 fps), strands from a hash over octahedral cells on balls and around-and-along cells on limbs, clumped, a toon ramp on half-Lambert with root shade, lighter tips and a rim, and an inverted-hull ink line notched by the clump noise. no fur on eyes, nose, paws, tongue, collar; long on ears and the tail. eyes and nose become decals on the head's surface that hide when turned away. combing: a 256² RGBA8 atlas, a 16² octahedral tile per primitive, keyed stably by sketch and record. a stroke over the fur picks the primitive by ray and splats direction and flatness; it holds 1.2 s, then springs back with a little overshoot. running ruffles each clump its own way, decaying over ~6 s, and each part's tips lag on a spring. fur-lab.html: the pup close up, stroke it, sliders for shells and strand density, flat/fur, zoomies and nap. fur-shots.mjs: flat against fur at phone size. the iOS app takes -fur and -stats.