Two issues from code review: (1) the noise coordinate used phi=atan2 which has a branch-cut discontinuity at ±π, producing a visible radial seam. Switch to Cartesian pos.x/pos.z (continuous, seam-free). (2) value_noise3 summed three hash components per corner via dot(.,(1,1,1)), giving a [-1.5,1.5) range instead of [0,1). Use a single scalar hash (.x) per corner and drop the +0.5 recenter.