mirror of
https://github.com/DeeJanuz/frametop.git
synced 2026-10-26 22:01:51 +01:00
The look: no more drawn outline. The old rim pass lit a hard line wherever the hand met the background or a part of it further back, so a finger over the palm got scratchy white lines. Now the body pass keeps only the surface nearest the eye (depth) and writes how squarely it faces the eye, the fade, a light from above and how near a fingertip; the second pass turns that into a soft fresnel rim, a slight fingertip glow and an antialiased outline. ghost glows white toward its edges; solid is lit from above with a soft cool rim. The wrist: the model is cut open where the fade ends, so a hand pointing away showed its inside (a hollow tube, a fist's fingertips through the palm). A stencil pass counts front faces up and back faces down along each view (on its own, with the depth test off: early depth would drop hidden ones); where a view went in through the cut, a disc where the fade begins covers it. The models: HANDS_VIEW_MODEL=asset (generic-hand, still the default) | babylon (Babylon.js, CC BY 4.0) | mrtk3 (BSD-3-Clause, right only, mirrored) | godot (Godot XR Tools, CC0) | mrtk2 (MIT) | capsules. Each is in screens/assets/hands/<name>/ with its licence and a README giving the source commit, hashes and conversion (the MRTK ones were FBX: assimp, then the new screens/tools/hand-glb-clean.py). hand-asset.py maps each skeleton onto WebXR's 25 joints by name and writes them all into handasset.h; handskin takes the model's index. Cost (--snapshot, asset): CPU 0.34 ms per draw (was 0.32-0.33), GPU wait 0.61-0.62 ms per draw (was 0.57). --snapshot now prints the GPU wait. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>