예제 #1
0
    public void MyRunTest()
    {
        // ISF 基础函数测试
        // ======================
        Texture3D tex_psi1;
        Texture3D tex_psi2;

        var psi1 = fft.LoadJson3D("test/psi1.json", out tex_psi1);
        var psi2 = fft.LoadJson3D("test/psi2.json", out tex_psi2);

        fft.ExportComplex3D(psi1, "test/sch.ps1.fft.json");

        ShroedingerIntegration(ref psi1, ref psi2);


        fft.ExportArray(SchroedingerMul, TextureFormat.RGBAFloat, 2, "test/isf.sch.mul.json");

        fft.ExportArray(psi1, TextureFormat.RGBAFloat, 2, "test/isf.sch.ps1.json");
        fft.ExportArray(psi2, TextureFormat.RGBAFloat, 2, "test/isf.sch.ps2.json");

        Normalize(ref psi1, ref psi2);


        fft.ExportArray(psi1, TextureFormat.RGBAFloat, 2, "test/isf.nor.ps1.json");
        fft.ExportArray(psi2, TextureFormat.RGBAFloat, 2, "test/isf.nor.ps2.json");

        PressureProject(ref psi1, ref psi2);

        fft.ExportArray(psi1, TextureFormat.RGBAFloat, 2, "test/isf.pre.ps1.json");
        fft.ExportArray(psi2, TextureFormat.RGBAFloat, 2, "test/isf.pre.ps2.json");
    }
예제 #2
0
    public void RunMyTest()
    {
        Texture3D tex_psi1;
        Texture3D tex_psi2;

        var psi1 = fft.LoadJson3D("test/psi1.json", out tex_psi1);
        var psi2 = fft.LoadJson3D("test/psi2.json", out tex_psi2);

        UpdateNozzles();
        // fft.ExportFloat1_3D(NozzleRT, "test/isf.nozzle.json");

        var N = isf.N;
        // Nozzle mask
        // =====================
        var rtf4 = FFT.CreateRenderTexture3D(N[0], N[1], N[2]);

        DebugRT = rtf4;
        CS.SetTexture(kernelZeroOutDebugOutput, "DebugOutput", rtf4);
        DispatchCS(kernelZeroOutDebugOutput);

        CS.SetTexture(kernelBlitDebugMask, "Nozzle", NozzleRT);
        CS.SetTexture(kernelBlitDebugMask, "DebugOutput", rtf4);
        DispatchCS(kernelBlitDebugMask);
        fft.ExportFloat4_3D(rtf4, "test/isf.nozzle.mask.json");

        DispatchCS(kernelZeroOutDebugOutput);

        isf.InitializePsi(ref psi1, ref psi2);
        for (int i = 0; i < 10; ++i)
        {
            InitilizeNozzlePsi(ref psi1, ref psi2);
        }

        fft.ExportComplex3D(psi1, "test/isf.ini.ps1.json");
        fft.ExportComplex3D(psi2, "test/isf.ini.ps2.json");

        fft.ExportFloat4_3D(rtf4, "test/isf.phase.json");

        // Application.Quit(0);
    }
예제 #3
0
    void TakeTestN(Vector3Int N)
    {
        isf.N = N;


        isf.InitISF();

        psi1 = FFT.CreateRenderTexture3D(N[0], N[1], N[2], RenderTextureFormat.RGFloat);
        psi2 = FFT.CreateRenderTexture3D(N[0], N[1], N[2], RenderTextureFormat.RGFloat);
        isf.InitializePsi(ref psi1, ref psi2);

        var watch = new System.Diagnostics.Stopwatch();

        watch.Start();

        for (int i = 0; i < 5; ++i)
        {
            isf.current_tick += 1;

            isf.ShroedingerIntegration(ref psi1, ref psi2);
            isf.Normalize(ref psi1, ref psi2);
            isf.PressureProject(ref psi1, ref psi2);
            fft.ExportComplex3D(psi1, null);
            Debug.Log("  At: " + i.ToString());
        }

        watch.Stop();
        BenchmarkSingleResult ben = new BenchmarkSingleResult();

        ben.milli = watch.ElapsedMilliseconds / 5.0;
        ben.Nx    = N.x;
        ben.Ny    = N.y;
        ben.Nz    = N.z;
        ben.scale = N.x * N.y * N.z;

        result.results.Add(ben);
    }