Example #1
0
 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)
 };
Example #2
0
        private static bool BackFaceCulling(Vertex p1, Vertex p2, Vertex p3)
        {
            var v1       = p2.point - p1.point;
            var v2       = p3.point - p2.point;
            var normal   = Vector3.Cross(MathRaster.V4ToV3(v1), MathRaster.V4ToV3(v2));
            var view_dir = MathRaster.V4ToV3(p1.point) - new Vector3(0, 0, 0);

            return(Vector3.Dot(normal, view_dir) > 0);
        }
Example #3
0
        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)
            });
        }
Example #4
0
        public override Color32 Value(float u, float v, Vector3 p)
        {
            if (dir == 1)
            {
                var t = u;
                u = 1 - v;
                v = t;
            }
            u = u * scale % 1;
            v = v * scale % 1;
            var i = MathRaster.Range((int)(u * w), 0, w - 1);
            var j = MathRaster.Range((int)((1 - v) * h - 0.001f), 0, h - 1);

            return(new Color32(
                       data[3 * i + 3 * w * j] / 255f,
                       data[3 * i + 3 * w * j + 1] / 255f,
                       data[3 * i + 3 * w * j + 2] / 255f));


//            if (dir == 1)
//            {
//                var t = u;
//                u = 1 - v;
//                v = t;
//            }
//            u = u * scale % 1;
//            v = v * scale % 1;
//
//            var U = u * w;
//            var V = (1 - v) * h - 0.001f;
//            var u1 = (int)Math.Floor(U);
//            var u2 = (int)Math.Ceiling(U);
//
//            var v1 = (int)Math.Floor(V);
//            var v2 = (int)Math.Ceiling(V);
//
//            var color1 = Color32.Lerp(GetColor(u1, v1), GetColor(u2, v1), U - u1);
//            var color2 = Color32.Lerp(GetColor(u1, v2), GetColor(u2, v2), U - u1);
//            var color = Color32.Lerp(color1, color2, V - v1);
//            return color;
//            Color32 GetColor(int _u, int _v)
//            {
//                var i = MathRaster.Range(_u, 0, w - 1);
//                var j = MathRaster.Range(_v, 0, h - 1);
//                return new Color32(
//                    data[3 * i + 3 * w * j] / 255f,
//                    data[3 * i + 3 * w * j + 1] / 255f,
//                    data[3 * i + 3 * w * j + 2] / 255f);
//            }
        }
Example #5
0
        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));
        }
Example #6
0
 public Matrix4x4 CaculateMatrix()
 {
     M = MathRaster.GetRotationMatrix(rotation) * Matrix4x4.CreateTranslation(position);
     return(M);
 }
Example #7
0
 public static RgbaFloat LowLevelColor(Color32 c) => new RgbaFloat(MathRaster.Range(c.r, 0, 1), MathRaster.Range(c.g, 0, 1), MathRaster.Range(c.b, 0, 1), MathRaster.Range(c.a, 0, 1));
Example #8
0
 public static void Caculate()
 {
     V = Matrix4x4.Transpose(MathRaster.GetRotationMatrix(main.transform.rotation) * Matrix4x4.CreateTranslation(main.transform.position));
     P = GetProjection(main.FOV, main.Aspect, main.Near, main.Far);
 }
Example #9
0
 public Matrix4x4 CaculateMatrix()
 {
     M = MathRaster.GetRotationMatrix(rotation / 57.3f) * Matrix4x4.CreateTranslation(position);
     //TiM=Matrix4x4.Transpose(MathRaster.GetRotationMatrix(rotation/57.3f) * Matrix4x4.CreateTranslation(position));
     return(M);
 }