- Remove flat-shaded MeshLambertMaterial overlay that was covering the
custom shader output on user-masked faces (root cause of static shading)
- Pass smooth interpolated normal (vSmoothNormal) to fragment shader and
blend toward it on masked faces so they get smooth view-dependent
lighting instead of flat per-face shading
- Brighten user-mask color to warm orange (0.85, 0.40, 0.15) for better
visibility of lighting variation on masked surfaces
- Shader now handles all mask visualization consistently: exclude mode
(orange), include-only mode (orange for unselected), and angle mask
(grey) all receive identical smooth shading
- Track whether each boundary is from user masking or angle masking
via a new boundaryMaskTypeAttr vertex attribute (0=user, 1=angle)
- Pass vUserMask and vMaskType varyings to the fragment shader
- Use consistent teal base color for all surfaces so lighting is
uniform across masked and textured areas (fixes dark halo artifact)
- Tint the falloff gradient warm red-orange near user-painted masks
and neutral grey near angle-masked boundaries