Merge branch 'wl/ui/WL-814s-char-look'

This commit is contained in:
깃 관리자 2026-09-12 23:04:41 +09:00
commit 2fb854c61b
53 changed files with 3758 additions and 6 deletions

View File

@ -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<Shader>(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<Material>("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 머티리얼 생성
// ═════════════════════════════════════════════════════════════════════
/// <summary>suffix 세트의 머티리얼 4개를 만든다(텍스처는 texPaths 로 지정 · face 는 Unlit/Transparent 복사본).</summary>
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<Texture2D>(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<Material>(ORIG_MAT[3]);
var fm = AssetDatabase.LoadAssetAtPath<Material>(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<Material>(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<WLCharacterLookSettings>(SO_PATH);
if (so == null)
{
so = ScriptableObject.CreateInstance<WLCharacterLookSettings>();
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<Material>(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<Material>(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<WLCharacterLookSettings>(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;
}
// ═════════════════════════════════════════════════════════════════════
// 프리팹 배선
// ═════════════════════════════════════════════════════════════════════
/// <summary>프리팹 렌더러를 지정 모드의 머티리얼로 바꾸고 WLCharacterLook 을 붙인다.</summary>
public static string PatchPrefab(int mode, bool addComponent)
{
var so = AssetDatabase.LoadAssetAtPath<WLCharacterLookSettings>(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<WLCharacterLook>() == null)
{
root.AddComponent<WLCharacterLook>();
sb.AppendLine("ADD WLCharacterLook on " + root.name);
}
var rs = root.GetComponentsInChildren<Renderer>(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<GameObject>(PREFAB);
if (root == null) return "PREFAB MISS";
sb.AppendLine("components on root: ");
foreach (var c in root.GetComponents<Component>()) sb.AppendLine(" " + c.GetType().Name);
foreach (var r in root.GetComponentsInChildren<Renderer>(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 "<cmd> <a> <b> …"
// ═════════════════════════════════════════════════════════════════════
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 <suffix> <tex0> <tex1> <tex2> <tex3> <faceCopy 0|1>
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; }
}
}

View File

@ -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<Animator>(FindObjectsInactive.Exclude, FindObjectsSortMode.None);
foreach (var a in all)
{
if (a.GetComponentInChildren<SkinnedMeshRenderer>(true) != null) return a.gameObject;
}
return null;
}
static void FreezePose(GameObject pc)
{
var an = pc != null ? pc.GetComponent<Animator>() : 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);
}
/// <summary>args = ["set", "<prefix>", "<mode0>", "<mode1>", …] · 각 모드를 같은 포즈로 찍는다.</summary>
public static string Cmd(string[] args)
{
try
{
var sb = new StringBuilder();
var cam = Camera.main;
if (cam == null)
{
var cams = UnityEngine.Object.FindObjectsByType<Camera>(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<Camera>();
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 <prefix> <matSuffix1> <matSuffix2> … · Materials/<KEY><suffix>.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<Camera>();
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/<KEY><suffix>.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<Material>(
"Assets/WL/Look/Character/Materials/" + KEYS[i] + suffix + ".mat");
want[i] = m != null ? m : cfg.originals[i];
}
foreach (var r in pc.GetComponentsInChildren<Renderer>(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<Renderer>(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<Renderer>(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();
}
}

View File

@ -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>();
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<Texture2D>(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();
}
/// <summary>원본 4장의 런타임 메모리(현재 임포트 상태)를 잰다.</summary>
public static string MeasureOriginals()
{
var sb = new StringBuilder();
float tot = 0;
for (int i = 0; i < SRC.GetLength(0); i++)
{
var t = AssetDatabase.LoadAssetAtPath<Texture2D>(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<Texture2D>(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 "<cmd> …"
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; }
}
}

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: caa01cb399578e6429a50a7edd7ec089
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eaa900863332ac640a4485b823bf7253
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b8ad7e2b6fe09d64d8e5d431fc6d174e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2f5d8a1afc2653942a2d081786f030ba
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 41b03ff423d68e54ca6edd623a7930bd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 346eed0b863874b49ab801667a771579
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 52f9a76d263cd1b41af50330bf98dc3b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e6859b01ec3a204ab52fa46ff458883
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a683d2dc03bb8c04299b0ed099f07b3c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a3e8c600f06162f43beb0a26c73c9da6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f7ce73c5f996b0547a7ac1f49de1a2c8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00a2baa094b9fce44b769bec529c91d5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: dfd97eb4215e074478e692d7b445f230
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 40bd7db00eba112499abcd97e758132a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 850af2ae31d6add4085d11c7bef5b125
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: daea429a3d2b94d4691152b6fd883eb8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 56fc2dd63675c1543900fde72ce6e529
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 MiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

View File

@ -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:

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

@ -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:

View File

@ -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<Renderer> s_buf = new List<Renderer>(16);
void Awake() { Apply(gameObject); }
/// <summary>SO 가 지시하는 모드로 맞춘다.</summary>
public static void Apply(GameObject root)
{
var cfg = WLCharacterLookSettings.Instance;
if (cfg == null || root == null) return;
ApplyMode(root, WLCharacterLookSettings.ActiveMode, cfg);
}
/// <summary>모드를 직접 지정해 맞춘다(캡처·프로브·A/B 용).</summary>
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<Renderer>(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);
}
/// <summary>머티리얼이 4개 배열 중 어디의 몇 번인지(없으면 -1).</summary>
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;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a645824e9a9c1c146a7fc5e5fdb2a515

View File

@ -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<WLCharacterLookSettings>(ResourcePath);
}
return s_inst;
}
}
/// <summary>프로브·에디터에서 SO 를 바꿔 끼웠을 때 다시 읽게 한다.</summary>
public static void Invalidate() { s_inst = null; s_tried = false; }
public static bool Enabled
{
get { var c = Instance; return c != null && c.enabled_ != 0; }
}
/// <summary>지금 적용해야 할 모드(스위치가 꺼져 있으면 0 = 원본).</summary>
public static int ActiveMode
{
get { var c = Instance; if (c == null || c.enabled_ == 0) return 0; return Mathf.Clamp(c.mode, 0, 3); }
}
/// <summary>모드에 해당하는 머티리얼 배열(없으면 originals).</summary>
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;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a73e6c94f1ba0454f871a7a7b28c4263