diff --git a/AgentScripts/WL814s_Build.cs b/AgentScripts/WL814s_Build.cs new file mode 100644 index 000000000..b9ed43ba3 --- /dev/null +++ b/AgentScripts/WL814s_Build.cs @@ -0,0 +1,313 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WL814s_Build.cs — 캐릭터를 배경과 같은 Toon 으로 (에디터 전용 · 발주서 WL-814s §1) +// +// 🔴 원본(`Assets/Suriyun/**`·`Assets/ThirdParty/**`·`Assets/Script/**`·원본 png) 수정 0. +// 전부 `Assets/WL/Look/Character/**` 아래 복사본으로 만든다. +// +// 배경 실측값(Assets/3DPixelArtEnvironment/Materials/*.mat · 8종 전수) +// _Shades 7 (8/8) · _Brightness 0.25 (7/8 · Leaves 1) · _MinimumDarkness 0.2 (7/8 · Leaves 0.25) +// _OUTLINESENABLED 1 (7/8 · Leaves 0) · _Outline (0,0,0,0) (7/8 · SandStone 1,1,1,0) · _Cull 2 +// Toon 그래프 실측: BaseColor = ToonLighting(AlbedoHighlight = Sample(_BaseMap) * _DiffuseColor, +// AlbedoShadow = Sample(_ShadowBaseMap) * _ShadowDiffuseColor, …) +// → 텍스처를 그대로 쓰려면 _BaseMap = 텍스처 · _DiffuseColor = 흰색. +// → 그림자 색은 배경의 중립 재질 Stone 의 비율 (0.2164, 0.2092, 0.3713) 을 텍스처에 곱한다. +// ───────────────────────────────────────────────────────────────────────────── + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEditor; +using UnityEngine; +using WL.Look.Character; + +public static class WL814s_Build +{ + public const string ROOT = "Assets/WL/Look/Character/"; + public const string MATS = ROOT + "Materials/"; + public const string TEX = ROOT + "Textures/"; + public const string RES = ROOT + "Resources/WL/"; + public const string SO_PATH = RES + "WLCharacterLookSettings.asset"; + public const string PREFAB = "Assets/Res_Addr/PC/LH_M05.prefab"; + public const string TOON_SG = "Assets/3DPixelArtEnvironment/Shaders/Toon.shadergraph"; + + // 인덱스 순서 (SO 4배열 공통) + public static readonly string[] KEYS = { "M05", "Skin", "Hair05", "face02" }; + public static readonly string[] ORIG_MAT = + { + "Assets/Suriyun/Characters/RedKnight/Materials/Characters/M05.mat", + "Assets/Suriyun/Characters/RedKnight/Materials/Skin&Hair&Face/skin.mat", + "Assets/Suriyun/Characters/RedKnight/Materials/Skin&Hair&Face/Hair05.mat", + "Assets/Suriyun/Characters/RedKnight/Materials/Skin&Hair&Face/Face/face02.mat", + }; + public static readonly string[] ORIG_TEX = + { + "Assets/Suriyun/Characters/RedKnight/Texture/M05/M05.png", + "Assets/Suriyun/Characters/RedKnight/Texture/Skin&Hair&Face/Face/Skin.png", + "Assets/Suriyun/Characters/RedKnight/Texture/M05/Hair05.png", + "Assets/Suriyun/Characters/RedKnight/Texture/Skin&Hair&Face/Face/face02.png", + }; + + // 배경 실측값 + public const float SHADES = 7f; + public const float BRIGHTNESS = 0.25f; + public const float MIN_DARK = 0.2f; + public const float OUTLINES = 1f; + static readonly Color SHADOW_TINT = new Color(0.2164f, 0.2092f, 0.3713f, 0f); // Stone 의 shadow/diffuse 비율 + static readonly Color OUTLINE_COL = new Color(0f, 0f, 0f, 0f); + + static void Ensure(string folder) + { + folder = folder.TrimEnd('/'); + if (AssetDatabase.IsValidFolder(folder)) return; + int i = folder.LastIndexOf('/'); + Ensure(folder.Substring(0, i)); + AssetDatabase.CreateFolder(folder.Substring(0, i), folder.Substring(i + 1)); + } + + static Shader ToonShader() + { + var sh = AssetDatabase.LoadAssetAtPath(TOON_SG); + return sh; + } + + // ═════════════════════════════════════════════════════════════════════ + // 배경 실측 표 + // ═════════════════════════════════════════════════════════════════════ + public static string DumpEnvMats() + { + string[] names = { "Leaves", "Trunk", "Stone", "SandStone", "Metal", "Wall", "Roof", "Window" }; + var sb = new StringBuilder(); + sb.AppendLine("name|shader|Shades|Brightness|MinimumDarkness|OUTLINESENABLED|DiffuseColor|ShadowDiffuseColor|Outline|BaseMap|Cull"); + foreach (var n in names) + { + var m = AssetDatabase.LoadAssetAtPath("Assets/3DPixelArtEnvironment/Materials/" + n + ".mat"); + if (m == null) { sb.AppendLine(n + "|MISS"); continue; } + sb.AppendLine(string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|{9}|{10}", + n, m.shader.name, + m.HasFloat("_Shades") ? m.GetFloat("_Shades").ToString("0.####") : "-", + m.HasFloat("_Brightness") ? m.GetFloat("_Brightness").ToString("0.####") : "-", + m.HasFloat("_MinimumDarkness") ? m.GetFloat("_MinimumDarkness").ToString("0.####") : "-", + m.IsKeywordEnabled("_OUTLINESENABLED") ? "1" : "0", + m.HasColor("_DiffuseColor") ? Fmt(m.GetColor("_DiffuseColor")) : "-", + m.HasColor("_ShadowDiffuseColor") ? Fmt(m.GetColor("_ShadowDiffuseColor")) : "-", + m.HasColor("_Outline") ? Fmt(m.GetColor("_Outline")) : "-", + (m.HasTexture("_BaseMap") && m.GetTexture("_BaseMap") != null) ? m.GetTexture("_BaseMap").name : "none", + m.HasFloat("_Cull") ? m.GetFloat("_Cull").ToString("0") : "-")); + } + return sb.ToString(); + } + + static string Fmt(Color c) { return string.Format("({0:0.####},{1:0.####},{2:0.####},{3:0.####})", c.r, c.g, c.b, c.a); } + + // ═════════════════════════════════════════════════════════════════════ + // Toon 머티리얼 생성 + // ═════════════════════════════════════════════════════════════════════ + /// suffix 세트의 머티리얼 4개를 만든다(텍스처는 texPaths 로 지정 · face 는 Unlit/Transparent 복사본). + public static string MakeSet(string matSuffix, string[] texPaths, bool faceCopy) + { + var sb = new StringBuilder(); + Ensure(MATS); + var toon = ToonShader(); + if (toon == null) return "TOON SHADER MISS " + TOON_SG; + + for (int i = 0; i < 4; i++) + { + string path = MATS + KEYS[i] + matSuffix + ".mat"; + var tex = AssetDatabase.LoadAssetAtPath(texPaths[i]); + if (tex == null) { sb.AppendLine("TEX MISS " + texPaths[i]); continue; } + + if (i == 3) + { + // 얼굴 = Toon 으로 못 옮긴다(알파 미지원) → 원본과 같은 Unlit/Transparent 복사본 + if (!faceCopy) { sb.AppendLine("FACE keep original"); continue; } + var src = AssetDatabase.LoadAssetAtPath(ORIG_MAT[3]); + var fm = AssetDatabase.LoadAssetAtPath(path); + if (fm == null) { fm = new Material(src); AssetDatabase.CreateAsset(fm, path); } + else { fm.shader = src.shader; fm.CopyPropertiesFromMaterial(src); } + fm.SetTexture("_MainTex", tex); + EditorUtility.SetDirty(fm); + sb.AppendLine("FACE " + path + " shader=" + fm.shader.name + " tex=" + tex.name + " " + tex.width + "x" + tex.height); + continue; + } + + var m = AssetDatabase.LoadAssetAtPath(path); + if (m == null) { m = new Material(toon); AssetDatabase.CreateAsset(m, path); } + m.shader = toon; + m.SetTexture("_BaseMap", tex); + m.SetTexture("_ShadowBaseMap", tex); + m.SetColor("_DiffuseColor", Color.white); + m.SetColor("_ShadowDiffuseColor", SHADOW_TINT); + m.SetColor("_Outline", OUTLINE_COL); + m.SetFloat("_Shades", SHADES); + m.SetFloat("_Brightness", BRIGHTNESS); + m.SetFloat("_MinimumDarkness", MIN_DARK); + m.SetFloat("_Cull", 2f); + if (OUTLINES > 0.5f) m.EnableKeyword("_OUTLINESENABLED"); else m.DisableKeyword("_OUTLINESENABLED"); + m.SetFloat("_OUTLINESENABLED", OUTLINES); + EditorUtility.SetDirty(m); + sb.AppendLine("MAT " + path + " tex=" + tex.name + " " + tex.width + "x" + tex.height + + " Shades=" + m.GetFloat("_Shades") + " Bright=" + m.GetFloat("_Brightness") + + " MinDark=" + m.GetFloat("_MinimumDarkness") + " OUT=" + (m.IsKeywordEnabled("_OUTLINESENABLED") ? 1 : 0)); + } + AssetDatabase.SaveAssets(); + return sb.ToString(); + } + + // ═════════════════════════════════════════════════════════════════════ + // SO + // ═════════════════════════════════════════════════════════════════════ + public static string MakeSO(int defaultMode, string suffix1, string suffix2, string suffix3) + { + Ensure(RES); + var so = AssetDatabase.LoadAssetAtPath(SO_PATH); + if (so == null) + { + so = ScriptableObject.CreateInstance(); + AssetDatabase.CreateAsset(so, SO_PATH); + } + so.enabled_ = 1; + so.mode = defaultMode; + so.verboseLog = 0; + so.originals = new Material[4]; + so.mode1 = new Material[4]; + so.mode2 = new Material[4]; + so.mode3 = new Material[4]; + var sb = new StringBuilder(); + for (int i = 0; i < 4; i++) + { + so.originals[i] = AssetDatabase.LoadAssetAtPath(ORIG_MAT[i]); + so.mode1[i] = Pick(MATS + KEYS[i] + suffix1 + ".mat", so.originals[i]); + so.mode2[i] = Pick(MATS + KEYS[i] + suffix2 + ".mat", so.originals[i]); + so.mode3[i] = Pick(MATS + KEYS[i] + suffix3 + ".mat", so.originals[i]); + sb.AppendLine("SO[" + i + "] " + KEYS[i] + + " orig=" + Nm(so.originals[i]) + " m1=" + Nm(so.mode1[i]) + " m2=" + Nm(so.mode2[i]) + " m3=" + Nm(so.mode3[i])); + } + EditorUtility.SetDirty(so); + AssetDatabase.SaveAssets(); + WLCharacterLookSettings.Invalidate(); + sb.AppendLine("SO saved " + SO_PATH + " enabled_=" + so.enabled_ + " mode=" + so.mode); + return sb.ToString(); + } + + static Material Pick(string p, Material fallback) + { + var m = AssetDatabase.LoadAssetAtPath(p); + return m != null ? m : fallback; + } + static string Nm(Material m) { return m == null ? "null" : m.name; } + + public static string SetSO(int enabled_, int mode) + { + var so = AssetDatabase.LoadAssetAtPath(SO_PATH); + if (so == null) return "SO MISS"; + so.enabled_ = enabled_; so.mode = mode; + EditorUtility.SetDirty(so); AssetDatabase.SaveAssets(); + WLCharacterLookSettings.Invalidate(); + return "SO enabled_=" + enabled_ + " mode=" + mode; + } + + // ═════════════════════════════════════════════════════════════════════ + // 프리팹 배선 + // ═════════════════════════════════════════════════════════════════════ + /// 프리팹 렌더러를 지정 모드의 머티리얼로 바꾸고 WLCharacterLook 을 붙인다. + public static string PatchPrefab(int mode, bool addComponent) + { + var so = AssetDatabase.LoadAssetAtPath(SO_PATH); + if (so == null) return "SO MISS"; + var target = so.SetForMode(mode); + var sb = new StringBuilder(); + + var root = PrefabUtility.LoadPrefabContents(PREFAB); + try + { + if (addComponent && root.GetComponent() == null) + { + root.AddComponent(); + sb.AppendLine("ADD WLCharacterLook on " + root.name); + } + var rs = root.GetComponentsInChildren(true); + foreach (var r in rs) + { + var mats = r.sharedMaterials; + bool ch = false; + for (int s = 0; s < mats.Length; s++) + { + int idx = FindIdx(so, mats[s]); + if (idx < 0) { sb.AppendLine("KEEP " + r.name + "[" + s + "] " + Nm(mats[s]) + " (표 밖)"); continue; } + if (target[idx] != null && mats[s] != target[idx]) { sb.AppendLine("SWAP " + r.name + "[" + s + "] " + Nm(mats[s]) + " -> " + Nm(target[idx])); mats[s] = target[idx]; ch = true; } + else sb.AppendLine("SAME " + r.name + "[" + s + "] " + Nm(mats[s])); + } + if (ch) r.sharedMaterials = mats; + } + PrefabUtility.SaveAsPrefabAsset(root, PREFAB); + } + finally { PrefabUtility.UnloadPrefabContents(root); } + AssetDatabase.SaveAssets(); + return sb.ToString(); + } + + static int FindIdx(WLCharacterLookSettings c, Material m) + { + if (m == null) return -1; + for (int i = 0; i < 4; i++) + { + if (c.originals != null && i < c.originals.Length && c.originals[i] == m) return i; + if (c.mode1 != null && i < c.mode1.Length && c.mode1[i] == m) return i; + if (c.mode2 != null && i < c.mode2.Length && c.mode2[i] == m) return i; + if (c.mode3 != null && i < c.mode3.Length && c.mode3[i] == m) return i; + } + return -1; + } + + public static string DumpPrefab() + { + var sb = new StringBuilder(); + var root = AssetDatabase.LoadAssetAtPath(PREFAB); + if (root == null) return "PREFAB MISS"; + sb.AppendLine("components on root: "); + foreach (var c in root.GetComponents()) sb.AppendLine(" " + c.GetType().Name); + foreach (var r in root.GetComponentsInChildren(true)) + { + var ms = r.sharedMaterials; + for (int i = 0; i < ms.Length; i++) + sb.AppendLine("REND " + r.name + "[" + i + "] act=" + r.gameObject.activeSelf + " mat=" + Nm(ms[i]) + + " shader=" + (ms[i] != null ? ms[i].shader.name : "-")); + } + return sb.ToString(); + } + + public static void Run() { Debug.Log("[WL814s build] env=\n" + DumpEnvMats()); } + + // ═════════════════════════════════════════════════════════════════════ + // 디스패처 — unity command run_script --entry WL814s_Build.Cmd --args " …" + // ═════════════════════════════════════════════════════════════════════ + public static string Cmd(string[] args) + { + if (args == null || args.Length == 0) return DumpEnvMats(); + string c = args[0]; + try + { + if (c == "env") return DumpEnvMats(); + if (c == "dump") return DumpPrefab(); + if (c == "mkset") + { + // mkset + var tex = new string[4] { args[2], args[3], args[4], args[5] }; + return MakeSet(args[1], tex, args[6] == "1"); + } + if (c == "rm") + { + var sb2 = new StringBuilder(); + for (int i = 1; i < args.Length; i++) sb2.AppendLine((AssetDatabase.DeleteAsset(args[i]) ? "DEL " : "MISS ") + args[i]); + AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); + return sb2.ToString(); + } + if (c == "so") return MakeSO(int.Parse(args[1]), args[2], args[3], args[4]); + if (c == "setso") return SetSO(int.Parse(args[1]), int.Parse(args[2])); + if (c == "patch") return PatchPrefab(int.Parse(args[1]), args.Length > 2 && args[2] == "1"); + return "UNKNOWN " + c; + } + catch (Exception e) { return "EXCEPTION " + e.GetType().Name + " " + e.Message + "\n" + e.StackTrace; } + } +} diff --git a/AgentScripts/WL814s_Capture.cs b/AgentScripts/WL814s_Capture.cs new file mode 100644 index 000000000..c2231c2eb --- /dev/null +++ b/AgentScripts/WL814s_Capture.cs @@ -0,0 +1,256 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WL814s_Capture.cs — WL_ArenaProto 씬에서 같은 카메라·같은 포즈로 단계별 캡처 (발주 WL-814s §4) +// +// Play 중에 호출한다. 4개 상태(원본 · ①셰이더 · ①+③축소 · ①+③+②평탄화)를 +// **같은 프레임·같은 포즈**에서 연속으로 렌더한다 → 비교가 공정하다. +// 🔴 씬·프리팹·머티리얼 파일에 아무 것도 쓰지 않는다(런타임 sharedMaterials 참조만 바꾼다). +// ───────────────────────────────────────────────────────────────────────────── + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEngine; +using WL.Look.Character; + +public static class WL814s_Capture +{ + public const int W = 1080, H = 1920; + + static string OutDir() + { + string d = Path.GetFullPath(Path.Combine(Application.dataPath, "../Screenshots_WL/WL814s")); + Directory.CreateDirectory(d); + return d; + } + + static GameObject FindPc() + { + var all = UnityEngine.Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + foreach (var a in all) + { + if (a.GetComponentInChildren(true) != null) return a.gameObject; + } + return null; + } + + static void FreezePose(GameObject pc) + { + var an = pc != null ? pc.GetComponent() : null; + if (an == null) return; + an.fireEvents = false; + an.speed = 0f; + an.Play("idle", 0, 0.25f); + an.Update(0f); + } + + static void Shot(Camera cam, string file) + { + var rt = new RenderTexture(W, H, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); + rt.antiAliasing = 1; + var prevT = cam.targetTexture; var prevActive = RenderTexture.active; + cam.targetTexture = rt; + cam.Render(); + RenderTexture.active = rt; + var tex = new Texture2D(W, H, TextureFormat.RGB24, false); + tex.ReadPixels(new Rect(0, 0, W, H), 0, 0); + tex.Apply(false); + File.WriteAllBytes(file, tex.EncodeToPNG()); + cam.targetTexture = prevT; RenderTexture.active = prevActive; + UnityEngine.Object.DestroyImmediate(tex); + rt.Release(); UnityEngine.Object.DestroyImmediate(rt); + } + + /// args = ["set", "", "", "", …] · 각 모드를 같은 포즈로 찍는다. + public static string Cmd(string[] args) + { + try + { + var sb = new StringBuilder(); + var cam = Camera.main; + if (cam == null) + { + var cams = UnityEngine.Object.FindObjectsByType(FindObjectsInactive.Exclude, FindObjectsSortMode.None); + if (cams.Length > 0) cam = cams[0]; + } + if (cam == null) return "NO CAMERA"; + var pc = FindPc(); + if (pc == null) return "NO PC"; + FreezePose(pc); + + string dir = OutDir(); + sb.AppendLine("cam=" + cam.name + " ortho=" + cam.orthographic + " size=" + cam.orthographicSize + + " pos=" + cam.transform.position.ToString("F4") + " euler=" + cam.transform.eulerAngles.ToString("F3")); + sb.AppendLine("pc=" + pc.name + " pos=" + pc.transform.position.ToString("F4")); + + string cmd = args.Length > 0 ? args[0] : "set"; + if (cmd == "set") + { + string prefix = args[1]; + for (int i = 2; i < args.Length; i++) + { + int mode = int.Parse(args[i]); + WLCharacterLook.ApplyMode(pc, mode, null); + FreezePose(pc); + string f = Path.Combine(dir, prefix + "_m" + mode + ".png"); + Shot(cam, f); + sb.AppendLine("SHOT mode=" + mode + " -> " + f + " · " + WLCharacterLook.LastLog + " · " + DumpMats(pc)); + } + } + else if (cmd == "face") + { + // 얼굴 확대 — 같은 각도, 머리 중심, 작은 ortho size + string prefix = args[1]; + // 얼굴이 카메라를 보게 돌린다(이 샷 전용 · Play 중이라 파일에 남지 않는다) + var fwd = -cam.transform.forward; fwd.y = 0f; + if (fwd.sqrMagnitude > 0.0001f) pc.transform.rotation = Quaternion.LookRotation(fwd.normalized, Vector3.up); + FreezePose(pc); + var head = FindHead(pc); + var go = new GameObject("WL814s_FaceCam"); + var fc = go.AddComponent(); + fc.CopyFrom(cam); + fc.orthographic = true; + fc.orthographicSize = float.Parse(args[2]); + go.transform.rotation = cam.transform.rotation; + go.transform.position = head - cam.transform.forward * 20f; + fc.targetTexture = null; + for (int i = 3; i < args.Length; i++) + { + int mode = int.Parse(args[i]); + WLCharacterLook.ApplyMode(pc, mode, null); + FreezePose(pc); + string f = Path.Combine(dir, prefix + "_m" + mode + ".png"); + Shot(fc, f); + sb.AppendLine("FACE mode=" + mode + " -> " + f); + } + sb.AppendLine("head=" + head.ToString("F4") + " size=" + fc.orthographicSize); + UnityEngine.Object.DestroyImmediate(go); + } + else if (cmd == "suffix") + { + // suffix … · Materials/.mat 을 직접 물린다 + // (같은 Play 세션 안에서 찍으므로 구름 그림자·잔디까지 같은 조건 = 공정한 비교) + string prefix = args[1]; + for (int i = 2; i < args.Length; i++) + { + ApplySuffix(pc, args[i]); + FreezePose(pc); + string f = Path.Combine(dir, prefix + "_" + args[i].Replace("_", "") + ".png"); + Shot(cam, f); + sb.AppendLine("SHOT " + args[i] + " -> " + f + " · " + DumpMats(pc)); + } + } + else if (cmd == "suffixface") + { + string prefix = args[1]; + var fwd2 = -cam.transform.forward; fwd2.y = 0f; + if (fwd2.sqrMagnitude > 0.0001f) pc.transform.rotation = Quaternion.LookRotation(fwd2.normalized, Vector3.up); + FreezePose(pc); + var head2 = FindHead(pc); + var go2 = new GameObject("WL814s_FaceCam2"); + var fc2 = go2.AddComponent(); + fc2.CopyFrom(cam); fc2.orthographic = true; fc2.orthographicSize = float.Parse(args[2]); + go2.transform.rotation = cam.transform.rotation; + go2.transform.position = head2 - cam.transform.forward * 20f; + for (int i = 3; i < args.Length; i++) + { + ApplySuffix(pc, args[i]); + FreezePose(pc); + Shot(fc2, Path.Combine(dir, prefix + "_" + args[i].Replace("_", "") + ".png")); + sb.AppendLine("FACE " + args[i]); + } + UnityEngine.Object.DestroyImmediate(go2); + } + else if (cmd == "dumponly") + { + // 아무 것도 적용하지 않고 지금 상태만 읽는다 (Awake 가 한 일을 그대로 본다) + var c0 = WLCharacterLookSettings.Instance; + sb.AppendLine("SO enabled_=" + (c0 != null ? c0.enabled_ : -1) + " mode=" + (c0 != null ? c0.mode : -1) + + " ActiveMode=" + WLCharacterLookSettings.ActiveMode + + " · Awake 적용내역=" + WLCharacterLook.LastLog); + sb.AppendLine("RESULT " + DumpMats(pc)); + } + else if (cmd == "probe") + { + for (int i = 1; i < args.Length; i++) + { + int mode = int.Parse(args[i]); + WLCharacterLook.ApplyMode(pc, mode, null); + sb.AppendLine("MODE " + mode + " · " + DumpMats(pc)); + } + } + else if (cmd == "switch") + { + // SO 가 지시하는 대로 (enabled_ 실측용) + WLCharacterLookSettings.Invalidate(); + WLCharacterLook.Apply(pc); + sb.AppendLine("SO enabled_=" + (WLCharacterLookSettings.Instance != null ? WLCharacterLookSettings.Instance.enabled_ : -1) + + " mode=" + (WLCharacterLookSettings.Instance != null ? WLCharacterLookSettings.Instance.mode : -1) + + " ActiveMode=" + WLCharacterLookSettings.ActiveMode); + sb.AppendLine("RESULT " + DumpMats(pc)); + } + return sb.ToString(); + } + catch (Exception e) { return "EXCEPTION " + e.GetType().Name + " " + e.Message + "\n" + e.StackTrace; } + } + + // 비교 전용 — Materials/.mat 을 렌더러에 직접 물린다("_orig" 면 원본으로) + static readonly string[] KEYS = { "M05", "Skin", "Hair05", "face02" }; + static void ApplySuffix(GameObject pc, string suffix) + { + var cfg = WLCharacterLookSettings.Instance; + if (cfg == null) return; + if (suffix == "_orig") { WLCharacterLook.ApplyMode(pc, 0, cfg); return; } + var want = new Material[4]; + for (int i = 0; i < 4; i++) + { + var m = UnityEditor.AssetDatabase.LoadAssetAtPath( + "Assets/WL/Look/Character/Materials/" + KEYS[i] + suffix + ".mat"); + want[i] = m != null ? m : cfg.originals[i]; + } + foreach (var r in pc.GetComponentsInChildren(true)) + { + var ms = r.sharedMaterials; bool ch = false; + for (int s = 0; s < ms.Length; s++) + { + int idx = -1; + for (int i = 0; i < 4 && idx < 0; i++) + { + if (cfg.originals[i] == ms[s] || cfg.mode1[i] == ms[s] || cfg.mode2[i] == ms[s] || cfg.mode3[i] == ms[s]) idx = i; + else if (ms[s] != null && ms[s].name.StartsWith(KEYS[i])) idx = i; + } + if (idx < 0 || want[idx] == null || ms[s] == want[idx]) continue; + ms[s] = want[idx]; ch = true; + } + if (ch) r.sharedMaterials = ms; + } + } + + static Vector3 FindHead(GameObject pc) + { + // 얼굴 머티리얼을 쓰는 렌더러의 바운즈 중심 + var rs = pc.GetComponentsInChildren(true); + foreach (var r in rs) + { + var ms = r.sharedMaterials; + foreach (var m in ms) + if (m != null && m.name.StartsWith("face")) return r.bounds.center; + } + var b = new Bounds(pc.transform.position, Vector3.zero); + foreach (var r in rs) if (r.enabled) b.Encapsulate(r.bounds); + return new Vector3(b.center.x, b.max.y - b.size.y * 0.12f, b.center.z); + } + + static string DumpMats(GameObject pc) + { + var sb = new StringBuilder(); + var rs = pc.GetComponentsInChildren(true); + foreach (var r in rs) + { + var ms = r.sharedMaterials; + for (int i = 0; i < ms.Length; i++) + sb.Append(r.name + "[" + i + "]=" + (ms[i] == null ? "null" : ms[i].name + "/" + ms[i].shader.name) + "; "); + } + return sb.ToString(); + } +} diff --git a/AgentScripts/WL814s_Posterize.cs b/AgentScripts/WL814s_Posterize.cs new file mode 100644 index 000000000..7490265b8 --- /dev/null +++ b/AgentScripts/WL814s_Posterize.cs @@ -0,0 +1,255 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WL814s_Posterize.cs — 캐릭터 텍스처 복사 + 색 평탄화(양자화) · 에디터 전용 +// +// PD 지시 #814 · 발주서 WL-814s §2 / §3 +// +// 🔴 원본 png(`Assets/Suriyun/**`)는 **바이트 하나도 건드리지 않는다**. +// · 복사본을 `Assets/WL/Look/Character/Textures/` 에 만들고 +// · 축소는 **복사본의 임포트 설정 maxTextureSize** 로만 한다(픽셀 리샘플 0 = 되돌리기 쉬움) +// · 평탄화는 복사본을 읽어 **새 png** 로 저장한다(원본 덮어쓰기 0) +// +// 평탄화 = 채널당 색 단계를 levels 개로 반올림. 알파는 **손대지 않는다** +// (얼굴 face02 · 머리 가장자리가 깨지지 않게 · 발주 §3). +// ───────────────────────────────────────────────────────────────────────────── + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using UnityEditor; +using UnityEngine; + +public static class WL814s_Posterize +{ + public const string DST = "Assets/WL/Look/Character/Textures/"; + + // 원본 4장(+검은 참고). name → 원본 경로 + public static readonly string[,] SRC = new string[,] + { + { "M05", "Assets/Suriyun/Characters/RedKnight/Texture/M05/M05.png" }, + { "Skin", "Assets/Suriyun/Characters/RedKnight/Texture/Skin&Hair&Face/Face/Skin.png" }, + { "Hair05", "Assets/Suriyun/Characters/RedKnight/Texture/M05/Hair05.png" }, + { "face02", "Assets/Suriyun/Characters/RedKnight/Texture/Skin&Hair&Face/Face/face02.png" }, + }; + + static void Ensure(string folder) + { + folder = folder.TrimEnd('/'); + if (AssetDatabase.IsValidFolder(folder)) return; + int i = folder.LastIndexOf('/'); + Ensure(folder.Substring(0, i)); + AssetDatabase.CreateFolder(folder.Substring(0, i), folder.Substring(i + 1)); + } + + static Texture2D LoadRaw(string path, out int w, out int h) + { + byte[] bytes = File.ReadAllBytes(path); + var t = new Texture2D(2, 2, TextureFormat.RGBA32, false); + t.LoadImage(bytes); + w = t.width; h = t.height; + return t; + } + + // ═════════════════════════════════════════════════════════════════════ + // ① 복사본 만들기 (바이트 그대로) + 임포트 설정 + // ═════════════════════════════════════════════════════════════════════ + public static string CopyAll() + { + var sb = new StringBuilder(); + Ensure(DST); + for (int i = 0; i < SRC.GetLength(0); i++) + { + string name = SRC[i, 0], src = SRC[i, 1]; + string dst = DST + name + "_WL.png"; + File.Copy(src, dst, true); + sb.AppendLine("COPY " + src + " -> " + dst + " (" + new FileInfo(dst).Length + " bytes · 원본과 동일 = " + + (new FileInfo(src).Length == new FileInfo(dst).Length) + ")"); + } + AssetDatabase.Refresh(); + // 원본 임포터 설정을 복사본에 이식 + for (int i = 0; i < SRC.GetLength(0); i++) + { + string name = SRC[i, 0], src = SRC[i, 1]; + string dst = DST + name + "_WL.png"; + var si = AssetImporter.GetAtPath(src) as TextureImporter; + var di = AssetImporter.GetAtPath(dst) as TextureImporter; + if (si == null || di == null) { sb.AppendLine("IMPORTER MISS " + name); continue; } + di.textureType = si.textureType; + di.sRGBTexture = si.sRGBTexture; + di.alphaSource = si.alphaSource; + di.alphaIsTransparency = si.alphaIsTransparency; + di.mipmapEnabled = si.mipmapEnabled; + di.wrapMode = si.wrapMode; + di.filterMode = si.filterMode; + di.anisoLevel = si.anisoLevel; + di.npotScale = si.npotScale; + di.maxTextureSize = si.maxTextureSize; + di.textureCompression = si.textureCompression; + di.SaveAndReimport(); + sb.AppendLine("IMPORT " + name + "_WL type=" + di.textureType + " sRGB=" + di.sRGBTexture + + " alphaSrc=" + di.alphaSource + " alphaIsTransparency=" + di.alphaIsTransparency + + " mip=" + di.mipmapEnabled + " max=" + di.maxTextureSize); + } + AssetDatabase.SaveAssets(); + return sb.ToString(); + } + + // ═════════════════════════════════════════════════════════════════════ + // ② 평탄화 — 복사본을 읽어 levels 단계로 양자화한 새 png + // ═════════════════════════════════════════════════════════════════════ + public static string MakeFlat(int levels) + { + var sb = new StringBuilder(); + Ensure(DST); + for (int i = 0; i < SRC.GetLength(0); i++) + { + string name = SRC[i, 0]; + string src = DST + name + "_WL.png"; + if (!File.Exists(src)) { sb.AppendLine("SKIP(no copy) " + src); continue; } + int w, h; + var t = LoadRaw(src, out w, out h); + var px = t.GetPixels32(); + + float step = 255f / (levels - 1); + int uniqBefore = CountUnique(px); + int alphaChanged = 0; + for (int p = 0; p < px.Length; p++) + { + var c = px[p]; + c.r = (byte)Mathf.Clamp(Mathf.RoundToInt(Mathf.Round(c.r / step) * step), 0, 255); + c.g = (byte)Mathf.Clamp(Mathf.RoundToInt(Mathf.Round(c.g / step) * step), 0, 255); + c.b = (byte)Mathf.Clamp(Mathf.RoundToInt(Mathf.Round(c.b / step) * step), 0, 255); + // 알파는 그대로 (얼굴·머리 가장자리 보존) + px[p] = c; + } + var outT = new Texture2D(w, h, TextureFormat.RGBA32, false); + outT.SetPixels32(px); + outT.Apply(false); + string dst = DST + name + "_WL_Q" + levels + ".png"; + File.WriteAllBytes(dst, outT.EncodeToPNG()); + int uniqAfter = CountUnique(px); + sb.AppendLine("FLAT " + name + " levels=" + levels + " " + w + "x" + h + + " 고유색 " + uniqBefore + " -> " + uniqAfter + " · 알파변경 " + alphaChanged + " · " + dst); + UnityEngine.Object.DestroyImmediate(t); + UnityEngine.Object.DestroyImmediate(outT); + } + AssetDatabase.Refresh(); + // 임포트 설정을 복사본과 같게 + for (int i = 0; i < SRC.GetLength(0); i++) + { + string name = SRC[i, 0]; + var si = AssetImporter.GetAtPath(DST + name + "_WL.png") as TextureImporter; + var di = AssetImporter.GetAtPath(DST + name + "_WL_Q" + levels + ".png") as TextureImporter; + if (si == null || di == null) continue; + di.textureType = si.textureType; + di.sRGBTexture = si.sRGBTexture; + di.alphaSource = si.alphaSource; + di.alphaIsTransparency = si.alphaIsTransparency; + di.mipmapEnabled = si.mipmapEnabled; + di.wrapMode = si.wrapMode; + di.filterMode = si.filterMode; + di.npotScale = si.npotScale; + di.maxTextureSize = si.maxTextureSize; + di.textureCompression = si.textureCompression; + di.SaveAndReimport(); + } + AssetDatabase.SaveAssets(); + return sb.ToString(); + } + + static int CountUnique(Color32[] px) + { + var set = new HashSet(); + int stride = px.Length > 1048576 ? 4 : 1; // 4M 픽셀 이상이면 1/4 샘플링(메모리) + for (int i = 0; i < px.Length; i += stride) + { + var c = px[i]; + if (c.a == 0) continue; + set.Add((c.r << 16) | (c.g << 8) | c.b); + } + return set.Count; + } + + // ═════════════════════════════════════════════════════════════════════ + // ③ 축소 — 복사본/평탄화본의 maxTextureSize 만 바꾼다 + // ═════════════════════════════════════════════════════════════════════ + public static string SetMaxSize(string suffix, int maxSize) + { + var sb = new StringBuilder(); + for (int i = 0; i < SRC.GetLength(0); i++) + { + string p = DST + SRC[i, 0] + suffix + ".png"; + var im = AssetImporter.GetAtPath(p) as TextureImporter; + if (im == null) { sb.AppendLine("MISS " + p); continue; } + im.maxTextureSize = maxSize; + im.SaveAndReimport(); + var t = AssetDatabase.LoadAssetAtPath(p); + long mem = t != null ? UnityEngine.Profiling.Profiler.GetRuntimeMemorySizeLong(t) : 0; + sb.AppendLine("MAXSIZE " + p + " -> " + maxSize + " · 실제 " + (t != null ? t.width + "x" + t.height : "?") + + " · " + (t != null ? t.format.ToString() : "?") + " · " + (mem / 1024f / 1024f).ToString("F3") + " MB"); + } + AssetDatabase.SaveAssets(); + return sb.ToString(); + } + + /// 원본 4장의 런타임 메모리(현재 임포트 상태)를 잰다. + public static string MeasureOriginals() + { + var sb = new StringBuilder(); + float tot = 0; + for (int i = 0; i < SRC.GetLength(0); i++) + { + var t = AssetDatabase.LoadAssetAtPath(SRC[i, 1]); + if (t == null) { sb.AppendLine("MISS " + SRC[i, 1]); continue; } + long mem = UnityEngine.Profiling.Profiler.GetRuntimeMemorySizeLong(t); + tot += mem / 1024f / 1024f; + sb.AppendLine("ORIG " + SRC[i, 0] + " " + t.width + "x" + t.height + " " + t.format + " mip=" + (t.mipmapCount > 1) + + " · " + (mem / 1024f / 1024f).ToString("F3") + " MB"); + } + sb.AppendLine("ORIG TOTAL " + tot.ToString("F3") + " MB"); + return sb.ToString(); + } + + public static string MeasureSet(string suffix) + { + var sb = new StringBuilder(); + float tot = 0; + for (int i = 0; i < SRC.GetLength(0); i++) + { + string p = DST + SRC[i, 0] + suffix + ".png"; + var t = AssetDatabase.LoadAssetAtPath(p); + if (t == null) { sb.AppendLine("MISS " + p); continue; } + long mem = UnityEngine.Profiling.Profiler.GetRuntimeMemorySizeLong(t); + tot += mem / 1024f / 1024f; + sb.AppendLine("SET" + suffix + " " + SRC[i, 0] + " " + t.width + "x" + t.height + " " + t.format + + " · " + (mem / 1024f / 1024f).ToString("F3") + " MB"); + } + sb.AppendLine("SET" + suffix + " TOTAL " + tot.ToString("F3") + " MB"); + return sb.ToString(); + } + + public static void Run() + { + var sb = new StringBuilder(); + sb.Append(MeasureOriginals()); + sb.Append(CopyAll()); + Debug.Log("[WL814s posterize]\n" + sb); + } + + // 디스패처 — unity command run_script --entry WL814s_Posterize.Cmd --args " …" + public static string Cmd(string[] args) + { + if (args == null || args.Length == 0) return MeasureOriginals(); + string c = args[0]; + try + { + if (c == "measure") return MeasureOriginals(); + if (c == "copy") return MeasureOriginals() + CopyAll(); + if (c == "flat") return MakeFlat(int.Parse(args[1])); + if (c == "maxsize") return SetMaxSize(args[1] == "-" ? "_WL" : args[1], int.Parse(args[2])); + if (c == "set") return MeasureSet(args[1] == "-" ? "_WL" : args[1]); + return "UNKNOWN " + c; + } + catch (Exception e) { return "EXCEPTION " + e.GetType().Name + " " + e.Message + "\n" + e.StackTrace; } + } +} diff --git a/Assets/Res_Addr/PC/LH_M05.prefab b/Assets/Res_Addr/PC/LH_M05.prefab index 5f276b7a7..e42af6ece 100644 --- a/Assets/Res_Addr/PC/LH_M05.prefab +++ b/Assets/Res_Addr/PC/LH_M05.prefab @@ -57,7 +57,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 54e809e248f25bc47ba8bc38cc93abb8, type: 2} + - {fileID: 2100000, guid: f7ce73c5f996b0547a7ac1f49de1a2c8, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3246,7 +3246,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0957fffbd8f7ab84a9075733b67fed01, type: 2} + - {fileID: 2100000, guid: 8e6859b01ec3a204ab52fa46ff458883, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -3754,7 +3754,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 759d477d80623a74fb90027ee36eb008, type: 2} + - {fileID: 2100000, guid: 41b03ff423d68e54ca6edd623a7930bd, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -4225,7 +4225,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0957fffbd8f7ab84a9075733b67fed01, type: 2} + - {fileID: 2100000, guid: 8e6859b01ec3a204ab52fa46ff458883, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -6190,6 +6190,7 @@ GameObject: - component: {fileID: 1835281278008071509} - component: {fileID: 1155056168462878929} - component: {fileID: 8835979289890761207} + - component: {fileID: 6664758947101401473} m_Layer: 3 m_Name: LH_M05 m_TagString: Untagged @@ -6415,6 +6416,18 @@ MonoBehaviour: m_EditorClassIdentifier: Assembly-CSharp::WL.Character.WLWeaponFitter overrideTargetRatio: 0 sockets: [] +--- !u!114 &6664758947101401473 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7522112115323654996} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a645824e9a9c1c146a7fc5e5fdb2a515, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::WL.Look.Character.WLCharacterLook --- !u!1 &7572986597832592123 GameObject: m_ObjectHideFlags: 0 @@ -6725,7 +6738,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 0957fffbd8f7ab84a9075733b67fed01, type: 2} + - {fileID: 2100000, guid: 8e6859b01ec3a204ab52fa46ff458883, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -7534,7 +7547,7 @@ SkinnedMeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 8ae3ad5563aace8428cb247adb3da626, type: 2} + - {fileID: 2100000, guid: dfd97eb4215e074478e692d7b445f230, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/WL/Look/Character.meta b/Assets/WL/Look/Character.meta new file mode 100644 index 000000000..67c093bc3 --- /dev/null +++ b/Assets/WL/Look/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: caa01cb399578e6429a50a7edd7ec089 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials.meta b/Assets/WL/Look/Character/Materials.meta new file mode 100644 index 000000000..94a3258ad --- /dev/null +++ b/Assets/WL/Look/Character/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eaa900863332ac640a4485b823bf7253 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Hair05_Toon.mat b/Assets/WL/Look/Character/Materials/Hair05_Toon.mat new file mode 100644 index 000000000..6f6f7d75b --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_Toon.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Hair05_Toon + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 1303b400492408040af1bc0113dbdf26, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: 1303b400492408040af1bc0113dbdf26, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &8952628817320874540 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 diff --git a/Assets/WL/Look/Character/Materials/Hair05_Toon.mat.meta b/Assets/WL/Look/Character/Materials/Hair05_Toon.mat.meta new file mode 100644 index 000000000..e572d9ca7 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_Toon.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8ad7e2b6fe09d64d8e5d431fc6d174e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat b/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat new file mode 100644 index 000000000..189a0eb6c --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-1435736134888275448 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Hair05_ToonF + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4235527f7d07a444bab0771fe41cf038, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: 4235527f7d07a444bab0771fe41cf038, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat.meta b/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat.meta new file mode 100644 index 000000000..fac239b93 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_ToonF.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f5d8a1afc2653942a2d081786f030ba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat b/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat new file mode 100644 index 000000000..45975b1bf --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6349725651354694064 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Hair05_ToonS + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 6a9d3190eb5cdc0489df434d30a4133a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: 6a9d3190eb5cdc0489df434d30a4133a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat.meta b/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat.meta new file mode 100644 index 000000000..53b5ed708 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Hair05_ToonS.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41b03ff423d68e54ca6edd623a7930bd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/M05_Toon.mat b/Assets/WL/Look/Character/Materials/M05_Toon.mat new file mode 100644 index 000000000..8abb15e5c --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_Toon.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M05_Toon + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: d3475d52f16f8104faf0a98153aaaab1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: d3475d52f16f8104faf0a98153aaaab1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &8084689307149688911 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 diff --git a/Assets/WL/Look/Character/Materials/M05_Toon.mat.meta b/Assets/WL/Look/Character/Materials/M05_Toon.mat.meta new file mode 100644 index 000000000..7f4d0f9d8 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_Toon.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 346eed0b863874b49ab801667a771579 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/M05_ToonF.mat b/Assets/WL/Look/Character/Materials/M05_ToonF.mat new file mode 100644 index 000000000..d12fde8ad --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_ToonF.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M05_ToonF + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: ae7a4f30ca95e6b418b60a81d4fdeb97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: ae7a4f30ca95e6b418b60a81d4fdeb97, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &6328004374326531536 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 diff --git a/Assets/WL/Look/Character/Materials/M05_ToonF.mat.meta b/Assets/WL/Look/Character/Materials/M05_ToonF.mat.meta new file mode 100644 index 000000000..644a123a1 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_ToonF.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52f9a76d263cd1b41af50330bf98dc3b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/M05_ToonS.mat b/Assets/WL/Look/Character/Materials/M05_ToonS.mat new file mode 100644 index 000000000..738339a2f --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_ToonS.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-855139663943253681 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M05_ToonS + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: f03f1045ff9101246b9b1b2484f0f0a1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: f03f1045ff9101246b9b1b2484f0f0a1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/M05_ToonS.mat.meta b/Assets/WL/Look/Character/Materials/M05_ToonS.mat.meta new file mode 100644 index 000000000..4a76c94ae --- /dev/null +++ b/Assets/WL/Look/Character/Materials/M05_ToonS.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e6859b01ec3a204ab52fa46ff458883 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Skin_Toon.mat b/Assets/WL/Look/Character/Materials/Skin_Toon.mat new file mode 100644 index 000000000..eceabe5aa --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_Toon.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Skin_Toon + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: f769d3d8854002d4ab7eb9e9fbe5bbed, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: f769d3d8854002d4ab7eb9e9fbe5bbed, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 +--- !u!114 &4630290562929802267 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 diff --git a/Assets/WL/Look/Character/Materials/Skin_Toon.mat.meta b/Assets/WL/Look/Character/Materials/Skin_Toon.mat.meta new file mode 100644 index 000000000..f18cb01a1 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_Toon.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a683d2dc03bb8c04299b0ed099f07b3c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Skin_ToonF.mat b/Assets/WL/Look/Character/Materials/Skin_ToonF.mat new file mode 100644 index 000000000..d121faf53 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_ToonF.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-8775649030602598506 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Skin_ToonF + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 1ebf7cf3959e1af4f942ac0c46efd2f9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: 1ebf7cf3959e1af4f942ac0c46efd2f9, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/Skin_ToonF.mat.meta b/Assets/WL/Look/Character/Materials/Skin_ToonF.mat.meta new file mode 100644 index 000000000..938416091 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_ToonF.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3e8c600f06162f43beb0a26c73c9da6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/Skin_ToonS.mat b/Assets/WL/Look/Character/Materials/Skin_ToonS.mat new file mode 100644 index 000000000..835d1a8ca --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_ToonS.mat @@ -0,0 +1,101 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6748870043807031197 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Skin_ToonS + m_Shader: {fileID: -6465566751694194690, guid: 378227f8a69213e419dfb0d889d8dd2f, + type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _OUTLINESENABLED + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 2800000, guid: 4359b5dd70e7908468980cfaaf66f86f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ShadowBaseMap: + m_Texture: {fileID: 2800000, guid: 4359b5dd70e7908468980cfaaf66f86f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _Brightness: 0.25 + - _CastShadows: 1 + - _Cloud_Change: 0.005 + - _Cloud_Cover: 0.5 + - _Cloud_Density: 0.01 + - _Cloud_Strength: 1 + - _Cull: 2 + - _DepthEdgeStrength: 0.5 + - _DepthThreshold: 0.01 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _MinimumDarkness: 0.2 + - _NormalEdgeStrength: 0.3 + - _NormalThreshold: 1 + - _OUTLINESENABLED: 1 + - _QueueControl: 0 + - _QueueOffset: 0 + - _Shades: 7 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _XRMotionVectorsPass: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _ZWriteControl: 0 + m_Colors: + - _Cloud_Movement: {r: 1, g: 1, b: 0, a: 0} + - _Cloud_Step: {r: 13, g: 17, b: 0, a: 0} + - _DiffuseColor: {r: 1, g: 1, b: 1, a: 1} + - _NormalBias: {r: 1, g: 1, b: 1, a: 0} + - _Outline: {r: 0, g: 0, b: 0, a: 0} + - _ShadowDiffuseColor: {r: 0.2164, g: 0.2092, b: 0.3713, a: 0} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/Skin_ToonS.mat.meta b/Assets/WL/Look/Character/Materials/Skin_ToonS.mat.meta new file mode 100644 index 000000000..8806c50e0 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/Skin_ToonS.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7ce73c5f996b0547a7ac1f49de1a2c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/face02_ToonF.mat b/Assets/WL/Look/Character/Materials/face02_ToonF.mat new file mode 100644 index 000000000..bb19e0f5e --- /dev/null +++ b/Assets/WL/Look/Character/Materials/face02_ToonF.mat @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: face02_ToonF + m_Shader: {fileID: 10750, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _ALPHAPREMULTIPLY_ON + - _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FalloffSampler: + m_Texture: {fileID: 2800000, guid: 53ba3cfb9b246fd4f9098e204d897e60, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: c56889884f56b34428d7a41bf8650d2e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RimLightSampler: + m_Texture: {fileID: 2800000, guid: 11011750921e10846abfad2b18cadbca, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DepthBias: 0.00012 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _EdgeThickness: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _ShadowColor: {r: 0.8, g: 0.8, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/face02_ToonF.mat.meta b/Assets/WL/Look/Character/Materials/face02_ToonF.mat.meta new file mode 100644 index 000000000..6b7fabc67 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/face02_ToonF.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00a2baa094b9fce44b769bec529c91d5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Materials/face02_ToonS.mat b/Assets/WL/Look/Character/Materials/face02_ToonS.mat new file mode 100644 index 000000000..c2d99521c --- /dev/null +++ b/Assets/WL/Look/Character/Materials/face02_ToonS.mat @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: face02_ToonS + m_Shader: {fileID: 10750, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _ALPHAPREMULTIPLY_ON + - _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FalloffSampler: + m_Texture: {fileID: 2800000, guid: 53ba3cfb9b246fd4f9098e204d897e60, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 568237bb7e42c254ab3189ae52c11c67, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RimLightSampler: + m_Texture: {fileID: 2800000, guid: 11011750921e10846abfad2b18cadbca, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DepthBias: 0.00012 + - _DetailNormalMapScale: 1 + - _DstBlend: 10 + - _EdgeThickness: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 3 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _ShadowColor: {r: 0.8, g: 0.8, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Look/Character/Materials/face02_ToonS.mat.meta b/Assets/WL/Look/Character/Materials/face02_ToonS.mat.meta new file mode 100644 index 000000000..e7071da20 --- /dev/null +++ b/Assets/WL/Look/Character/Materials/face02_ToonS.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dfd97eb4215e074478e692d7b445f230 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Resources.meta b/Assets/WL/Look/Character/Resources.meta new file mode 100644 index 000000000..1b9df77bc --- /dev/null +++ b/Assets/WL/Look/Character/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40bd7db00eba112499abcd97e758132a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Resources/WL.meta b/Assets/WL/Look/Character/Resources/WL.meta new file mode 100644 index 000000000..ae3fb2576 --- /dev/null +++ b/Assets/WL/Look/Character/Resources/WL.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 850af2ae31d6add4085d11c7bef5b125 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset b/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset new file mode 100644 index 000000000..8e049c3b4 --- /dev/null +++ b/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a73e6c94f1ba0454f871a7a7b28c4263, type: 3} + m_Name: WLCharacterLookSettings + m_EditorClassIdentifier: Assembly-CSharp::WL.Look.Character.WLCharacterLookSettings + enabled_: 1 + mode: 2 + verboseLog: 0 + originals: + - {fileID: 2100000, guid: 0957fffbd8f7ab84a9075733b67fed01, type: 2} + - {fileID: 2100000, guid: 54e809e248f25bc47ba8bc38cc93abb8, type: 2} + - {fileID: 2100000, guid: 759d477d80623a74fb90027ee36eb008, type: 2} + - {fileID: 2100000, guid: 8ae3ad5563aace8428cb247adb3da626, type: 2} + mode1: + - {fileID: 2100000, guid: 346eed0b863874b49ab801667a771579, type: 2} + - {fileID: 2100000, guid: a683d2dc03bb8c04299b0ed099f07b3c, type: 2} + - {fileID: 2100000, guid: b8ad7e2b6fe09d64d8e5d431fc6d174e, type: 2} + - {fileID: 2100000, guid: 8ae3ad5563aace8428cb247adb3da626, type: 2} + mode2: + - {fileID: 2100000, guid: 8e6859b01ec3a204ab52fa46ff458883, type: 2} + - {fileID: 2100000, guid: f7ce73c5f996b0547a7ac1f49de1a2c8, type: 2} + - {fileID: 2100000, guid: 41b03ff423d68e54ca6edd623a7930bd, type: 2} + - {fileID: 2100000, guid: dfd97eb4215e074478e692d7b445f230, type: 2} + mode3: + - {fileID: 2100000, guid: 52f9a76d263cd1b41af50330bf98dc3b, type: 2} + - {fileID: 2100000, guid: a3e8c600f06162f43beb0a26c73c9da6, type: 2} + - {fileID: 2100000, guid: 2f5d8a1afc2653942a2d081786f030ba, type: 2} + - {fileID: 2100000, guid: 00a2baa094b9fce44b769bec529c91d5, type: 2} diff --git a/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset.meta b/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset.meta new file mode 100644 index 000000000..74f5959ac --- /dev/null +++ b/Assets/WL/Look/Character/Resources/WL/WLCharacterLookSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: daea429a3d2b94d4691152b6fd883eb8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures.meta b/Assets/WL/Look/Character/Textures.meta new file mode 100644 index 000000000..9777f5ba5 --- /dev/null +++ b/Assets/WL/Look/Character/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56fc2dd63675c1543900fde72ce6e529 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/Hair05_WL.png b/Assets/WL/Look/Character/Textures/Hair05_WL.png new file mode 100644 index 000000000..b5ee545e8 Binary files /dev/null and b/Assets/WL/Look/Character/Textures/Hair05_WL.png differ diff --git a/Assets/WL/Look/Character/Textures/Hair05_WL.png.meta b/Assets/WL/Look/Character/Textures/Hair05_WL.png.meta new file mode 100644 index 000000000..75526921a --- /dev/null +++ b/Assets/WL/Look/Character/Textures/Hair05_WL.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: 6a9d3190eb5cdc0489df434d30a4133a +TextureImporter: + internalIDToNameTable: + - first: + 213: 1184034373903142886 + second: Hair05_WL_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Hair05_WL_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6ef49526df88e6010800000000000000 + internalID: 1184034373903142886 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png b/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png new file mode 100644 index 000000000..183de483b Binary files /dev/null and b/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png differ diff --git a/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png.meta b/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png.meta new file mode 100644 index 000000000..8fa5050e0 --- /dev/null +++ b/Assets/WL/Look/Character/Textures/Hair05_WL_Q16.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: 4235527f7d07a444bab0771fe41cf038 +TextureImporter: + internalIDToNameTable: + - first: + 213: 496687243139375934 + second: Hair05_WL_Q16_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Hair05_WL_Q16_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e336ac38a6694e600800000000000000 + internalID: 496687243139375934 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/M05_WL.png b/Assets/WL/Look/Character/Textures/M05_WL.png new file mode 100644 index 000000000..dec96d2a3 Binary files /dev/null and b/Assets/WL/Look/Character/Textures/M05_WL.png differ diff --git a/Assets/WL/Look/Character/Textures/M05_WL.png.meta b/Assets/WL/Look/Character/Textures/M05_WL.png.meta new file mode 100644 index 000000000..54948417b --- /dev/null +++ b/Assets/WL/Look/Character/Textures/M05_WL.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: f03f1045ff9101246b9b1b2484f0f0a1 +TextureImporter: + internalIDToNameTable: + - first: + 213: -1485432940947049749 + second: M05_WL_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: M05_WL_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: be2ff214c9ea26be0800000000000000 + internalID: -1485432940947049749 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/M05_WL_Q16.png b/Assets/WL/Look/Character/Textures/M05_WL_Q16.png new file mode 100644 index 000000000..9a725a993 Binary files /dev/null and b/Assets/WL/Look/Character/Textures/M05_WL_Q16.png differ diff --git a/Assets/WL/Look/Character/Textures/M05_WL_Q16.png.meta b/Assets/WL/Look/Character/Textures/M05_WL_Q16.png.meta new file mode 100644 index 000000000..d6cf293ae --- /dev/null +++ b/Assets/WL/Look/Character/Textures/M05_WL_Q16.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: ae7a4f30ca95e6b418b60a81d4fdeb97 +TextureImporter: + internalIDToNameTable: + - first: + 213: -8570201871213448859 + second: M05_WL_Q16_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: M05_WL_Q16_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5613fe41ec6801980800000000000000 + internalID: -8570201871213448859 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/Skin_WL.png b/Assets/WL/Look/Character/Textures/Skin_WL.png new file mode 100644 index 000000000..72860b821 Binary files /dev/null and b/Assets/WL/Look/Character/Textures/Skin_WL.png differ diff --git a/Assets/WL/Look/Character/Textures/Skin_WL.png.meta b/Assets/WL/Look/Character/Textures/Skin_WL.png.meta new file mode 100644 index 000000000..ed6e8fa73 --- /dev/null +++ b/Assets/WL/Look/Character/Textures/Skin_WL.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: 4359b5dd70e7908468980cfaaf66f86f +TextureImporter: + internalIDToNameTable: + - first: + 213: 1530207184210255884 + second: Skin_WL_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Skin_WL_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c006a9f93536c3510800000000000000 + internalID: 1530207184210255884 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png b/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png new file mode 100644 index 000000000..9aed505db Binary files /dev/null and b/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png differ diff --git a/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png.meta b/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png.meta new file mode 100644 index 000000000..1b3bf608d --- /dev/null +++ b/Assets/WL/Look/Character/Textures/Skin_WL_Q16.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: 1ebf7cf3959e1af4f942ac0c46efd2f9 +TextureImporter: + internalIDToNameTable: + - first: + 213: -2745243972080687516 + second: Skin_WL_Q16_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Skin_WL_Q16_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 4096 + height: 4096 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 466295ef62fe6e9d0800000000000000 + internalID: -2745243972080687516 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/face02_WL.png b/Assets/WL/Look/Character/Textures/face02_WL.png new file mode 100644 index 000000000..40ee1f63b Binary files /dev/null and b/Assets/WL/Look/Character/Textures/face02_WL.png differ diff --git a/Assets/WL/Look/Character/Textures/face02_WL.png.meta b/Assets/WL/Look/Character/Textures/face02_WL.png.meta new file mode 100644 index 000000000..c19bd645f --- /dev/null +++ b/Assets/WL/Look/Character/Textures/face02_WL.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: 568237bb7e42c254ab3189ae52c11c67 +TextureImporter: + internalIDToNameTable: + - first: + 213: 3752438157011194587 + second: face02_WL_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: face02_WL_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: bd2164e5f96531430800000000000000 + internalID: 3752438157011194587 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/Textures/face02_WL_Q16.png b/Assets/WL/Look/Character/Textures/face02_WL_Q16.png new file mode 100644 index 000000000..ae0d0da02 Binary files /dev/null and b/Assets/WL/Look/Character/Textures/face02_WL_Q16.png differ diff --git a/Assets/WL/Look/Character/Textures/face02_WL_Q16.png.meta b/Assets/WL/Look/Character/Textures/face02_WL_Q16.png.meta new file mode 100644 index 000000000..5f3e9444d --- /dev/null +++ b/Assets/WL/Look/Character/Textures/face02_WL_Q16.png.meta @@ -0,0 +1,181 @@ +fileFormatVersion: 2 +guid: c56889884f56b34428d7a41bf8650d2e +TextureImporter: + internalIDToNameTable: + - first: + 213: 8924889074970286261 + second: face02_WL_Q16_0 + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 2 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: face02_WL_Q16_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 2048 + height: 2048 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5b85e5dd3539bdb70800000000000000 + internalID: 8924889074970286261 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Look/Character/WLCharacterLook.cs b/Assets/WL/Look/Character/WLCharacterLook.cs new file mode 100644 index 000000000..e1f8a1a18 --- /dev/null +++ b/Assets/WL/Look/Character/WLCharacterLook.cs @@ -0,0 +1,106 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WLCharacterLook.cs — 캐릭터 머티리얼을 모드에 맞게 갈아끼운다 (WL-814s) +// +// PD 지시 #814 · 발주서 WL-814s §1-5 +// +// ■ 무엇을 하나 +// 프리팹(LH_M05)은 기본 모드의 머티리얼을 들고 있다. 이 컴포넌트가 Awake 에서 +// SO(WLCharacterLookSettings) 를 읽어 「지금 모드」의 머티리얼로 맞춘다. +// enabled_ = 0 · mode = 0 이면 **원본 머티리얼로 되돌린다**(되돌리기 스위치). +// +// ■ 어떻게 맞추나 (프리팹이 무엇을 들고 있든 결과가 같다 = 멱등) +// SO 의 4개 배열(originals · mode1 · mode2 · mode3)은 같은 길이·같은 순서다. +// 렌더러가 들고 있는 머티리얼이 어느 배열의 i번이든, 목표 배열의 i번으로 바꾼다. +// 표에 없는 머티리얼(무기 등)은 건드리지 않는다. +// +// ■ 성능 / GC +// Awake 1회. 렌더러 수만큼만 돈다(LH_M05 = 7). 바뀔 것이 없으면 배열 대입도 하지 않는다. +// +// 🔴 Debug.LogError / Debug.LogException 을 쓰지 않는다(813z 규칙). +// ───────────────────────────────────────────────────────────────────────────── + +using System.Collections.Generic; +using UnityEngine; + +namespace WL.Look.Character +{ + [DisallowMultipleComponent] + public class WLCharacterLook : MonoBehaviour + { + // 진단(프로브가 읽는다) + public static int AppliedRenderers, AppliedSlots, LastMode = -1; + public static string LastLog = ""; + + static readonly List s_buf = new List(16); + + void Awake() { Apply(gameObject); } + + /// SO 가 지시하는 모드로 맞춘다. + public static void Apply(GameObject root) + { + var cfg = WLCharacterLookSettings.Instance; + if (cfg == null || root == null) return; + ApplyMode(root, WLCharacterLookSettings.ActiveMode, cfg); + } + + /// 모드를 직접 지정해 맞춘다(캡처·프로브·A/B 용). + public static void ApplyMode(GameObject root, int mode, WLCharacterLookSettings cfg) + { + if (root == null) return; + if (cfg == null) cfg = WLCharacterLookSettings.Instance; + if (cfg == null || cfg.originals == null || cfg.originals.Length == 0) return; + + Material[] target = cfg.SetForMode(mode); + if (target == null) return; + + int n = cfg.originals.Length; + int renderers = 0, slots = 0; + + s_buf.Clear(); + root.GetComponentsInChildren(true, s_buf); + for (int ri = 0; ri < s_buf.Count; ri++) + { + var r = s_buf[ri]; + if (r == null) continue; + var mats = r.sharedMaterials; + if (mats == null || mats.Length == 0) continue; + + bool changed = false; + for (int si = 0; si < mats.Length; si++) + { + int idx = IndexOf(cfg, mats[si], n); + if (idx < 0) continue; + var want = target[idx]; + if (want == null || mats[si] == want) continue; + mats[si] = want; + changed = true; + slots++; + } + if (changed) { r.sharedMaterials = mats; renderers++; } + } + + AppliedRenderers = renderers; AppliedSlots = slots; LastMode = mode; + LastLog = "mode " + mode + " · 렌더러 " + renderers + " · 슬롯 " + slots; + if (cfg.verboseLog != 0) Debug.Log("[WL814s CharacterLook] " + LastLog); + } + + /// 머티리얼이 4개 배열 중 어디의 몇 번인지(없으면 -1). + static int IndexOf(WLCharacterLookSettings c, Material m, int n) + { + if (m == null) return -1; + for (int i = 0; i < n; i++) + { + if (Same(c.originals, i, m)) return i; + if (Same(c.mode1, i, m)) return i; + if (Same(c.mode2, i, m)) return i; + if (Same(c.mode3, i, m)) return i; + } + return -1; + } + + static bool Same(Material[] a, int i, Material m) + { + return a != null && i < a.Length && a[i] != null && a[i] == m; + } + } +} diff --git a/Assets/WL/Look/Character/WLCharacterLook.cs.meta b/Assets/WL/Look/Character/WLCharacterLook.cs.meta new file mode 100644 index 000000000..cff29afe2 --- /dev/null +++ b/Assets/WL/Look/Character/WLCharacterLook.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a645824e9a9c1c146a7fc5e5fdb2a515 \ No newline at end of file diff --git a/Assets/WL/Look/Character/WLCharacterLookSettings.cs b/Assets/WL/Look/Character/WLCharacterLookSettings.cs new file mode 100644 index 000000000..1b200f637 --- /dev/null +++ b/Assets/WL/Look/Character/WLCharacterLookSettings.cs @@ -0,0 +1,81 @@ +// ───────────────────────────────────────────────────────────────────────────── +// WLCharacterLookSettings.cs — 캐릭터 룩(배경과 같은 Toon) 되돌리기 스위치 (WL-814s) +// +// PD 지시 #814 · 발주서 WL-814s §1-5 +// +// enabled_ = 0 → 원본 머티리얼 100 % (프리팹이 무엇을 들고 있든 런타임에 원본으로 되돌린다) +// mode 0 = 원본 · 1 = 셰이더만 · 2 = 셰이더+텍스처 축소 · 3 = 전부(+평탄화) +// +// 🔴 이 SO 는 「어떤 머티리얼을 쓸지」만 들고 있다. 머티리얼 파일 자체에는 아무 값도 쓰지 않는다. +// 🔴 originals 는 반드시 채워 둔다 — 프리팹이 새 머티리얼을 들고 있으므로 이 배열이 +// 유일한 원본 참조다(잃어버리면 되돌리기가 깨진다). +// 🔴 Assets/WL/Look/Character/ 에 .asmdef 를 만들지 말 것. +// 🔴 Debug.LogError / Debug.LogException 을 쓰지 않는다(813z 규칙). +// ───────────────────────────────────────────────────────────────────────────── + +using UnityEngine; + +namespace WL.Look.Character +{ + public class WLCharacterLookSettings : ScriptableObject + { + [Header("스위치")] + [Tooltip("0 이면 원본 머티리얼 100 % (이 기능 전체 off)")] + public int enabled_ = 1; + + [Tooltip("0 = 원본 · 1 = 셰이더만 · 2 = 셰이더+텍스처 축소 · 3 = 전부(축소+평탄화)")] + public int mode = 1; + + [Tooltip("1 이면 적용 내역을 로그로 남긴다")] + public int verboseLog = 0; + + [Header("머티리얼 표 (같은 인덱스끼리 짝)")] + public Material[] originals; // 원본 (Toon/Toon · Unlit/Transparent) + public Material[] mode1; // Shader Graphs/Toon + 원본 텍스처 + public Material[] mode2; // Shader Graphs/Toon + 축소 텍스처 + public Material[] mode3; // Shader Graphs/Toon + 축소·평탄화 텍스처 + + // ───────────────────────────────────────── 싱글턴(Resources) + public const string ResourcePath = "WL/WLCharacterLookSettings"; + static WLCharacterLookSettings s_inst; + static bool s_tried; + + public static WLCharacterLookSettings Instance + { + get + { + if (s_inst == null && !s_tried) + { + s_tried = true; + s_inst = Resources.Load(ResourcePath); + } + return s_inst; + } + } + + /// 프로브·에디터에서 SO 를 바꿔 끼웠을 때 다시 읽게 한다. + public static void Invalidate() { s_inst = null; s_tried = false; } + + public static bool Enabled + { + get { var c = Instance; return c != null && c.enabled_ != 0; } + } + + /// 지금 적용해야 할 모드(스위치가 꺼져 있으면 0 = 원본). + public static int ActiveMode + { + get { var c = Instance; if (c == null || c.enabled_ == 0) return 0; return Mathf.Clamp(c.mode, 0, 3); } + } + + /// 모드에 해당하는 머티리얼 배열(없으면 originals). + public Material[] SetForMode(int m) + { + Material[] a = null; + if (m == 1) a = mode1; + else if (m == 2) a = mode2; + else if (m == 3) a = mode3; + if (a == null || originals == null || a.Length != originals.Length) return originals; + return a; + } + } +} diff --git a/Assets/WL/Look/Character/WLCharacterLookSettings.cs.meta b/Assets/WL/Look/Character/WLCharacterLookSettings.cs.meta new file mode 100644 index 000000000..93f0bc27f --- /dev/null +++ b/Assets/WL/Look/Character/WLCharacterLookSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a73e6c94f1ba0454f871a7a7b28c4263 \ No newline at end of file