Exemplo n.º 1
0
    //this was used to compare the values from the normal noise function and the gpu version and make sure they match up
    void tmpArrayTestTexture()
    {
        NoiseS3D.octaves = 1;
        NoiseS3D.seed    = 10;

        Vector2[] noiseData = new Vector2[100];
        for (int t = 0; t < 100; t++)
        {
            noiseData[t] = new Vector2(t, Random.Range(0, 100000));
        }

        float[] outputNormal = new float[100];
        for (int t = 0; t < 100; t++)
        {
            outputNormal[t] = (((float)NoiseS3D.Noise(noiseData[t].x * 0.01, noiseData[t].y * 0.01)) + 1) * 0.5f;
        }

        float[] outputNoise = NoiseS3D.NoiseArrayGPU(noiseData);

        for (int t = 0; t < 100; t++)
        {
            Debug.Log("norm" + t + " = " + outputNormal[t] + "  :  array" + t + " = " + outputNoise[t]);
        }
    }
Exemplo n.º 2
0
    // Use this for initialization
    void Start()
    {
        //tmpArrayTestTexture();
        //return;

        int testCount = (int)(testRes.x * testRes.y);

        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            for (int t = 0; t < testCount; t++)
            {
                float noiseValue = Mathf.PerlinNoise(i, t);
            }
        }
        sw.Stop();
        Debug.Log("Unity 2D perlin noise: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "Unity 2D perlin noise: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();

        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            for (int t = 0; t < testCount; t++)
            {
                double noiseValue = NoiseS3D.Noise(i, t);
            }
        }
        sw.Stop();
        Debug.Log("NoiseS3D 2D noise : " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "NoiseS3D 2D noise: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();


        NoiseS3D.octaves = 1;
        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            RenderTexture noiseTex = NoiseS3D.GetNoiseRenderTexture((int)testRes.x, (int)testRes.y);
        }
        sw.Stop();
        Debug.Log("NoiseS3D 2D noise RenderTexture on GPU: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "NoiseS3D 2D noise RenderTexture on GPU: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();

        NoiseS3D.octaves = 1;
        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            Texture2D noiseTex = NoiseS3D.GetNoiseTexture((int)testRes.x, (int)testRes.y);
        }
        sw.Stop();
        Debug.Log("NoiseS3D 2D noise Texture2D on GPU: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "NoiseS3D 2D noise Texture2D on GPU: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();
        sw.Stop();

        //create this data outside of the timer, otherwise its not fair comparision bc the other tests did not need to create data
        Vector2[] noiseData = new Vector2[testCount];
        for (int t = 0; t < testCount; t++)
        {
            noiseData[t] = new Vector2(t, Random.Range(0, 100000));
        }

        sw.Reset();

        NoiseS3D.octaves = 1;
        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            float[] outputNoise = NoiseS3D.NoiseArrayGPU(noiseData);
        }
        sw.Stop();
        Debug.Log("NoiseS3D 2D noise array on GPU not including array creation: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "NoiseS3D 2D noise array on GPU not including array creation: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();

        NoiseS3D.octaves = 1;
        sw.Start();
        for (int i = 0; i < iterations; i++)
        {
            Vector2[] noiseOutput = new Vector2[testCount];
            for (int t = 0; t < testCount; t++)
            {
                noiseOutput[t] = new Vector2(i, t);
            }
            float[] outputNoise = NoiseS3D.NoiseArrayGPU(noiseOutput);
        }
        sw.Stop();
        Debug.Log("NoiseS3D 2D noise array on GPU including array creation: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.");
        outputText.text += "NoiseS3D 2D noise array on GPU including array creation: " + sw.ElapsedMilliseconds / iterations + " Avg milliseconds to perform " + testCount + " noise calls.\n";

        sw.Reset();
    }