101 lines
5.1 KiB
C#
101 lines
5.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
public class ToonSketchBasicOutlineShaderGUI : ShaderGUI
|
|
{
|
|
private ToonSketch.Shared.EditorParams.Properties basicProperties = new ToonSketch.Shared.EditorParams.Properties();
|
|
private MaterialEditor materialEditor;
|
|
private bool firstTimeApply = true;
|
|
|
|
private void Header()
|
|
{
|
|
ToonSketch.Shared.EditorUtils.Header(
|
|
ToonSketch.Shared.EditorParams.module,
|
|
ToonSketch.Shared.EditorParams.version,
|
|
"Toon Shader with Outlines"
|
|
);
|
|
}
|
|
|
|
public void FindProperties(MaterialProperty[] properties)
|
|
{
|
|
basicProperties.styleMode = FindProperty("_Style", properties);
|
|
basicProperties.blendMode = FindProperty("_Blend", properties);
|
|
basicProperties.cullMode = FindProperty("_Cull", properties);
|
|
basicProperties.albedoTexture = FindProperty("_MainTex", properties);
|
|
basicProperties.albedoColor = FindProperty("_Color", properties);
|
|
basicProperties.alphaCutoff = FindProperty("_Cutoff", properties);
|
|
basicProperties.rampTextureEnable = FindProperty("_Ramp", properties);
|
|
basicProperties.rampTexture = FindProperty("_RampTex", properties);
|
|
basicProperties.rampThreshold = FindProperty("_RampThreshold", properties);
|
|
basicProperties.rampCutoff = FindProperty("_RampCutoff", properties);
|
|
basicProperties.bumpEnable = FindProperty("_Bump", properties);
|
|
basicProperties.bumpTexture = FindProperty("_BumpMap", properties);
|
|
basicProperties.bumpStrength = FindProperty("_BumpScale", properties);
|
|
basicProperties.specularEnable = FindProperty("_Specular", properties);
|
|
basicProperties.specularTexture = FindProperty("_SpecularTex", properties);
|
|
basicProperties.specularColor = FindProperty("_SpecularColor", properties);
|
|
basicProperties.specularType = FindProperty("_SpecularType", properties);
|
|
basicProperties.smoothnessType = FindProperty("_SmoothnessType", properties);
|
|
basicProperties.smoothness = FindProperty("_Smoothness", properties);
|
|
basicProperties.glossyReflections = FindProperty("_GlossyReflections", properties);
|
|
basicProperties.specularThreshold = FindProperty("_SpecularThreshold", properties);
|
|
basicProperties.specularCutoff = FindProperty("_SpecularCutoff", properties);
|
|
basicProperties.specularIntensity = FindProperty("_SpecularIntensity", properties);
|
|
basicProperties.rimEnable = FindProperty("_RimLighting", properties);
|
|
basicProperties.rimColor = FindProperty("_RimColor", properties);
|
|
basicProperties.rimType = FindProperty("_RimType", properties);
|
|
basicProperties.rimColoring = FindProperty("_RimColoring", properties);
|
|
basicProperties.rimMin = FindProperty("_RimMin", properties);
|
|
basicProperties.rimMax = FindProperty("_RimMax", properties);
|
|
basicProperties.rimIntensity = FindProperty("_RimIntensity", properties);
|
|
basicProperties.ignoreIndirect = FindProperty("_IgnoreIndirect", properties);
|
|
basicProperties.outlineColor = FindProperty("_OutlineColor", properties);
|
|
basicProperties.outlineWidth = FindProperty("_OutlineWidth", properties);
|
|
basicProperties.outlineSaturation = FindProperty("_OutlineSaturation", properties);
|
|
basicProperties.outlineBrightness = FindProperty("_OutlineBrightness", properties);
|
|
basicProperties.outlineAngle = FindProperty("_OutlineAngle", properties);
|
|
}
|
|
|
|
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
|
{
|
|
FindProperties(properties);
|
|
this.materialEditor = materialEditor;
|
|
Material material = materialEditor.target as Material;
|
|
if (firstTimeApply)
|
|
{
|
|
MaterialChanged(material);
|
|
firstTimeApply = false;
|
|
}
|
|
ShaderPropertiesGUI(material);
|
|
}
|
|
|
|
public void ShaderPropertiesGUI(Material material)
|
|
{
|
|
Header();
|
|
EditorGUIUtility.labelWidth = 0f;
|
|
EditorGUI.BeginChangeCheck();
|
|
{
|
|
ToonSketch.Shared.EditorUtils.ModePopup(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.MainSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.RampSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.BumpSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.SpecularSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.RimSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.LightSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.OutlineSettings(materialEditor, basicProperties);
|
|
ToonSketch.Shared.EditorUtils.AdvancedSettings(materialEditor, basicProperties);
|
|
}
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
foreach (var obj in basicProperties.blendMode.targets)
|
|
MaterialChanged((Material)obj);
|
|
}
|
|
}
|
|
|
|
public static void MaterialChanged(Material material)
|
|
{
|
|
ToonSketch.Shared.EditorUtils.MaterialChanged(material);
|
|
}
|
|
} |