public CustomRenderTexture DrawNoiseArea(int noiseID)
    {
        CustomRenderTexture noiseTex = NoiseTexGenerator.GetPreViewNoise3DRT(t[noiseID], noiseID, oldType[noiseID] != t[noiseID]);

        oldType[noiseID] = t[noiseID];
        if (true)
        {
            PreviewTex3dMat[noiseID].SetTexture("_Volume", noiseTex);
            Rect    rect = new Rect(texShowerRect.x + 300 * noiseID, texShowerRect.y, texShowerRect.width, texShowerRect.height);
            Texture t    = DrawTexture3DPreview(noiseTex, rect, BackgroundGuiStyle, PreviewTex3dMat[noiseID]);

            GUI.DrawTexture(texShowerRect, t, ScaleMode.ScaleToFit, false);
        }
        else
        {
            GUI.DrawTexture(texShowerRect, noiseTex, ScaleMode.ScaleToFit, false);
        }

        GUILayout.BeginArea(new Rect(10, 300, 280, 500));
        if (true)
        {
            tex3D_Z[noiseID] = EditorGUILayout.Slider("Z:", tex3D_Z[noiseID], -2, 2);
            PreviewTex3dMat[noiseID].SetFloat("_Z", tex3D_Z[noiseID]);
        }
        else
        {
            for (int i = 0; i < 3; i++)
            {
                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.LabelField("--------------NoiseParam---------------");
        t[noiseID]     = (NoiseTexGenerator.Noise3DType)EditorGUILayout.EnumPopup("Noise Tpye: ", t[noiseID]);
        scale[noiseID] = EditorGUILayout.Slider("Scale: ", scale[noiseID], 0, 50);
        noiseTex.material.SetFloat("_Scale", scale[noiseID]);
        useFBM[noiseID] = EditorGUILayout.Toggle("Use FBM:", useFBM[noiseID]);
        if (useFBM[noiseID])
        {
            noiseTex.material.EnableKeyword("_USEFBM");
            octaves[noiseID]    = EditorGUILayout.IntSlider("Octaves:", octaves[noiseID], 1, 10);
            lacunarity[noiseID] = EditorGUILayout.FloatField("Lacunarity:", lacunarity[noiseID]);
            gain[noiseID]       = EditorGUILayout.Slider("Gain:", gain[noiseID], -1, 1);
            amplitude0[noiseID] = EditorGUILayout.Slider("Amplitude0:", amplitude0[noiseID], -1, 1);
            frequency0[noiseID] = EditorGUILayout.FloatField("Frequency0:", frequency0[noiseID]);
            noiseTex.material.SetInt("_Octaves", octaves[noiseID]);
            noiseTex.material.SetFloat("_Lacunarity", lacunarity[noiseID]);
            noiseTex.material.SetFloat("_Gain", gain[noiseID]);
            noiseTex.material.SetFloat("_Amplitude0", amplitude0[noiseID]);
            noiseTex.material.SetFloat("_Frequency0", frequency0[noiseID]);
        }
        else
        {
            noiseTex.material.DisableKeyword("_USEFBM");
        }

        EditorGUILayout.ObjectField(noiseTex, typeof(CustomRenderTexture));
        GUILayout.EndArea();
        return(noiseTex);
    }
    static void NoiseCreatorWindow()
    {
        //创建窗口
        Rect wr = new Rect(0, 0, 1000, 600);

        win = (Noise3DCreatorEditor)EditorWindow.GetWindowWithRect(typeof(Noise3DCreatorEditor), wr, true, "Noise2D Creator");
        NoiseTexGenerator.Init();
        win.Show();
    }
    IEnumerator Export()
    {
        CustomRenderTexture exportRT = NoiseTexGenerator.GenerateNoise2DBlendRT(blendMaterial, width, height);

        yield return(null);

        NoiseTexGenerator.ExportNoiseRTToPNG(exportRT);
        exportRT.Release();
    }
    IEnumerator Export()
    {
        CustomRenderTexture exportRT = NoiseTexGenerator_Single.GenerateNoiseRT(t, scale, width, height, depth);

        yield return(null);

        NoiseTexGenerator.ExportNoiseRTToPNG(exportRT);
        exportRT.Release();
    }
示例#5
0
    IEnumerator Export()
    {
        CustomRenderTexture exportRT = NoiseTexGenerator.GenerateNoise2DBlendRT(blendMaterial, width, height);

        yield return(null);

        NoiseTexGenerator.ExportNoiseRTToPNG(exportRT);
        exportRT.Release();
        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            oldType[i] = NoiseTexGenerator.Noise2DType.NeedChange;
        }
        win.Repaint();
    }
    IEnumerator ExportTex3D(bool isPNG)
    {
        CustomRenderTexture exportRT = NoiseTexGenerator_Single.GenerateNoiseRT(t, scale, width, height, depth);

        yield return(null);

        if (isPNG)
        {
            NoiseTexGenerator.SaveRTToPNG(exportRT, width, height, depth);
        }
        else
        {
            NoiseTexGenerator.SaveToTex3D(exportRT, width, height, depth);
        }
        NoiseTexGenerator.SetMaterial();
        exportRT.Release();
    }
示例#7
0
    public void OnGUI()
    {
        if (GUILayout.Button("reset noise"))
        {
            NoiseTexGenerator.Init();
        }
        CustomRenderTexture[] crtList = new CustomRenderTexture[NoiseTexGenerator.NOISE_NUM];
        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            GUILayout.BeginArea(new Rect(10 + 310 * i, 10, 300, 800));
            crtList[i] = DrawNoiseArea(i);
            GUILayout.EndArea();
        }
        GUILayout.BeginArea(new Rect(10 + 310 * NoiseTexGenerator.NOISE_NUM, 10, 550, 800));
        CustomRenderTexture noiseTex = NoiseTexGenerator.t_Blend2D;

        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            noiseTex.material.SetTexture("_MainTex" + i, crtList[i]);
        }
        GUI.DrawTexture(texShowerRect, noiseTex, ScaleMode.ScaleToFit, false);
        GUILayout.BeginArea(new Rect(10, 300, 280, 500));
        blendMaterial = EditorGUILayout.ObjectField(blendMaterial, typeof(Material), false) as Material;
        if (blendMaterial != null)
        {
            noiseTex.material = blendMaterial;
        }
        else
        {
            blendMaterial = noiseTex.material;
        }
        EditorGUILayout.ObjectField(noiseTex, typeof(CustomRenderTexture));
        EditorGUILayout.LabelField("-------------------------------------------EXPORT------------------------------------------");
        width  = EditorGUILayout.IntField("Width: ", width);
        height = EditorGUILayout.IntField("Height: ", height);

        {
            if (GUILayout.Button("Export PNG"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(Export());
            }
        }
        GUILayout.EndArea();
        GUILayout.EndArea();
    }
示例#8
0
    public CustomRenderTexture DrawNoiseArea(int noiseID)
    {
        CustomRenderTexture noiseTex = NoiseTexGenerator.GetPreViewNoise2DRT(t[noiseID], noiseID, oldType[noiseID] != t[noiseID]);

        oldType[noiseID] = t[noiseID];
        GUI.DrawTexture(texShowerRect, noiseTex, ScaleMode.ScaleToFit, false);

        GUILayout.BeginArea(new Rect(10, 300, 280, 500));
        for (int i = 0; i < 3; i++)
        {
            EditorGUILayout.Space();
        }

        EditorGUILayout.LabelField("--------------NoiseParam---------------");
        t[noiseID]     = (NoiseTexGenerator.Noise2DType)EditorGUILayout.EnumPopup("Noise Tpye: ", t[noiseID]);
        scale[noiseID] = EditorGUILayout.Slider("Scale: ", scale[noiseID], 1, 10);
        noiseTex.material.SetFloat("_Scale", scale[noiseID]);
        useFBM[noiseID] = EditorGUILayout.Toggle("Use FBM:", useFBM[noiseID]);
        if (useFBM[noiseID])
        {
            noiseTex.material.EnableKeyword("_USEFBM");
            octaves[noiseID]    = EditorGUILayout.IntSlider("Octaves:", octaves[noiseID], 1, 10);
            lacunarity[noiseID] = EditorGUILayout.FloatField("Lacunarity:", lacunarity[noiseID]);
            gain[noiseID]       = EditorGUILayout.FloatField("Gain:", gain[noiseID]);
            amplitude0[noiseID] = EditorGUILayout.FloatField("Amplitude0:", amplitude0[noiseID]);
            frequency0[noiseID] = EditorGUILayout.FloatField("Frequency0:", frequency0[noiseID]);
            noiseTex.material.SetInt("_Octaves", octaves[noiseID]);
            noiseTex.material.SetFloat("_Lacunarity", lacunarity[noiseID]);
            noiseTex.material.SetFloat("_Gain", gain[noiseID]);
            noiseTex.material.SetFloat("_Amplitude0", amplitude0[noiseID]);
            noiseTex.material.SetFloat("_Frequency0", frequency0[noiseID]);
        }
        else
        {
            noiseTex.material.DisableKeyword("_USEFBM");
        }

        EditorGUILayout.ObjectField(noiseTex, typeof(CustomRenderTexture));
        GUILayout.EndArea();
        return(noiseTex);
    }
    IEnumerator ExportTex3D(bool isPNG)
    {
        CustomRenderTexture exportRT = NoiseTexGenerator.GenerateNoise3DBlendRT(blendMaterial, width, height, depth);

        yield return(null);

        if (isPNG)
        {
            NoiseTexGenerator.SaveRTToPNG(exportRT, width, height, depth);
        }
        else
        {
            NoiseTexGenerator.SaveToTex3D(exportRT, width, height, depth);
        }
        exportRT.Release();
        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            oldType[i] = NoiseTexGenerator.Noise3DType.NeedChange;
        }
        win.Repaint();
    }
 public void OnDisable()
 {
     PreviewRenderUtilityHelpers.Instance.Cleanup();
     NoiseTexGenerator.Clear();
 }
    public void OnGUI()
    {
        if (GUILayout.Button("reset noise"))
        {
            NoiseTexGenerator.Init();
        }
        CustomRenderTexture[] crtList = new CustomRenderTexture[NoiseTexGenerator.NOISE_NUM];
        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            GUILayout.BeginArea(new Rect(10 + 310 * i, 10, 300, 800));
            crtList[i] = DrawNoiseArea(i);
            GUILayout.EndArea();
        }
        GUILayout.BeginArea(new Rect(10 + 310 * NoiseTexGenerator.NOISE_NUM, 10, 550, 800));
        CustomRenderTexture noiseTex = NoiseTexGenerator.t_Blend3D;

        for (int i = 0; i < NoiseTexGenerator.NOISE_NUM; i++)
        {
            noiseTex.material.SetTexture("_MainTex" + i, crtList[i]);
        }
        if (true)
        {
            PreviewTex3dMat[NoiseTexGenerator.NOISE_NUM].SetTexture("_Volume", noiseTex);
            Rect    rect = new Rect(texShowerRect.x + 300 * NoiseTexGenerator.NOISE_NUM, texShowerRect.y, texShowerRect.width, texShowerRect.height);
            Texture t    = DrawTexture3DPreview(noiseTex, rect, BackgroundGuiStyle, PreviewTex3dMat[NoiseTexGenerator.NOISE_NUM]);

            GUI.DrawTexture(texShowerRect, t, ScaleMode.ScaleToFit, false);
        }
        GUILayout.BeginArea(new Rect(10, 300, 280, 500));
        tex3DBlend_Z = EditorGUILayout.Slider("Z:", tex3DBlend_Z, -2, 2);
        PreviewTex3dMat[NoiseTexGenerator.NOISE_NUM].SetFloat("_Z", tex3DBlend_Z);
        blendMaterial = EditorGUILayout.ObjectField(blendMaterial, typeof(Material), false) as Material;
        if (blendMaterial != null)
        {
            noiseTex.material = blendMaterial;
        }
        else
        {
            blendMaterial = noiseTex.material;
        }
        EditorGUILayout.ObjectField(noiseTex, typeof(CustomRenderTexture));
        EditorGUILayout.LabelField("-------------------------------------------EXPORT------------------------------------------");
        width  = EditorGUILayout.IntField("Width: ", width);
        height = EditorGUILayout.IntField("Height: ", height);
        if (true)
        {
            depth = EditorGUILayout.IntSlider("Depth: ", depth, 1, Mathf.FloorToInt(SystemInfo.maxTextureSize / (float)height));
        }

        if (true)
        {
            if (GUILayout.Button("Export Tex3D(large memory!)"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(ExportTex3D(false));
            }
            if (GUILayout.Button("Export PNG"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(ExportTex3D(true));
            }
        }
        else
        {
            if (GUILayout.Button("Export PNG"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(Export());
            }
        }
        GUILayout.EndArea();
        GUILayout.EndArea();
    }
    public void OnGUI()
    {
        if (GUILayout.Button("reset noise"))
        {
            NoiseTexGenerator.Init();
        }
        CustomRenderTexture noiseTex = NoiseTexGenerator_Single.GetPreViewNoiseRT(t);

        if (t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D || t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D_ZLoop)
        {
            PreviewTexdMat.SetTexture("_Volume", noiseTex);
            Texture t = DrawTexture3DPreview(noiseTex, texShowerRect, BackgroundGuiStyle);

            GUI.DrawTexture(texShowerRect, t, ScaleMode.ScaleToFit, false);
        }
        else
        {
            GUI.DrawTexture(texShowerRect, noiseTex, ScaleMode.ScaleToFit, false);
        }
        for (int i = 0; i < 48; i++)
        {
            EditorGUILayout.Space();
        }
        if (t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D || t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D_ZLoop)
        {
            tex3D_Z = EditorGUILayout.Slider("Z:", tex3D_Z, -2, 2);
            PreviewTexdMat.SetFloat("_Z", tex3D_Z);
        }
        else
        {
            for (int i = 0; i < 5; i++)
            {
                EditorGUILayout.Space();
            }
        }

        EditorGUILayout.LabelField("--------------NoiseParam---------------");
        t     = (NoiseTexGenerator_Single.NoiseType)EditorGUILayout.EnumPopup("Noise Tpye: ", t);
        scale = EditorGUILayout.FloatField("Scale: ", scale);
        noiseTex.material.SetFloat("_Scale", scale);
        EditorGUILayout.ObjectField(noiseTex, typeof(CustomRenderTexture));
        //_previewTex3dMat2 = (Material)EditorGUILayout.ObjectField(_previewTex3dMat2, typeof(Material),false);
        useFBM = EditorGUILayout.Toggle("Use FBM:", useFBM);
        if (useFBM)
        {
            noiseTex.material.EnableKeyword("_USEFBM");
            octaves    = EditorGUILayout.IntSlider("Octaves:", octaves, 1, 10);
            lacunarity = EditorGUILayout.FloatField("Lacunarity:", lacunarity);
            gain       = EditorGUILayout.FloatField("Gain:", gain);
            amplitude0 = EditorGUILayout.FloatField("Amplitude0:", amplitude0);
            frequency0 = EditorGUILayout.FloatField("Frequency0:", frequency0);
            noiseTex.material.SetInt("_Octaves", octaves);
            noiseTex.material.SetFloat("_Lacunarity", lacunarity);
            noiseTex.material.SetFloat("_Gain", gain);
            noiseTex.material.SetFloat("_Amplitude0", amplitude0);
            noiseTex.material.SetFloat("_Frequency0", frequency0);
        }
        else
        {
            noiseTex.material.DisableKeyword("_USEFBM");
        }


        //distance = EditorGUILayout.FloatField("Distance: ", distance);
        EditorGUILayout.LabelField("--------------EXPORT---------------");
        width  = EditorGUILayout.IntField("Width: ", width);
        height = EditorGUILayout.IntField("Height: ", height);
        if (t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D || t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D_ZLoop)
        {
            depth = EditorGUILayout.IntSlider("Depth: ", depth, 1, Mathf.FloorToInt(SystemInfo.maxTextureSize / (float)height));
        }

        if (t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D || t == NoiseTexGenerator_Single.NoiseType.PerilinNoise3D_ZLoop)
        {
            if (GUILayout.Button("Export Tex3D(large memory!)"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(ExportTex3D(false));
            }
            if (GUILayout.Button("Export PNG"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(ExportTex3D(true));
            }
        }
        else
        {
            if (GUILayout.Button("Export PNG"))
            {
                EditorCoroutineRunner.StartEditorCoroutine(Export());
            }
        }
    }