public static GInvertParams Create() { GInvertParams param = new GInvertParams(); param.invertRed = true; param.invertGreen = true; param.invertBlue = true; param.invertAlpha = true; return(param); }
public void Apply(RenderTexture targetRt, GTextureFilterParams param) { GInvertParams invertParam = param.Invert; RenderTexture bg = CloneBg(targetRt); Mat.SetTexture("_MainTex", bg); Mat.SetInt("_InvertRed", invertParam.InvertRed ? 1 : 0); Mat.SetInt("_InvertGreen", invertParam.InvertGreen ? 1 : 0); Mat.SetInt("_InvertBlue", invertParam.InvertBlue ? 1 : 0); Mat.SetInt("_InvertAlpha", invertParam.InvertAlpha ? 1 : 0); GCommon.DrawQuad(targetRt, GCommon.FullRectUvPoints, Mat, 0); }
private void DrawFilterLayer(GTextureFilterLayer layer, int index) { string label = string.Format("{0} {1}", ObjectNames.NicifyVariableName(layer.Type.ToString()), layer.Enabled ? "" : "[-]"); string id = "texture-creator-filter" + index; string prefKey = GEditorCommon.GetProjectRelatedEditorPrefsKey("foldout", id); bool expanded = EditorPrefs.GetBool(prefKey, true); int indent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; Rect headerRect = EditorGUILayout.BeginHorizontal(); expanded = EditorGUILayout.Foldout(expanded, label); EditorPrefs.SetBool(prefKey, expanded); GUILayout.FlexibleSpace(); Rect deleteButtonRect = EditorGUILayout.GetControlRect(GUILayout.Width(15)); if (headerRect.Contains(Event.current.mousePosition)) { if (GUI.Button(deleteButtonRect, "X", EditorStyles.label)) { ConfirmAndRemoveFilterAt(index); } } EditorGUILayout.EndHorizontal(); if (expanded) { EditorGUI.indentLevel += 1; layer.Enabled = EditorGUILayout.Toggle("Enable", layer.Enabled); GTextureFilterParams param = layer.Param; if (layer.Type == GTextureFilterType.Blur) { GBlurParams blur = param.Blur; blur.Radius = EditorGUILayout.DelayedIntField("Radius", blur.Radius); EditorGUILayout.LabelField("This filter is expensive!", GEditorCommon.WordWrapItalicLabel); param.Blur = blur; } else if (layer.Type == GTextureFilterType.Curve) { GCurveParams curve = param.Curve; curve.MasterCurve = EditorGUILayout.CurveField("Master", curve.MasterCurve, Color.white, GCommon.UnitRect); curve.RedCurve = EditorGUILayout.CurveField("Red", curve.RedCurve, Color.red, GCommon.UnitRect); curve.GreenCurve = EditorGUILayout.CurveField("Green", curve.GreenCurve, Color.green, GCommon.UnitRect); curve.BlueCurve = EditorGUILayout.CurveField("Blue", curve.BlueCurve, Color.blue, GCommon.UnitRect); curve.AlphaCurve = EditorGUILayout.CurveField("Alpha", curve.AlphaCurve, Color.gray, GCommon.UnitRect); param.Curve = curve; } else if (layer.Type == GTextureFilterType.Invert) { GInvertParams invert = param.Invert; invert.InvertRed = EditorGUILayout.Toggle("Red", invert.InvertRed); invert.InvertGreen = EditorGUILayout.Toggle("Green", invert.InvertGreen); invert.InvertBlue = EditorGUILayout.Toggle("Blue", invert.InvertBlue); invert.InvertAlpha = EditorGUILayout.Toggle("Alpha", invert.InvertAlpha); param.Invert = invert; } else if (layer.Type == GTextureFilterType.Step) { GStepParams step = param.Step; step.Count = EditorGUILayout.IntSlider("Count", step.Count, 1, 256); param.Step = step; } else if (layer.Type == GTextureFilterType.Warp) { GWarpParams warp = param.Warp; warp.MaskIsNormalMap = EditorGUILayout.Toggle("Is Normal Map", warp.MaskIsNormalMap); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Mask"); using (EditorGUI.IndentLevelScope level = new EditorGUI.IndentLevelScope(-1)) { warp.Mask = EditorGUILayout.ObjectField(warp.Mask, typeof(Texture2D), false) as Texture2D; } EditorGUILayout.EndHorizontal(); warp.Strength = EditorGUILayout.FloatField("Strength", warp.Strength); param.Warp = warp; } /* * else if (layer.Type == GTextureFilterType.HydraulicErosion) * { * GHydraulicErosionParams erosion = param.HydraulicErosion; * * erosion.Iteration = EditorGUILayout.IntField("Iteration", erosion.Iteration); * * Vector3 dim = erosion.Dimension; * dim = GEditorCommon.InlineVector3Field("Dimension", dim); * dim.Set(Mathf.Max(1, dim.x), Mathf.Max(1, dim.y), Mathf.Max(1, dim.z)); * erosion.Dimension = dim; * * erosion.Rain = EditorGUILayout.Slider("Rain", erosion.Rain, 0f, 1f); * erosion.Transportation = EditorGUILayout.Slider("Transportation", erosion.Transportation, 0f, 1f); * erosion.AngleMin = EditorGUILayout.Slider("Min Angle", erosion.AngleMin, 1f, 45f); * erosion.Evaporation = EditorGUILayout.Slider("Evaporation", erosion.Evaporation, 0f, 1f); * * EditorGUILayout.BeginHorizontal(); * EditorGUILayout.PrefixLabel("Water Source"); * using (EditorGUI.IndentLevelScope level = new EditorGUI.IndentLevelScope(-1)) * { * erosion.WaterSourceMap = EditorGUILayout.ObjectField(erosion.WaterSourceMap, typeof(Texture2D), false) as Texture2D; * } * EditorGUILayout.EndHorizontal(); * * EditorGUILayout.BeginHorizontal(); * EditorGUILayout.PrefixLabel("Hardness"); * using (EditorGUI.IndentLevelScope level = new EditorGUI.IndentLevelScope(-1)) * { * erosion.HardnessMap = EditorGUILayout.ObjectField(erosion.HardnessMap, typeof(Texture2D), false) as Texture2D; * } * EditorGUILayout.EndHorizontal(); * * param.HydraulicErosion = erosion; * } */ layer.Param = param; EditorGUI.indentLevel -= 1; } EditorGUI.indentLevel = indent; }