Phase 5 updates

Phase 5 · Slice 8 ·

Scrolling and masks

  • ScrollRect:
    • dragging, the scroll wheel and normalized positions;
    • clamped, elastic (rubber-band overstretch, spring back) and unrestricted movement, with inertia;
    • scrollbars that follow and drive it, auto-hiding (and expanding the viewport);
    • onValueChanged once a frame, from LateUpdate.
  • Scrollbar: handle drag, track paging and steps.
  • RectMask2D: clip rects in canvas space with padding, culling the graphics outside (when the canvases update, after layout), and raycast filtering. Also ClipperRegistry, Clipping and MaskUtilities.
  • Mask: raycast filtering, and showMaskGraphic. It clips to its rect: Tassix has no stencil masking for the graphic's shape.
  • Canvas drawing clips UI triangles on the CPU to the clip rects in canvas space, interpolating UVs and colors at the cut.
  • A new ui_scroll scenario recorded in Unity checks the following, and matches in both runs:
    • dragging (clamped and elastic overstretch), the scroll wheel, scrollbar sync both ways and handle dragging;
    • normalized positions and value-change events, culling, clip rects, and mask raycasts.
    • Inertia and spring back aren't compared: Unity runs them in real time. 34 scenarios pass.
  • An MCP e2e test screenshots both masks clipping their content.
  • Next: InputField and Dropdown (and TextMeshPro's), and texture maps for PBR materials.