Exemplo n.º 1
0
        public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
        {
            Material targetMat = materialEditor.target as Material;

            MatEdit.SetScope(targetMat);

            /////////////////////////////////
            //Main
            if (MatEdit.BeginFoldGroup(new GUIContent("Main"), "_E_ToggleMain"))
            {
                EditorGUILayout.Space();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                MatEdit.ColorField(new GUIContent("Tint Color", "The color tint for the overlay texture"), "_TintColor");
                MatEdit.TextureField(new GUIContent("Overlay Texture", "The overlay texture"), "_OverlayTex");
                MatEdit.SliderField(new GUIContent("Distort Strength", "The distortion strength for the overlay texture"), "_OverlayTexDistortStrength", 0f, 1f);
                MatEdit.FloatField(new GUIContent("Distort Speed", "The distortion speed for the overlay texture"), "_OverlayTexDistortSpeed");
                MatEdit.SliderField(new GUIContent("Transparency", "The transparancy of the overlay aspects (Color + Texture)"), "_Transparency", 0, 1);
                EditorGUILayout.EndVertical();

                EditorGUILayout.Space();

                MatEdit.NormalTextureField(new GUIContent("Normal Map", "The normal map for water"), "_NormalMap");

                MatEdit.SliderField(new GUIContent("Glossiness", "The glossiness of the Water"), "_Glossiness", 0, 1);

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Wind
            if (MatEdit.BeginToggleGroup(new GUIContent("Wind"), "_E_ToggleWind", MatEdit.GroupStyles.Main, false, true))
            {
                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Speed", "the wind speed"), "_WindSpeed", 0f, 1f);
                MatEdit.SliderField(new GUIContent("Strength", "the wind y distortion strength"), "_WindStrength", 0f, 0.5f);
                MatEdit.SliderField(new GUIContent("Scale", "the wind noise scaling"), "_WindScale", 0f, 1f);

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Ripples
            if (MatEdit.BeginToggleGroup(new GUIContent("Ripples"), "_E_ToggleRipples", MatEdit.GroupStyles.Main, false, true))
            {
                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Refraction Strength", "The ripple refraction strength"), "_RippleRefractionStrength", 0f, 1f);
                MatEdit.SliderField(new GUIContent("Reflection Strength", "The ripple reflection strength"), "_RippleReflectionStrength", 0f, 1f);
                MatEdit.SliderField(new GUIContent("Frequency", "The ripple frequency"), "_RippleFrequency", 0f, 10f);
                MatEdit.FloatField(new GUIContent("Expand Speed", "The ripple expand speed"), "_RippleSpeed");
                MatEdit.FloatField(new GUIContent("Duration", "The ripple duration"), "_RippleDuration");

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Foam
            if (MatEdit.BeginToggleGroup(new GUIContent("Foam"), "_E_ToggleFoam", MatEdit.GroupStyles.Main, false, true))
            {
                EditorGUILayout.Space();

                MatEdit.ColorField(new GUIContent("Color", "The color for the foam"), "_FoamColor");
                MatEdit.TextureField(new GUIContent("Overlay Texture", "The overlay texture"), "_FoamTextureOverlay");
                MatEdit.SliderField(new GUIContent("Distort Strength", "The distortion strength for the overlay texture"), "_FoamTextureDistortStrength", 0f, 1f);
                MatEdit.FloatField(new GUIContent("Distort Speed", "The distortion speed for the overlay texture"), "_FoamTextureDistortSpeed");

                EditorGUILayout.Space();

                if (MatEdit.BeginToggleGroup(new GUIContent("Ripple Foam", ""), "_UseRippleFoam", MatEdit.GroupStyles.Sub, false, true))
                {
                    MatEdit.SliderField(new GUIContent("Cut", "The cut value for the ripple foam"), "_RippleFoamCut", 0f, 1f);
                    MatEdit.SliderField(new GUIContent("Stitching", "The amount of stitching in the ripple foam"), "_RippleFoamStitches", 0f, 1f);
                    MatEdit.FloatField(new GUIContent("Noise Speed", "The ripple foam noise speed"), "_RippleFoamNoiseSpeed");
                    EditorGUILayout.Space();
                    MatEdit.SliderField(new GUIContent("Frequency", "The ripple foam frequency"), "_RippleFoamFrequency", 0f, 10f);
                    MatEdit.FloatField(new GUIContent("Expand Speed", "The ripple foam expand speed"), "_RippleFoamSpeed");
                    MatEdit.FloatField(new GUIContent("Duration", "The ripple foam duration"), "_RippleFoamDuration");
                }
                MatEdit.EndGroup();

                EditorGUILayout.Space();

                if (MatEdit.BeginToggleGroup(new GUIContent("Edge Foam", ""), "_UseEdgeFoam", MatEdit.GroupStyles.Sub, false, true))
                {
                    MatEdit.SliderField(new GUIContent("Cut", "The cut value for the edge foam"), "_EdgeFoamCut", 0f, 1f);
                    MatEdit.SliderField(new GUIContent("Stitching", "The amount of stitching in the edge foam"), "_EdgeFoamStitches", 0f, 1f);
                    MatEdit.FloatField(new GUIContent("Noise Speed", "The edge foam noise speed"), "_EdgeFoamNoiseSpeed");
                }
                MatEdit.EndGroup();

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Blur
            if (MatEdit.BeginFoldGroup(new GUIContent("Blur"), "_E_ToggleBlur"))
            {
                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Amount", "the blur spreading per iteration"), "_UnderWaterBlur", 0, 20);
                MatEdit.SliderField(new GUIContent("Iterations", "How many times should the image be blurred (WARNING: This value will be twice times to the power of 2 (2x^2))"), "_BlurIterations", 1, 10, true);

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Emission
            if (MatEdit.BeginFoldGroup(new GUIContent("Emission"), "_E_ToggleEmission"))
            {
                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Intensity", "The emission intensity"), "_EmissionIntensity", 0, 1);
                MatEdit.SliderField(new GUIContent("Cut", "The cut point for the light clamp"), "_EmissionCut", 0, 1);

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Reflection
            if (MatEdit.BeginToggleGroup(new GUIContent("SSR Reflection"), "_E_ToggleReflection", MatEdit.GroupStyles.Main, false, true))
            {
                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Transparency", "The transparency of the screen space reflection"), "_SSR_Transparency", 0, 1);

                EditorGUILayout.Space();

                MatEdit.SliderField(new GUIContent("Noise", "The missorientation of screen space reflection ray"), "_SSR_Noise", 0, 1);
                MatEdit.SliderField(new GUIContent("Iterations", "How many steps should be marshed on the ray"), "_SSR_Iterations", 0, 400, true);
                MatEdit.FloatField(new GUIContent("Step Size", "The quality level of the screen space reflection depends on the ray marshing step size (the lower = the better)"), "_SSR_StepSize");
                MatEdit.FloatField(new GUIContent("Fade Distance", "The fading of the reflection over distance"), "_SSR_FadeDistance");
                MatEdit.SliderField(new GUIContent("Fade Steps", "The step count for the fading at the end of the iterations"), "_SSR_FadeSteps", 0, targetMat.GetFloat("_SSR_Iterations"), true);

                EditorGUILayout.Space();

                MatEdit.ToggleField(new GUIContent("DEBUG: Depth", "DEBUG: Displays the depth of the reflection relative to the reflective surface"), "_SSR_DebugDepth");

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Shock
            if (MatEdit.BeginToggleGroup(new GUIContent("Shock"), "_E_ToggleShock", MatEdit.GroupStyles.Main, false, true))
            {
                EditorGUILayout.Space();

                MatEdit.TextureField(new GUIContent("Texture", "The shock texture"), "_ShockTex");
                MatEdit.AnimationCurveField(new GUIContent("Texture Speed", "The texture displacement speed (x: 0 - 1 & y: 0 - 3)"), "_ShockTextureSpeed", 64);
                MatEdit.FloatField(new GUIContent("Texture Scale", "The shock texture scaling"), "_ShockTexScale");

                EditorGUILayout.Space();

                MatEdit.FloatField(new GUIContent("Expand Speed", "The speed the shock expands with"), "_ShockSpeed");

                EditorGUILayout.Space();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                EditorGUILayout.LabelField("Intro", EditorStyles.boldLabel);
                MatEdit.FloatField(new GUIContent("Brightness", "The brightness for the intro"), "_ShockBasicBrightness");
                MatEdit.FloatField(new GUIContent("Duration", "The shock intro duration"), "_ShockDuration");
                EditorGUILayout.EndVertical();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                EditorGUILayout.LabelField("Outro", EditorStyles.boldLabel);
                MatEdit.ColorField(new GUIContent("Brightness Tint", "The color tint for the emission"), "_ShockBrightnessColor");
                MatEdit.FloatField(new GUIContent("Brightness", "The shock outro brightness"), "_ShockBrightness");
                MatEdit.FloatField(new GUIContent("Delay", "The delay of the outro"), "_ShockEmissionDelay");
                MatEdit.FloatField(new GUIContent("Duration", "The duration the emission takes"), "_ShockEmissionDuration");
                EditorGUILayout.EndVertical();

                EditorGUILayout.Space();
            }
            MatEdit.EndGroup();
        }
Exemplo n.º 2
0
        public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
        {
            Material targetMat = materialEditor.target as Material;

            MatEdit.SetScope(targetMat);

            /////////////////////////////////
            //Main
            if (MatEdit.BeginFoldGroup(new GUIContent("Main"), "_E_ToggleMain"))
            {
                MatEdit.TextureField(new GUIContent("Albedo", "The main vegetation texture"), "_MainTex");

                MatEdit.NormalTextureField(new GUIContent("Normal", "The normal map for the vegetation"), "_NormalMap");

                MatEdit.ColorField(new GUIContent("Tint Color", "The color tint for the texture"), "_Color");
                MatEdit.SliderField(new GUIContent("Cut Off", "The alpha strength which will be invisible"), "_CutOff", 0f, 1f);
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Interactive Deformation
            if (MatEdit.BeginToggleGroup(new GUIContent("Interactive Deformation"), "_E_ToggleDeform", MatEdit.GroupStyles.Main, false, true))
            {
                MatEdit.SliderField(new GUIContent("Deform Stiffness", "The stiffness of the vegetation"), "_DeformerStiffness", 0f, 1f);

                int lIndex = MatEdit.EnumField(new GUIContent("Deformer Deform Mode", "The mode for the vertex strength"), "_DeformerMode", affectModes);

                if (affectModes[lIndex].text == "Vertex Painting")
                {
                    MatEdit.BeginGroup(new GUIContent(), MatEdit.GroupStyles.Sub);
                    MatEdit.ToggleField(new GUIContent("Show Vertex Colors", "DEBUG: draws the vertex Colors"), "_DEBUG_VertexColors");
                    MatEdit.EndGroup();
                }
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Wind
            if (MatEdit.BeginToggleGroup(new GUIContent("Interactive Wind", "The wind vegetation effect, can be disabled"), "_E_ToggleWind", MatEdit.GroupStyles.Main, false, true))
            {
                MatEdit.FloatField(new GUIContent("Wind Strength", "The strength of the deformation"), "_WindStrength");
                MatEdit.FloatField(new GUIContent("Wind Speed", "The speed for the wind"), "_WindSpeed");
                MatEdit.FloatField(new GUIContent("Wind Scale", "The scale of the wind noise"), "_WindScale");

                int lIndex = MatEdit.EnumField(new GUIContent("Wind Deform Mode", "The mode for the vertex strength"), "_WindMode", affectModes);

                if (affectModes[lIndex].text == "Vertex Painting")
                {
                    MatEdit.BeginGroup(new GUIContent(), MatEdit.GroupStyles.Sub);
                    MatEdit.ToggleField(new GUIContent("Show Vertex Colors", "DEBUG: draws the vertex Colors"), "_DEBUG_VertexColors");
                    MatEdit.EndGroup();
                }
            }
            MatEdit.EndGroup();

            /////////////////////////////////
            //Burn
            if (MatEdit.BeginToggleGroup(new GUIContent("Interactive Burn", "The burning vegetation effect, can be disabled"), "_E_ToggleBurn", MatEdit.GroupStyles.Main, false, true))
            {
                MatEdit.ColorField(new GUIContent("Burn Color", "The Color which will be faded at the edge of burning vegetation"), "_BurnColor");

                MatEdit.MinMaxSliderField(new GUIContent("Color to Cut", "Defines the Range where the Color Fading starts and when it fades into the cut off"), "_BurnColorStart", "_BurnCutStart", 0f, 1f, true);

                MatEdit.SliderField(new GUIContent("Burn Duration", "The length the burning takes"), "_BurnDuration", 0f, 50f);

                MatEdit.BeginGroup(MatEdit.GroupStyles.Sub);

                switch (burnModes[MatEdit.EnumField(new GUIContent("Burn Mode"), "_BurnMode", burnModes)].text)
                {
                case "Procedural":
                {
                    MatEdit.FloatField(new GUIContent("Object Height", "The height of the object in world units from the pivot point"), "_ObjectHeight");

                    MatEdit.FloatField(new GUIContent("Noise Scale", "The Scale of the procedural noise"), "_BurnNoiseScale");

                    MatEdit.FloatAsVectorField(new GUIContent("Noise Movement", "Movement of the noise | X = Horizontal and Y = Vertical"), "_BurnNoiseMovementX", "_BurnNoiseMovementY");
                }
                break;

                case "UV":
                {
                    MatEdit.TextureField(new GUIContent("Burn Noise Map", "The Burn Map layouted via UV | White = first burned and Black = last burned"), "_BurnNoiseMap");
                }
                break;
                }
                MatEdit.EndGroup();
            }
            MatEdit.EndGroup();

            if (targetMat.GetInt("_DEBUG_VertexColors") == 1)
            {
                EditorGUILayout.HelpBox("Vertex Colors are turned on", MessageType.Warning);
            }
        }