public static Vertex FastLerp(Vertex a, Vertex b, float t) => new Vertex { point = Vector4.Lerp(a.point, b.point, t), onePerZ = MathRaster.Lerp(a.onePerZ, b.onePerZ, t), uv = Vector2.Lerp(a.uv, b.uv, t), normal = Vector3.Lerp(a.normal, b.normal, t), color = Color32.Lerp(a.color, b.color, t), distance2Cam = MathRaster.Lerp(a.distance2Cam, b.distance2Cam, t) };
public override Intermediate Lerp(Intermediate rhs, float facter) { var right = (SampleInterData)rhs; return(new SampleInterData { z_buff = MathRaster.Lerp(z_buff, right.z_buff, facter), UV = Vector2.Lerp(UV, right.UV, facter), FragPos = Vector3.Lerp(FragPos, right.FragPos, facter), Normal = Vector3.Lerp(Normal, right.Normal, facter) }); }
public override Color32 Shade(Vertex p) { var d = (p.distance2Cam / 2f); var d1 = (int)Math.Floor(d); var d2 = (int)Math.Ceiling(d); if (d2 > 8) { d2 = 8; } if (d1 > 8) { d1 = 8; } var gray = MathRaster.Lerp(d1 / 9f, d2 / 9f, d - d1); var c = Color32.Lerp(texture.midmaps[d1].Value(p.uv.X, p.uv.Y, Vector3.One), texture.midmaps[d2].Value(p.uv.X, p.uv.Y, Vector3.One), d - d1); return(new Color32(0, gray, 0, 1) * c); return(Color32.Lerp(texture.midmaps[d1].Value(p.uv.X, p.uv.Y, Vector3.One), texture.midmaps[d2].Value(p.uv.X, p.uv.Y, Vector3.One), d - d1)); }