SurfaceNormal implementation