- Remove geoN (ddx/ddy) from smooth PS entirely — use smooth interpolated
normal N for all triplanar sampling (albedo, heightmap, normal map).
geoN changes discontinuously at triangle edges, causing per-triangle
faceting in texture weights and normal perturbation.
- Tune consistency-based vertex normal blend to smoothstep(0.70, 0.90):
snaps to face normal at 90° boundaries (seamless blocky join) while
preserving smooth normals on curved terrain.
- Unify all 3 edge axes (X/Y/Z) to same smoothstep formula (was mixed
smoothstep + pow4).
- Remove grass-specific hardcoded shading from both PS (side darkening,
warm shift, ambient boost) — will be data-driven per-material later.
- Remove CPU SmoothMesher code (GPU-only path).
- Document all findings in TROUBLESHOOTING.md with calibration table.