func NormToView(x, y, z float32, proj f32.Mat4) (float32, float32) { nv := f32.Vec3{x, y, z} unproj := Mtoa(proj) unproj.Inverse(&unproj) nv[0], nv[1] = nv.Dot(&unproj[0]), nv.Dot(&unproj[1]) return nv[0], nv[1] }
func NormToWorld(x, y, z float32, view, proj f32.Mat4) (float32, float32) { nv := f32.Vec3{x, y, z} unproj := Mtoa(proj) unproj.Inverse(&unproj) unview := Mtoa(view) unview.Inverse(&unview) nv[0], nv[1] = nv.Dot(&unproj[0]), nv.Dot(&unproj[1]) nv[0], nv[1] = nv.Dot(&unview[0]), nv.Dot(&unview[1]) return nv[0], nv[1] }