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(); }
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(); }
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(); }
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()); } } }