using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; using UnityEditor; namespace PotaToon.Editor { public enum ToonType { General = 0, Face = 1, Eye = 2 } public enum SurfaceType { Opaque = 0, Cutout = 1, Refraction = 2, Transparent = 3 } public enum ScreenRimTintMode { Multiply = 0, Override = 1 } public enum MatCapMode { None = 0, Add = 1, Multiply = 2 } public enum OutlineMode { Normal = 0, Position = 1 } public enum UVChannel { UV0 = 0, UV1 = 1, UV2 = 2, UV3 = 3 } public enum MaskChannel { R = 0, G = 1, B = 2, A = 3 } public enum MaterialPresetDisplayGroup { CUSTOM = 0, METALLIC = 1, BASE = 2 } /// /// NOTE) All character-dependent textures are excluded. /// internal class PotaToonMaterialPresetBase : ScriptableObject { internal static readonly string[] k_PresetIconNames = new string[] { "sv_icon_dot13_pix16_gizmo", "sv_icon_dot8_pix16_gizmo", "sv_icon_dot9_pix16_gizmo", "sv_icon_dot10_pix16_gizmo", "sv_icon_dot11_pix16_gizmo", "sv_icon_dot12_pix16_gizmo", "sv_icon_dot14_pix16_gizmo", "sv_icon_dot15_pix16_gizmo", "sv_icon_dot5_pix16_gizmo", "sv_icon_dot0_pix16_gizmo", "sv_icon_dot1_pix16_gizmo", "sv_icon_dot2_pix16_gizmo", "sv_icon_dot3_pix16_gizmo", "sv_icon_dot4_pix16_gizmo", "sv_icon_dot6_pix16_gizmo", "sv_icon_dot7_pix16_gizmo", "d_Avatar Icon", "HeadZoomSilhouette", "d_animationvisibilitytoggleon@2x", "d_Favorite Icon", "d_Cloth Icon", "LensFlare Icon", "LensFlare Gizmo", }; public static List presetIconContents = new List(); public static int typeIconStart = 16; /// /// Note) If new default preset added, need to set displayIndex manually. /// public MaterialPresetDisplayGroup displayGroup; public int presetIconIndex; public ToonType _ToonType; public GUIContent GetIconContent(string name) { return (presetIconIndex < 0 || presetIconIndex >= presetIconContents.Count) ? EditorGUIUtility.IconContent(k_PresetIconNames[0]) : new GUIContent(name, presetIconContents[presetIconIndex].image) ?? GUIContent.none; } public static void LoadPresetIconsIfNeeded() { if (presetIconContents.Count == 0) { for (int i = 0; i < k_PresetIconNames.Length; i++) presetIconContents.Add(EditorGUIUtility.IconContent(k_PresetIconNames[i])); } } public static List> SplitByDisplayIndex(List items) { var result = new List>(); if (items == null || items.Count == 0) return result; items.Sort((a, b) => { int idxCmp = b.displayGroup.CompareTo(a.displayGroup); if (idxCmp != 0) return idxCmp; return string.Compare(a.name, b.name, System.StringComparison.Ordinal); }); int currentIndex = (int)items[0].displayGroup; var currentGroup = new List(); foreach (var item in items) { if ((int)item.displayGroup != currentIndex) { result.Add(currentGroup); currentGroup = new List(); currentIndex = (int)item.displayGroup; } currentGroup.Add(item); } result.Add(currentGroup); return result; } public virtual void ApplyTo(Material mat) {} public virtual void SaveFrom(Material mat) {} } [CreateAssetMenu(menuName = "PotaToon/Material Preset", fileName = "PotaToonMaterialPreset")] internal class PotaToonMaterialPreset : PotaToonMaterialPresetBase { // Base Settings public SurfaceType _SurfaceType = SurfaceType.Opaque; public CullMode _Cull = CullMode.Back; public float _Cutoff = 0.5f; public int _ZWriteMode = 1; public int _AutoRenderQueue = 1; public int _RenderQueue = 2000; // Stencil public CompareFunction _StencilComp; public float _StencilRef; public StencilOp _StencilPass; public StencilOp _StencilFail; public StencilOp _StencilZFail; // Main Settings public Color _BaseColor = Color.white; public Color _ShadeColor = new Color(0.75f, 0.75f, 0.75f); public float _BaseStep = 0.5f; public float _StepSmoothness = 0.01f; public int _UseMidTone = 1; public Color _MidColor = new Color(0.5f,0.2f,0.2f); public float _MidWidth = 1f; public float _IndirectDimmer = 1f; public int _ReceiveLightShadow = 1; public int _UseVertexColor = 0; public int _UseDarknessMode = 0; public float _BumpScale = 0f; public int _UseNormalMap = 0; // High Light public Color _SpecularColor = Color.black; public float _SpecularPower = 0.5f; public float _SpecularSmoothness = 0.25f; // Rim Light public Color _RimColor = Color.black; public float _RimPower = 0.5f; public float _RimSmoothness = 0.25f; public Color _ScreenRimTint = Color.white; public ScreenRimTintMode _ScreenRimTintMode = 0; public float _ScreenRimWidthMultiplier = 1f; public int _ScreenRimShadowFade = 1; // MatCap Layers public MatCapMode _MatCapMode = MatCapMode.None; public Color _MatCapColor = Color.white; public Texture2D _MatCapTex; public float _MatCapWeight = 1f; public float _MatCapLightingDimmer = 1f; public MatCapMode _MatCapMode2 = MatCapMode.None; public Color _MatCapColor2 = Color.white; public Texture2D _MatCapTex2; public float _MatCapWeight2 = 1f; public float _MatCapLightingDimmer2 = 1f; public MatCapMode _MatCapMode3 = MatCapMode.None; public Color _MatCapColor3 = Color.white; public Texture2D _MatCapTex3; public float _MatCapWeight3 = 1f; public float _MatCapLightingDimmer3 = 1f; public MatCapMode _MatCapMode4 = MatCapMode.None; public Color _MatCapColor4 = Color.white; public Texture2D _MatCapTex4; public float _MatCapWeight4 = 1f; public float _MatCapLightingDimmer4 = 1f; public MatCapMode _MatCapMode5 = MatCapMode.None; public Color _MatCapColor5 = Color.white; public Texture2D _MatCapTex5; public float _MatCapWeight5 = 1f; public float _MatCapLightingDimmer5 = 1f; public MatCapMode _MatCapMode6 = MatCapMode.None; public Color _MatCapColor6 = Color.white; public Texture2D _MatCapTex6; public float _MatCapWeight6 = 1f; public float _MatCapLightingDimmer6 = 1f; public MatCapMode _MatCapMode7 = MatCapMode.None; public Color _MatCapColor7 = Color.white; public Texture2D _MatCapTex7; public float _MatCapWeight7 = 1f; public float _MatCapLightingDimmer7 = 1f; public MatCapMode _MatCapMode8 = MatCapMode.None; public Color _MatCapColor8 = Color.white; public Texture2D _MatCapTex8; public float _MatCapWeight8 = 1f; public float _MatCapLightingDimmer8 = 1f; // Emission public Color _EmissionColor = Color.black; // Glitter public int _UseGlitter = 0; public Color _GlitterColor = Color.white; public float _GlitterMainStrength = 0f; public float _GlitterEnableLighting = 1f; public int _GlitterBackfaceMask = 0; public int _GlitterApplyTransparency = 1; public float _GlitterShadowMask = 0f; public float _GlitterParticleSize = 0.16f; public float _GlitterScaleRandomize = 0f; public float _GlitterContrast = 50f; public float _GlitterSensitivity = 100f; public float _GlitterBlinkSpeed = 0.1f; public float _GlitterAngleLimit = 0f; public float _GlitterLightDirection = 0f; public float _GlitterColorRandomness = 0f; public float _GlitterNormalStrength = 1f; public float _GlitterPostContrast = 1f; // Outline public OutlineMode _OutlineMode = OutlineMode.Normal; public int _UseOutlineNormalMap = 0; public int _BlendOutlineMainTex = 1; public Color _OutlineColor = Color.black; public float _OutlineWidth = 0.1f; public float _OutlineOffsetZ = 0f; // Refraction public float _RefractionWeight = 0f; public float _RefractionBlurStep = 0f; // Character Shadow public int _DisableCharShadow = 0; public float _DepthBias = 0f; public float _NormalBias = 0f; public float _CharShadowSmoothnessOffset = 0f; public int _CharShadowType = 0; public float _2DFaceShadowWidth = 0.1f; // Face SDF public int _UseFaceSDFShadow = 0; public int _SDFReverse = 0; public float _SDFOffset = 0f; public float _SDFBlur = 0f; // Hair High Light public int _UseHairHighLight = 0; public int _ReverseHairHighLightTex = 0; public float _HairHiStrength = 1f; public float _HairHiUVOffset = 0f; // UV Channels public UVChannel _BaseMapUV = UVChannel.UV0; public UVChannel _NormalMapUV = UVChannel.UV0; public UVChannel _ClippingMaskUV = UVChannel.UV0; public UVChannel _FaceSDFUV = UVChannel.UV0; public UVChannel _SpecularMapUV = UVChannel.UV0; public UVChannel _RimMaskUV = UVChannel.UV0; public UVChannel _HairHiMapUV = UVChannel.UV0; public UVChannel _GlitterMapUV = UVChannel.UV0; public UVChannel _EmissionMapUV = UVChannel.UV0; public UVChannel _OutlineMaskUV = UVChannel.UV0; public UVChannel _MatCapUV1 = UVChannel.UV0; public UVChannel _MatCapUV2 = UVChannel.UV0; public UVChannel _MatCapUV3 = UVChannel.UV0; public UVChannel _MatCapUV4 = UVChannel.UV0; public UVChannel _MatCapUV5 = UVChannel.UV0; public UVChannel _MatCapUV6 = UVChannel.UV0; public UVChannel _MatCapUV7 = UVChannel.UV0; public UVChannel _MatCapUV8 = UVChannel.UV0; // Mask Channels public MaskChannel _ClippingMaskCH = MaskChannel.G; public MaskChannel _SpecularMaskCH = MaskChannel.G; public MaskChannel _RimMaskCH = MaskChannel.G; public MaskChannel _EmissionMaskCH = MaskChannel.G; public MaskChannel _OutlineMaskCH = MaskChannel.G; public MaskChannel _MatCapMaskCH1 = MaskChannel.R; public MaskChannel _MatCapMaskCH2 = MaskChannel.R; public MaskChannel _MatCapMaskCH3 = MaskChannel.R; public MaskChannel _MatCapMaskCH4 = MaskChannel.R; public MaskChannel _MatCapMaskCH5 = MaskChannel.R; public MaskChannel _MatCapMaskCH6 = MaskChannel.R; public MaskChannel _MatCapMaskCH7 = MaskChannel.R; public MaskChannel _MatCapMaskCH8 = MaskChannel.R; public MaskChannel _AOMapCH = MaskChannel.G; public MaskChannel _FaceSDFTexCH = MaskChannel.R; private void SetMaterialTextureIfNeeded(Material mat, string property, Texture tex) { if (tex != null) mat.SetTexture(property, tex); else mat.SetTexture(property, null); } public override void ApplyTo(Material mat) { // Base Settings mat.SetInt("_ToonType", (int)_ToonType); mat.SetInt("_SurfaceType", (int)_SurfaceType); mat.SetInt("_Cull", (int)_Cull); mat.SetFloat("_Cutoff", _Cutoff); mat.SetInt("_ZWriteMode", _ZWriteMode); mat.SetInt("_AutoRenderQueue", _AutoRenderQueue); PotaToonShaderGUI.SetRenderQueueAndKeywords(new Material[] { mat }, true, _AutoRenderQueue > 0, _RenderQueue); // Stencil mat.SetInt("_StencilComp", (int)_StencilComp); mat.SetFloat("_StencilRef", _StencilRef); mat.SetInt("_StencilPass", (int)_StencilPass); mat.SetInt("_StencilFail", (int)_StencilFail); mat.SetInt("_StencilZFail", (int)_StencilZFail); // Main Settings mat.SetColor("_BaseColor", _BaseColor); mat.SetColor("_ShadeColor", _ShadeColor); mat.SetFloat("_BaseStep", _BaseStep); mat.SetFloat("_StepSmoothness", _StepSmoothness); mat.SetInt("_ReceiveLightShadow", _ReceiveLightShadow); mat.SetInt("_UseMidTone", _UseMidTone); mat.SetColor("_MidColor", _MidColor); mat.SetFloat("_MidWidth", _MidWidth); mat.SetFloat("_IndirectDimmer", _IndirectDimmer); mat.SetInt("_UseVertexColor", _UseVertexColor); mat.SetInt("_UseDarknessMode", _UseDarknessMode); mat.SetFloat("_BumpScale", _BumpScale); mat.SetInt("_UseNormalMap", _UseNormalMap); // High Light mat.SetColor("_SpecularColor", _SpecularColor); mat.SetFloat("_SpecularPower", _SpecularPower); mat.SetFloat("_SpecularSmoothness", _SpecularSmoothness); // Rim Light mat.SetColor("_RimColor", _RimColor); mat.SetFloat("_RimPower", _RimPower); mat.SetFloat("_RimSmoothness", _RimSmoothness); mat.SetColor("_ScreenRimTint", _ScreenRimTint); mat.SetInt("_ScreenRimTintMode", (int)_ScreenRimTintMode); mat.SetFloat("_ScreenRimWidthMultiplier", _ScreenRimWidthMultiplier); mat.SetInt("_ScreenRimShadowFade", _ScreenRimShadowFade); // MatCap Layers mat.SetInt("_MatCapMode", (int)_MatCapMode); mat.SetColor("_MatCapColor", _MatCapColor); SetMaterialTextureIfNeeded(mat, "_MatCapTex", _MatCapTex); mat.SetFloat("_MatCapWeight", _MatCapWeight); mat.SetFloat("_MatCapLightingDimmer", _MatCapLightingDimmer); mat.SetInt("_MatCapMode2", (int)_MatCapMode2); mat.SetColor("_MatCapColor2", _MatCapColor2); SetMaterialTextureIfNeeded(mat, "_MatCapTex2", _MatCapTex2); mat.SetFloat("_MatCapWeight2", _MatCapWeight2); mat.SetFloat("_MatCapLightingDimmer2", _MatCapLightingDimmer2); mat.SetInt("_MatCapMode3", (int)_MatCapMode3); mat.SetColor("_MatCapColor3", _MatCapColor3); SetMaterialTextureIfNeeded(mat, "_MatCapTex3", _MatCapTex3); mat.SetFloat("_MatCapWeight3", _MatCapWeight3); mat.SetFloat("_MatCapLightingDimmer3", _MatCapLightingDimmer3); mat.SetInt("_MatCapMode4", (int)_MatCapMode4); mat.SetColor("_MatCapColor4", _MatCapColor4); SetMaterialTextureIfNeeded(mat, "_MatCapTex4", _MatCapTex4); mat.SetFloat("_MatCapWeight4", _MatCapWeight4); mat.SetFloat("_MatCapLightingDimmer4", _MatCapLightingDimmer4); mat.SetInt("_MatCapMode5", (int)_MatCapMode5); mat.SetColor("_MatCapColor5", _MatCapColor5); SetMaterialTextureIfNeeded(mat, "_MatCapTex5", _MatCapTex5); mat.SetFloat("_MatCapWeight5", _MatCapWeight5); mat.SetFloat("_MatCapLightingDimmer5", _MatCapLightingDimmer5); mat.SetInt("_MatCapMode6", (int)_MatCapMode6); mat.SetColor("_MatCapColor6", _MatCapColor6); SetMaterialTextureIfNeeded(mat, "_MatCapTex6", _MatCapTex6); mat.SetFloat("_MatCapWeight6", _MatCapWeight6); mat.SetFloat("_MatCapLightingDimmer6", _MatCapLightingDimmer6); mat.SetInt("_MatCapMode7", (int)_MatCapMode7); mat.SetColor("_MatCapColor7", _MatCapColor7); SetMaterialTextureIfNeeded(mat, "_MatCapTex7", _MatCapTex7); mat.SetFloat("_MatCapWeight7", _MatCapWeight7); mat.SetFloat("_MatCapLightingDimmer7", _MatCapLightingDimmer7); mat.SetInt("_MatCapMode8", (int)_MatCapMode8); mat.SetColor("_MatCapColor8", _MatCapColor8); SetMaterialTextureIfNeeded(mat, "_MatCapTex8", _MatCapTex8); mat.SetFloat("_MatCapWeight8", _MatCapWeight8); mat.SetFloat("_MatCapLightingDimmer8", _MatCapLightingDimmer8); // Emission mat.SetColor("_EmissionColor", _EmissionColor); // Glitter mat.SetInt("_UseGlitter", _UseGlitter); mat.SetColor("_GlitterColor", _GlitterColor); mat.SetFloat("_GlitterMainStrength", _GlitterMainStrength); mat.SetFloat("_GlitterEnableLighting", _GlitterEnableLighting); mat.SetInt("_GlitterBackfaceMask", _GlitterBackfaceMask); mat.SetInt("_GlitterApplyTransparency", _GlitterApplyTransparency); mat.SetFloat("_GlitterShadowMask", _GlitterShadowMask); mat.SetFloat("_GlitterParticleSize", _GlitterParticleSize); mat.SetFloat("_GlitterScaleRandomize", _GlitterScaleRandomize); mat.SetFloat("_GlitterContrast", _GlitterContrast); mat.SetFloat("_GlitterSensitivity", _GlitterSensitivity); mat.SetFloat("_GlitterBlinkSpeed", _GlitterBlinkSpeed); mat.SetFloat("_GlitterAngleLimit", _GlitterAngleLimit); mat.SetFloat("_GlitterLightDirection", _GlitterLightDirection); mat.SetFloat("_GlitterColorRandomness", _GlitterColorRandomness); mat.SetFloat("_GlitterNormalStrength", _GlitterNormalStrength); mat.SetFloat("_GlitterPostContrast", _GlitterPostContrast); // Outline mat.SetInt("_OutlineMode", (int)_OutlineMode); mat.SetInt("_UseOutlineNormalMap", _UseOutlineNormalMap); mat.SetInt("_BlendOutlineMainTex", _BlendOutlineMainTex); mat.SetColor("_OutlineColor", _OutlineColor); mat.SetFloat("_OutlineWidth", _OutlineWidth); mat.SetFloat("_OutlineOffsetZ", _OutlineOffsetZ); // Refraction mat.SetFloat("_RefractionWeight", _RefractionWeight); mat.SetFloat("_RefractionBlurStep", _RefractionBlurStep); // Character Shadow mat.SetInt("_DisableCharShadow", _DisableCharShadow); mat.SetFloat("_DepthBias", _DepthBias); mat.SetFloat("_NormalBias", _NormalBias); mat.SetFloat("_CharShadowSmoothnessOffset", _CharShadowSmoothnessOffset); mat.SetInt("_CharShadowType", _CharShadowType); mat.SetFloat("_2DFaceShadowWidth", _2DFaceShadowWidth); // Face SDF mat.SetInt("_UseFaceSDFShadow", _UseFaceSDFShadow); mat.SetInt("_SDFReverse", _SDFReverse); mat.SetFloat("_SDFOffset", _SDFOffset); mat.SetFloat("_SDFBlur", _SDFBlur); // Hair High Light mat.SetInt("_UseHairHighLight", _UseHairHighLight); mat.SetInt("_ReverseHairHighLightTex", _ReverseHairHighLightTex); mat.SetFloat("_HairHiStrength", _HairHiStrength); mat.SetFloat("_HairHiUVOffset", _HairHiUVOffset); // UV Channels mat.SetInt("_BaseMapUV", (int)_BaseMapUV); mat.SetInt("_NormalMapUV", (int)_NormalMapUV); mat.SetInt("_ClippingMaskUV", (int)_ClippingMaskUV); mat.SetInt("_FaceSDFUV", (int)_FaceSDFUV); mat.SetInt("_SpecularMapUV", (int)_SpecularMapUV); mat.SetInt("_RimMaskUV", (int)_RimMaskUV); mat.SetInt("_HairHiMapUV", (int)_HairHiMapUV); mat.SetInt("_GlitterMapUV", (int)_GlitterMapUV); mat.SetInt("_EmissionMapUV", (int)_EmissionMapUV); mat.SetInt("_OutlineMaskUV", (int)_OutlineMaskUV); mat.SetInt("_MatCapUV1", (int)_MatCapUV1); mat.SetInt("_MatCapUV2", (int)_MatCapUV2); mat.SetInt("_MatCapUV3", (int)_MatCapUV3); mat.SetInt("_MatCapUV4", (int)_MatCapUV4); mat.SetInt("_MatCapUV5", (int)_MatCapUV5); mat.SetInt("_MatCapUV6", (int)_MatCapUV6); mat.SetInt("_MatCapUV7", (int)_MatCapUV7); mat.SetInt("_MatCapUV8", (int)_MatCapUV8); // Mask Channels mat.SetInt("_ClippingMaskCH", (int)_ClippingMaskCH); mat.SetInt("_SpecularMaskCH", (int)_SpecularMaskCH); mat.SetInt("_RimMaskCH", (int)_RimMaskCH); mat.SetInt("_EmissionMaskCH", (int)_EmissionMaskCH); mat.SetInt("_OutlineMaskCH", (int)_OutlineMaskCH); mat.SetInt("_MatCapMaskCH1", (int)_MatCapMaskCH1); mat.SetInt("_MatCapMaskCH2", (int)_MatCapMaskCH2); mat.SetInt("_MatCapMaskCH3", (int)_MatCapMaskCH3); mat.SetInt("_MatCapMaskCH4", (int)_MatCapMaskCH4); mat.SetInt("_MatCapMaskCH5", (int)_MatCapMaskCH5); mat.SetInt("_MatCapMaskCH6", (int)_MatCapMaskCH6); mat.SetInt("_MatCapMaskCH7", (int)_MatCapMaskCH7); mat.SetInt("_MatCapMaskCH8", (int)_MatCapMaskCH8); mat.SetInt("_AOMapCH", (int)_AOMapCH); mat.SetInt("_FaceSDFTexCH", (int)_FaceSDFTexCH); } public override void SaveFrom(Material mat) { // Base Settings _ToonType = (ToonType) mat.GetInt("_ToonType"); _SurfaceType = (SurfaceType) mat.GetInt("_SurfaceType"); _Cull = (CullMode) mat.GetInt("_Cull"); _Cutoff = mat.GetFloat("_Cutoff"); _ZWriteMode = mat.GetInt("_ZWriteMode"); _AutoRenderQueue = mat.GetInt("_AutoRenderQueue"); _RenderQueue = mat.renderQueue; // Stencil _StencilComp = (CompareFunction) mat.GetInt("_StencilComp"); _StencilRef = mat.GetFloat("_StencilRef"); _StencilPass = (StencilOp) mat.GetInt("_StencilPass"); _StencilFail = (StencilOp) mat.GetInt("_StencilFail"); _StencilZFail = (StencilOp) mat.GetInt("_StencilZFail"); // Main Settings _BaseColor = mat.GetColor("_BaseColor"); _ShadeColor = mat.GetColor("_ShadeColor"); _BaseStep = mat.GetFloat("_BaseStep"); _StepSmoothness = mat.GetFloat("_StepSmoothness"); _ReceiveLightShadow = mat.GetInt("_ReceiveLightShadow"); _UseMidTone = mat.GetInt("_UseMidTone"); _MidColor = mat.GetColor("_MidColor"); _MidWidth = mat.GetFloat("_MidWidth"); _IndirectDimmer = mat.GetFloat("_IndirectDimmer"); _UseVertexColor = mat.GetInt("_UseVertexColor"); _UseDarknessMode = mat.GetInt("_UseDarknessMode"); _BumpScale = mat.GetFloat("_BumpScale"); _UseNormalMap = mat.GetInt("_UseNormalMap"); // High Light _SpecularColor = mat.GetColor("_SpecularColor"); _SpecularPower = mat.GetFloat("_SpecularPower"); _SpecularSmoothness = mat.GetFloat("_SpecularSmoothness"); // Rim Light _RimColor = mat.GetColor("_RimColor"); _RimPower = mat.GetFloat("_RimPower"); _RimSmoothness = mat.GetFloat("_RimSmoothness"); _ScreenRimTint = mat.GetColor("_ScreenRimTint"); _ScreenRimTintMode = (ScreenRimTintMode) mat.GetInt("_ScreenRimTintMode"); _ScreenRimWidthMultiplier = mat.GetFloat("_ScreenRimWidthMultiplier"); _ScreenRimShadowFade = mat.GetInt("_ScreenRimShadowFade"); // MatCap Layers (1–8) _MatCapMode = (MatCapMode) mat.GetInt("_MatCapMode"); _MatCapColor = mat.GetColor("_MatCapColor"); _MatCapTex = mat.GetTexture("_MatCapTex") as Texture2D; _MatCapWeight = mat.GetFloat("_MatCapWeight"); _MatCapLightingDimmer = mat.GetFloat("_MatCapLightingDimmer"); _MatCapMode2 = (MatCapMode) mat.GetInt("_MatCapMode2"); _MatCapColor2 = mat.GetColor("_MatCapColor2"); _MatCapTex2 = mat.GetTexture("_MatCapTex2") as Texture2D; _MatCapWeight2 = mat.GetFloat("_MatCapWeight2"); _MatCapLightingDimmer2 = mat.GetFloat("_MatCapLightingDimmer2"); _MatCapMode3 = (MatCapMode) mat.GetInt("_MatCapMode3"); _MatCapColor3 = mat.GetColor("_MatCapColor3"); _MatCapTex3 = mat.GetTexture("_MatCapTex3") as Texture2D; _MatCapWeight3 = mat.GetFloat("_MatCapWeight3"); _MatCapLightingDimmer3 = mat.GetFloat("_MatCapLightingDimmer3"); _MatCapMode4 = (MatCapMode) mat.GetInt("_MatCapMode4"); _MatCapColor4 = mat.GetColor("_MatCapColor4"); _MatCapTex4 = mat.GetTexture("_MatCapTex4") as Texture2D; _MatCapWeight4 = mat.GetFloat("_MatCapWeight4"); _MatCapLightingDimmer4 = mat.GetFloat("_MatCapLightingDimmer4"); _MatCapMode5 = (MatCapMode) mat.GetInt("_MatCapMode5"); _MatCapColor5 = mat.GetColor("_MatCapColor5"); _MatCapTex5 = mat.GetTexture("_MatCapTex5") as Texture2D; _MatCapWeight5 = mat.GetFloat("_MatCapWeight5"); _MatCapLightingDimmer5 = mat.GetFloat("_MatCapLightingDimmer5"); _MatCapMode6 = (MatCapMode) mat.GetInt("_MatCapMode6"); _MatCapColor6 = mat.GetColor("_MatCapColor6"); _MatCapTex6 = mat.GetTexture("_MatCapTex6") as Texture2D; _MatCapWeight6 = mat.GetFloat("_MatCapWeight6"); _MatCapLightingDimmer6 = mat.GetFloat("_MatCapLightingDimmer6"); _MatCapMode7 = (MatCapMode) mat.GetInt("_MatCapMode7"); _MatCapColor7 = mat.GetColor("_MatCapColor7"); _MatCapTex7 = mat.GetTexture("_MatCapTex7") as Texture2D; _MatCapWeight7 = mat.GetFloat("_MatCapWeight7"); _MatCapLightingDimmer7 = mat.GetFloat("_MatCapLightingDimmer7"); _MatCapMode8 = (MatCapMode) mat.GetInt("_MatCapMode8"); _MatCapColor8 = mat.GetColor("_MatCapColor8"); _MatCapTex8 = mat.GetTexture("_MatCapTex8") as Texture2D; _MatCapWeight8 = mat.GetFloat("_MatCapWeight8"); _MatCapLightingDimmer8 = mat.GetFloat("_MatCapLightingDimmer8"); // Emission _EmissionColor = mat.GetColor("_EmissionColor"); // Glitter _UseGlitter = mat.GetInt("_UseGlitter"); _GlitterColor = mat.GetColor("_GlitterColor"); _GlitterMainStrength = mat.GetFloat("_GlitterMainStrength"); _GlitterEnableLighting = mat.GetFloat("_GlitterEnableLighting"); _GlitterBackfaceMask = mat.GetInt("_GlitterBackfaceMask"); _GlitterApplyTransparency = mat.GetInt("_GlitterApplyTransparency"); _GlitterShadowMask = mat.GetFloat("_GlitterShadowMask"); _GlitterParticleSize = mat.GetFloat("_GlitterParticleSize"); _GlitterScaleRandomize = mat.GetFloat("_GlitterScaleRandomize"); _GlitterContrast = mat.GetFloat("_GlitterContrast"); _GlitterSensitivity = mat.GetFloat("_GlitterSensitivity"); _GlitterBlinkSpeed = mat.GetFloat("_GlitterBlinkSpeed"); _GlitterAngleLimit = mat.GetFloat("_GlitterAngleLimit"); _GlitterLightDirection = mat.GetFloat("_GlitterLightDirection"); _GlitterColorRandomness = mat.GetFloat("_GlitterColorRandomness"); _GlitterNormalStrength = mat.GetFloat("_GlitterNormalStrength"); _GlitterPostContrast = mat.GetFloat("_GlitterPostContrast"); // Outline _OutlineMode = (OutlineMode) mat.GetInt("_OutlineMode"); _UseOutlineNormalMap = mat.GetInt("_UseOutlineNormalMap"); _BlendOutlineMainTex = mat.GetInt("_BlendOutlineMainTex"); _OutlineColor = mat.GetColor("_OutlineColor"); _OutlineWidth = mat.GetFloat("_OutlineWidth"); _OutlineOffsetZ = mat.GetFloat("_OutlineOffsetZ"); // Refraction _RefractionWeight = mat.GetFloat("_RefractionWeight"); _RefractionBlurStep = mat.GetFloat("_RefractionBlurStep"); // Character Shadow _DisableCharShadow = mat.GetInt("_DisableCharShadow"); _DepthBias = mat.GetFloat("_DepthBias"); _NormalBias = mat.GetFloat("_NormalBias"); _CharShadowSmoothnessOffset = mat.GetFloat("_CharShadowSmoothnessOffset"); _CharShadowType = mat.GetInt("_CharShadowType"); _2DFaceShadowWidth = mat.GetFloat("_2DFaceShadowWidth"); // Face SDF _UseFaceSDFShadow = mat.GetInt("_UseFaceSDFShadow"); _SDFReverse = mat.GetInt("_SDFReverse"); _SDFOffset = mat.GetFloat("_SDFOffset"); _SDFBlur = mat.GetFloat("_SDFBlur"); // Hair High Light _UseHairHighLight = mat.GetInt("_UseHairHighLight"); _ReverseHairHighLightTex = mat.GetInt("_ReverseHairHighLightTex"); _HairHiStrength = mat.GetFloat("_HairHiStrength"); _HairHiUVOffset = mat.GetFloat("_HairHiUVOffset"); // UV Channels _BaseMapUV = (UVChannel) mat.GetInt("_BaseMapUV"); _NormalMapUV = (UVChannel) mat.GetInt("_NormalMapUV"); _ClippingMaskUV = (UVChannel) mat.GetInt("_ClippingMaskUV"); _FaceSDFUV = (UVChannel) mat.GetInt("_FaceSDFUV"); _SpecularMapUV = (UVChannel) mat.GetInt("_SpecularMapUV"); _RimMaskUV = (UVChannel) mat.GetInt("_RimMaskUV"); _HairHiMapUV = (UVChannel) mat.GetInt("_HairHiMapUV"); _GlitterMapUV = (UVChannel) mat.GetInt("_GlitterMapUV"); _EmissionMapUV = (UVChannel) mat.GetInt("_EmissionMapUV"); _OutlineMaskUV = (UVChannel) mat.GetInt("_OutlineMaskUV"); _MatCapUV1 = (UVChannel) mat.GetInt("_MatCapUV1"); _MatCapUV2 = (UVChannel) mat.GetInt("_MatCapUV2"); _MatCapUV3 = (UVChannel) mat.GetInt("_MatCapUV3"); _MatCapUV4 = (UVChannel) mat.GetInt("_MatCapUV4"); _MatCapUV5 = (UVChannel) mat.GetInt("_MatCapUV5"); _MatCapUV6 = (UVChannel) mat.GetInt("_MatCapUV6"); _MatCapUV7 = (UVChannel) mat.GetInt("_MatCapUV7"); _MatCapUV8 = (UVChannel) mat.GetInt("_MatCapUV8"); // Mask Channels _ClippingMaskCH = (MaskChannel) mat.GetInt("_ClippingMaskCH"); _SpecularMaskCH = (MaskChannel) mat.GetInt("_SpecularMaskCH"); _RimMaskCH = (MaskChannel) mat.GetInt("_RimMaskCH"); _EmissionMaskCH = (MaskChannel) mat.GetInt("_EmissionMaskCH"); _OutlineMaskCH = (MaskChannel) mat.GetInt("_OutlineMaskCH"); _MatCapMaskCH1 = (MaskChannel) mat.GetInt("_MatCapMaskCH1"); _MatCapMaskCH2 = (MaskChannel) mat.GetInt("_MatCapMaskCH2"); _MatCapMaskCH3 = (MaskChannel) mat.GetInt("_MatCapMaskCH3"); _MatCapMaskCH4 = (MaskChannel) mat.GetInt("_MatCapMaskCH4"); _MatCapMaskCH5 = (MaskChannel) mat.GetInt("_MatCapMaskCH5"); _MatCapMaskCH6 = (MaskChannel) mat.GetInt("_MatCapMaskCH6"); _MatCapMaskCH7 = (MaskChannel) mat.GetInt("_MatCapMaskCH7"); _MatCapMaskCH8 = (MaskChannel) mat.GetInt("_MatCapMaskCH8"); _AOMapCH = (MaskChannel) mat.GetInt("_AOMapCH"); _FaceSDFTexCH = (MaskChannel) mat.GetInt("_FaceSDFTexCH"); } } }