Exemplo n.º 1
0
    public static void TestVector()
    {
        int   r  = 3;
        float sd = 10.5f;

        float[] result    = GaussianMatrixGen.GetGaussianMatrixIn2d(sd, r);
        float   precision = 0.0f;

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i <= r + r; i++)
        {
            for (int j = 0; j <= r + r; j++)
            {
                sb.AppendFormat("{0}\t", result [i * (r + r + 1) + j]);
                precision += result [i * (r + r + 1) + j];
            }
            sb.AppendLine();
        }
        print(sb.ToString());

        print("precision: " + precision);

        result = GaussianMatrixGen.GetGaussianMatrixIn1d(sd, r);
        sb     = new StringBuilder();
        for (int j = 0; j <= r + r; j++)
        {
            sb.AppendFormat("{0}\t", result [j]);
        }
        print(sb.ToString());
    }
Exemplo n.º 2
0
    public void Test32()
    {
        Texture2D tex32 = sp32.texture;

        byte[] data = tex32.GetRawTextureData();
        print(data.Length);
        print("width: " + tex32.width);
        print("height: " + tex32.height);

        byte[] result_32   = new byte[data.Length];
        byte[] result_32_4 = new byte[data.Length];
        byte[] result_32h  = new byte[data.Length];
        byte[] result_32v  = new byte[data.Length];

        byte[] result_32_repeat = new byte[data.Length];
        byte[] result_32_src    = null;
        byte[] result_32_dst    = null;
        byte[] result_32_tmp    = null;

        TimeSpan ts;
        DateTime dt = DateTime.Now;

        GaussianBlur.Blur32(data, tex32.width, tex32.height, 2, 4, result_32_4);
        ts = DateTime.Now - dt;
        print("blur32_4: " + ts);
        dt = DateTime.Now;
        GaussianBlur.Blur32(data, tex32.width, tex32.height, 2.0f, 3, result_32);
        ts = DateTime.Now - dt;
        print("blur32: " + ts);
        dt = DateTime.Now;
        //GaussianBlur.Blur32 (data, tex32.width, tex32.height, result_32);
        for (int i = 0; i < GaussianBlur.cDefaultRadius + GaussianBlur.cDefaultRadius + 1; i++)
        {
            GaussianBlur.Blur32Horizontal(data, tex32.width, tex32.height, i, result_32h);
        }
        ts = DateTime.Now - dt;
        print("blur32h: " + ts);
        dt = DateTime.Now;
        for (int i = 0; i < GaussianBlur.cDefaultRadius + GaussianBlur.cDefaultRadius + 1; i++)
        {
            GaussianBlur.Blur32Vertical(data, tex32.width, tex32.height, i, result_32v);
        }
        ts = DateTime.Now - dt;
        print("blur32v: " + ts);
        dt            = DateTime.Now;
        result_32_src = data;
        result_32_dst = result_32_repeat;
        float sd = 5.5f;
        int   r  = 3;

        float[] matrix = GaussianMatrixGen.GetGaussianMatrixIn2d(sd, r);
        for (int i = 0; i < r + r + 1; i++)
        {
            GaussianBlur.Blur32Horizontal(result_32_src, tex32.width, tex32.height, matrix, sd, r, i, result_32_dst);
        }
        result_32_src = result_32_repeat;
        result_32_dst = data;
        for (int i = 0; i < r + r + 1; i++)
        {
            GaussianBlur.Blur32Vertical(result_32_src, tex32.width, tex32.height, matrix, sd, r, i, result_32_dst);
        }
        result_32_src = data;
        result_32_dst = result_32_repeat;
        GaussianBlur.Blur32(result_32_src, tex32.width, tex32.height, 100.5f, 3, result_32_dst);
        ts = DateTime.Now - dt;
        print("blur32-hv: " + ts);
        dt = DateTime.Now;
        sd = 0.84089642f;
        r  = 3;
        ts = DateTime.Now - dt;
        print("blur32-repeat: " + ts);

        Texture2D t32 = new Texture2D(tex32.width, tex32.height, TextureFormat.RGBA32, false, true);

        t32.LoadRawTextureData(result_32);
        File.WriteAllBytes(Path.Combine(Application.dataPath, "test_gaussianblur32.png"), t32.EncodeToPNG());

        Texture2D t32_4 = new Texture2D(tex32.width, tex32.height, TextureFormat.RGBA32, false, true);

        t32_4.LoadRawTextureData(result_32_4);
        File.WriteAllBytes(Path.Combine(Application.dataPath, "test_gaussianblur32_4.png"), t32_4.EncodeToPNG());

        Texture2D t32h = new Texture2D(tex32.width, tex32.height, TextureFormat.RGBA32, false, true);

        t32h.LoadRawTextureData(result_32h);
        File.WriteAllBytes(Path.Combine(Application.dataPath, "test_gaussianblur32h.png"), t32h.EncodeToPNG());

        Texture2D t32v = new Texture2D(tex32.width, tex32.height, TextureFormat.RGBA32, false, true);

        t32v.LoadRawTextureData(result_32v);
        File.WriteAllBytes(Path.Combine(Application.dataPath, "test_gaussianblur32v.png"), t32v.EncodeToPNG());

        Texture2D t32repeat = new Texture2D(tex32.width, tex32.height, TextureFormat.RGBA32, false, true);

        t32repeat.LoadRawTextureData(result_32_dst);
        File.WriteAllBytes(Path.Combine(Application.dataPath, "test_gaussianblur32hv.png"), t32repeat.EncodeToPNG());
    }