Exemplo n.º 1
0
        void ShowEnvironmentalArea()
        {
            tempProp             = new TextureProperties();
            tempProp.unifromName = "_FXTex";
            tempProp.displayName = "Environemnt FX Map";
            tempProp.uniformProperties.Add(new UniformProperty("_AllEffects", "All Effect Blend", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_FXDisplacementMulitplier", "Displacement Mulitplier", UniformType.RANGE128));
            tempProp.uniformProperties.Add(new UniformProperty("_DisplacementLimiter", "Displacement Limiter", UniformType.RANGE256));
            tempProp.uniformProperties.Add(new UniformProperty("_Snow", "Snow Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SnowDisplacement", "Snow Displacement", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SnowNoiseAmount", "Snow Noise Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SnowNoiseScale", "Snow Noise Scale", UniformType.RANGE8));

            tempProp.uniformProperties.Add(new UniformProperty("_SnowAddParalax", "Snow Add Height", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SnowTint", "Snow Color (Tint)", UniformType.HDRCOLOR));

            tempProp.uniformProperties.Add(new UniformProperty("_Growth", "Growth Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_GrowthNoiseScale", "Grow Noise Size ", UniformType.RANGE64));
            tempProp.uniformProperties.Add(new UniformProperty("_GrowthDisplacement", "Growth Displacement", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_GrowthNoise", "Growth Noise", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_GrowthNoiseSpeed", "Growth Noise Speed", UniformType.RANGE4));

            tempProp.uniformProperties.Add(new UniformProperty("_GrowthTint", "Growth Color Low (Tint)", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_GrowthTint2", "Growth Color High (Tint)", UniformType.HDRCOLOR));

            tempProp.uniformProperties.Add(new UniformProperty("_Wetness", "Wetness Amount", UniformType.RANGE1));

            tempProp.uniformProperties.Add(new UniformProperty("_WetNormalTex", "Wetness Normal Map", UniformType.TEXTURE));
            tempProp.uniformProperties.Add(new UniformProperty("_WetTextureScale", "Wetness Scale", UniformType.RANGE32));
            tempProp.uniformProperties.Add(new UniformProperty("_WetTint", "Wetness Color (Tint)", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_WetSpeedY", "Wetness Gravity", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_FXMap", "Generate FX Map", UniformType.FXMAP));

            EditorHelper.ShowTextureUniforms(targetMat, tempProp);
        }
Exemplo n.º 2
0
        void ShowDetailArea()
        {
            tempProp             = new TextureProperties();
            tempProp.unifromName = "";
            tempProp.displayName = "Tessellation";
            tempProp.hasTexture  = false;

            /*   tempProp.uniformProperties.Add(new UniformProperty("_Tess", "Tessellation Amount", UniformType.TESSRANGE));
             * tempProp.uniformProperties.Add(new UniformProperty("_TessDistMin", "Tess Distance Min", UniformType.RANGE256));
             * tempProp.uniformProperties.Add(new UniformProperty("_TessDistMax", "Tess Distance Max", UniformType.RANGE256));
             * tempProp.uniformProperties.Add(new UniformProperty("_Phong", "Phong Amount", UniformType.RANGE8));
             * EditorHelper.ShowTextureUniforms(targetMat, tempProp);*/

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_HeightMap";
            tempProp.displayName = "Height Map";
            tempProp.uniformProperties.Add(new UniformProperty("_Parallax", "Height (Parallax)", UniformType.RANGE1));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);


            tempProp             = new TextureProperties();
            tempProp.unifromName = "_DispTex";
            tempProp.displayName = "Displacement Map";
            tempProp.uniformProperties.Add(new UniformProperty("_Displacement", "Displacement Amount", UniformType.DISPLACEAMOUNT));
            tempProp.uniformProperties.Add(new UniformProperty("_DispScale", "Displacement Scale", UniformType.RANGE32));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_DetailAlbedoMap";
            tempProp.displayName = "Detail Albedo";
            tempProp.uniformProperties.Add(new UniformProperty("_DetailAlbedoMultiplier", "Detail Albedo Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_DetailAlbedoScale", "Detail Albedo Scale", UniformType.RANGE256));
            //tempProp.uniformProperties.Add(new UniformProperty("_Displacement", "Displacement Amount", UniformType.DISPLACEAMOUNT));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_DetailNormalMap";
            tempProp.displayName = "Detail Normal";
            tempProp.uniformProperties.Add(new UniformProperty("_DetailNormalMultiplier", "Detail Normal Amount", UniformType.RANGE16));
            tempProp.uniformProperties.Add(new UniformProperty("_DetailNormalScale", "Detail Normal Scale", UniformType.RANGE64));
            tempProp.uniformProperties.Add(new UniformProperty("_BothNormals", "Normal Blend", UniformType.RANGE1));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);
        }
Exemplo n.º 3
0
        void ShowTextureArea()
        {
            GUILayout.BeginHorizontal();
            int workflow = EditorHelper.GUIDropDown((int)textureWorkflow, "Texture Workflow", 120, EditorHelper.textureModeStrings, true);

            if (workflow >= 0)
            {
                textureWorkflow = (EditorHelper.TextureWorkflow)workflow;
                targetMat.SetInt("_TextureWorkflow", workflow);
            }
            EditorHelper.HelpButton("workflow");
            GUILayout.EndHorizontal();
            EditorHelper.HelpItem("workflow", "<b>Texture Workflow</b>\n\n<b>Material FX</b> (Preferred)\n<color=silver>Adds new effects to your material, but has a rquired PBR map to use, which we are calling the advancedPBR Map here, however, it's essenailly a Metallic(r) Smoothnes(a) teture, with the green channel being used to inclue thickness, and blue for curvature.  The benefit here is this texture can work with Unity\ndefault shader so you can mix and match shaders as needed, and can even extend your ability to make your own custom effects / surface shaders.\n\n</color><b>Unity Standard</b>\n<color=silver>Uses Unity native Metallic Smoothnes Map. Primarily used for A-B Comparisn.\n\n</color><b>Substance Texture Maps</b><color=silver>\nAdds a roughness channel.\n\n<i>In Developemnt : A way to repack the AdvancedPBR map texture using an inline image conversion / channel repack.</i></color>");
            GUILayout.Space(10);

            string albedoTitle = "Albedo";

            if (textureWorkflow == EditorHelper.TextureWorkflow.Substance_Texture_Maps)
            {
                albedoTitle = "Base Color";
            }

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_MainTex";
            tempProp.displayName = albedoTitle;
            tempProp.hasHelp     = true;
            tempProp.helpText    = "The albedo channel, also known as diffuse or base color, is the texture you want to apply to your model's surface color\n\n<b>Albedo Amount:</b> Fade between Color and Texture (with Color)\n<b>Texutring Mode</b> : Choose between UV (Model Default) and Triplanar (No UV Maps)";
            tempProp.uniformProperties.Add(new UniformProperty("_Color", "Color (Tint)", UniformType.COLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_Colored", albedoTitle + " Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_MainTex", "Texturing Mode", UniformType.UVMODE));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            if (textureWorkflow == EditorHelper.TextureWorkflow.Material_FX || textureWorkflow == EditorHelper.TextureWorkflow.Unity_Standard)
            {
                tempProp             = new TextureProperties();
                tempProp.unifromName = "_AdvancedPBRMap";
                tempProp.displayName = "Metallic Smoothness";
                tempProp.hasHelp     = true;
                tempProp.helpText    = "This channel is very similar to the Metallic(R) and Smoothness(A) Map which is standard by Unity. However, MaterialFX also makes use of the unused Green and Blue Channels. Green channel is used for Thickness, and the Blue channel is used for Curvature.\n\nAdding these 2 maps will widely open up creative features you'll see used in this shader, as things like Subsurface scattering rely on thickness and curvature to know how much light to transmit.\n\nAn advanced PBR Map will work just fine with unity's standard shader (It ignores the G&B Channels), however If you only have Metallic Smoothness, you'll need to generate Thickness and Curvature maps, and then repack them using the tool provided below.  You can generate these maps using either Substance (paid) or xNormal (free)";
                tempProp.uniformProperties.Add(new UniformProperty("_Metallic", "Metailic", UniformType.RANGE1));
                tempProp.uniformProperties.Add(new UniformProperty("_Smoothness", "Smoothness", UniformType.RANGE1));
                if (textureWorkflow == EditorHelper.TextureWorkflow.Material_FX)
                {
                    tempProp.displayName = "MaterialFX PBR Map";
                    tempProp.uniformProperties.Add(new UniformProperty("_Thickness", "Thickness", UniformType.RANGE1));
                    tempProp.uniformProperties.Add(new UniformProperty("_Curvature", "Curvature", UniformType.RANGE1));
                }

                tempProp.uniformProperties.Add(new UniformProperty("_AdvancedPBRMap", "Texturing Mode", UniformType.UVMODE));
                tempProp.uniformProperties.Add(new UniformProperty("_AdvancedPBRMap", "Generate PBR Map", UniformType.PBRMAP));
                EditorHelper.ShowTextureUniforms(targetMat, tempProp);
            }

            if (textureWorkflow == EditorHelper.TextureWorkflow.Substance_Texture_Maps)
            {
                tempProp             = new TextureProperties();
                tempProp.unifromName = "_AdvancedPBRMap";
                tempProp.displayName = "Metallic";

                tempProp.uniformProperties.Add(new UniformProperty("_Metallic", "Metailic", UniformType.RANGE1));
                EditorHelper.ShowTextureUniforms(targetMat, tempProp);
                tempProp             = new TextureProperties();
                tempProp.unifromName = "_RoughnessMap";
                tempProp.displayName = "Roughness";
                tempProp.uniformProperties.Add(new UniformProperty("_AdvancedPBRMap", "Texturing Mode", UniformType.UVMODE));
                tempProp.uniformProperties.Add(new UniformProperty("_Smoothness", "Roughness", UniformType.RANGE1));
                EditorHelper.ShowTextureUniforms(targetMat, tempProp);
            }

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_BumpMap";
            tempProp.displayName = "Normal Map";

            tempProp.uniformProperties.Add(new UniformProperty("_BumpMap", "Texturing Mode", UniformType.UVMODE));
            tempProp.uniformProperties.Add(new UniformProperty("_NormalAmount", "Normal Amount", UniformType.NORMALRANGE));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_AOMap";
            tempProp.displayName = "Ambient Occlusion Map";
            tempProp.uniformProperties.Add(new UniformProperty("_AOAmount", "AO Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_AOMutliply", "AO Power", UniformType.RANGE8));
            tempProp.uniformProperties.Add(new UniformProperty("_AOCurvature", "AO Curvature", UniformType.RANGE1));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "";
            tempProp.displayName = "Material Overrides";
            tempProp.hasTexture  = false;
            tempProp.uniformProperties.Add(new UniformProperty("_ForceMetallic", "Force Metallic", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_ForceSmoothness", "Force Smoothness", UniformType.RANGE1));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);
        }
Exemplo n.º 4
0
        void ShowLightingArea()
        {
            tempProp             = new TextureProperties();
            tempProp.unifromName = "";
            tempProp.hasTexture  = false;
            tempProp.displayName = "Sub Surface Scattering";
            tempProp.uniformProperties.Add(new UniformProperty("_SubSurfaceAmount", "Subsurface Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SubSurfaceColor", "Subsurface Color", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_SubSurfaceCurvatureAmount", "Curvature Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SubSurfaceRange", "Subsurface Range", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_SubsurfaceRimType", "Subsurface Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_SubSurfacePower", "Subsurface Rim Power", UniformType.RANGE32));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_EmissionMap";
            tempProp.displayName = "Emission Map";
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionAmount", "Emission Amount", UniformType.RANGE1));

            tempProp.uniformProperties.Add(new UniformProperty("_EmissionColor", "Color (Tint)", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionBoostColor", "Boost Color", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionBoostRimType", "Boost Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionBoostRimPower", "Boost Rim Power", UniformType.RANGE32));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionDampenRimAmount", "Dampen Rim Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionDampenRimType", "Dampen Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_EmissionDampenRimPower", "Dampen Rim Power", UniformType.RANGE32));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);


            tempProp             = new TextureProperties();
            tempProp.unifromName = "";
            tempProp.displayName = "Iridescence";
            tempProp.hasTexture  = false;



            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceAmount", "Iridescence Amount", UniformType.RANGE1));

            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceScale", "Iridescence Scale", UniformType.RANGE4));
            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceSpeed", "Iridescence Speed", UniformType.RANGE4));
            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceCurvature", "Curvature Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceTint", "Color (Tint)", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceRimType", "Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_IridescenceRimPower", "Rim Power", UniformType.RANGE32));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "";
            tempProp.displayName = "Reflection Probe Boost";
            tempProp.hasTexture  = false;
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionAmount", "Boost Amount", UniformType.RANGE8));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionTint", "Reflection Tint", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionRimType", "Reflection Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionPower", "Reflection Power", UniformType.RANGE32));

            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionDampenRimAmount", "Dampen Rim Amount", UniformType.RANGE1));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionDampenRimType", "Dampen Rim Type", UniformType.RIMSETTING));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionDampenRimPower", "Dampen Rim Power", UniformType.RANGE32));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);

            tempProp             = new TextureProperties();
            tempProp.unifromName = "_ReflectionCube";
            tempProp.displayName = "Additional Relfection Cubemap";
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionCubeAmount", "Emission Amount", UniformType.RANGE8));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionCubeTint", "Reflection Tint", UniformType.HDRCOLOR));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionCubePower", "Reflection Power", UniformType.RANGE32));
            tempProp.uniformProperties.Add(new UniformProperty("_ReflectionCubeNormalAmount", "Normal Amount", UniformType.RANGE1));
            EditorHelper.ShowTextureUniforms(targetMat, tempProp);
        }
Exemplo n.º 5
0
        public static void ShowTextureUniforms(Material targetMat, TextureProperties props)
        {
            GUILayout.BeginHorizontal("box");
            GUILayout.BeginVertical();

            if (!props.hasHelp)
            {
                GUILayout.Label(props.displayName, EditorHelper.TextHeading);
            }
            else
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label(props.displayName, EditorHelper.TextHeading);
                HelpButton(props.displayName + "_help");

                GUILayout.EndHorizontal();
            }
            HelpItem(props.displayName + "_help", props.helpText);
            GUILayout.Space(5);
            GUILayout.BeginHorizontal();
            if (props.hasTexture)
            {
                Texture tex          = targetMat.GetTexture(props.unifromName);
                Texture CheckTexture = (Texture)EditorGUILayout.ObjectField("", tex, typeof(Texture), false, GUILayout.Width(EditorHelper.TextureWidth));
                if (CheckTexture != tex)
                {
                    targetMat.SetTexture(props.unifromName, CheckTexture);
                }
                EditorHelper.longerUI = false;
            }
            else
            {
                EditorHelper.longerUI = true;
            }
            GUILayout.Space(5);
            GUILayout.BeginVertical();
            GUILayout.Space(5);

            foreach (UniformProperty p in props.uniformProperties)
            {
                if (p.uniformType == UniformType.COLOR)
                {
                    EditorHelper.UColor(targetMat, p.displayName, p.uniformName, false);
                }
                if (p.uniformType == UniformType.HDRCOLOR)
                {
                    EditorHelper.UColor(targetMat, p.displayName, p.uniformName, true);
                }
                if (p.uniformType == UniformType.RANGE1)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 1);
                }
                if (p.uniformType == UniformType.RANGE2)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 2);
                }
                if (p.uniformType == UniformType.RANGE4)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 4);
                }
                if (p.uniformType == UniformType.RANGE8)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 8);
                }
                if (p.uniformType == UniformType.TESSRANGE)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 1, 32);
                }
                if (p.uniformType == UniformType.DISPLACEAMOUNT)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, -4, 4);
                }
                if (p.uniformType == UniformType.RANGE16)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 16);
                }
                if (p.uniformType == UniformType.RANGE32)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 32);
                }
                if (p.uniformType == UniformType.RANGE64)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 64);
                }
                if (p.uniformType == UniformType.RANGE128)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 128);
                }
                if (p.uniformType == UniformType.RANGE256)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0, 256);
                }
                if (p.uniformType == UniformType.NORMALRANGE)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, 0.001f, 1);
                }
                if (p.uniformType == UniformType.RANGENEG1TO1)
                {
                    EditorHelper.Slider(targetMat, p.displayName, p.uniformName, -1, 1);
                }
                if (p.uniformType == UniformType.TEXTURE)
                {
                    EditorHelper.SubTexture(targetMat, p.displayName, p.uniformName);
                }
                if (p.uniformType == UniformType.RIMSETTING)
                {
                    EditorHelper.RimSetting(targetMat, p.displayName, p.uniformName);
                }
                if (p.uniformType == UniformType.UVMODE)
                {
                    EditorHelper.UVMode(targetMat, p.displayName, p.uniformName);
                }
                if (p.uniformType == UniformType.PBRMAP)
                {
                    GeneratePBRMap(targetMat, p.displayName, p.uniformName);
                }
                if (p.uniformType == UniformType.FXMAP)
                {
                    GenerateFXMap(targetMat, p.displayName, p.uniformName);
                }
                if (p.uniformType == UniformType.BLENDMODE)
                {
                    BlendMode(targetMat, p.displayName, p.uniformName);
                }
            }
            GUILayout.EndVertical();

            GUILayout.EndHorizontal();
            GUILayout.Space(5);
            GUILayout.EndVertical();

            GUILayout.EndHorizontal();
            GUILayout.Space(5);
        }