// WL-816k — 데모 물 셰이더의 **숨김 포함 전체 속성** 실측 (깊이·불투명도 제어가 있는지) using UnityEngine; using System.Text; public static class WL816k_Props { public static void Run() { var sb = new StringBuilder(); var m = UnityEditor.AssetDatabase.LoadAssetAtPath("Assets/WL/Look/Farm/Materials/Farm_Water_Demo.mat"); var sh = m != null ? m.shader : null; if (sh == null) { Debug.Log("[816k props] 🔴 없음"); return; } sb.AppendLine("=== " + sh.name + " 전체 속성 " + sh.GetPropertyCount() + "개 (숨김 포함) ==="); for (int i = 0; i < sh.GetPropertyCount(); i++) { string n = sh.GetPropertyName(i); var t = sh.GetPropertyType(i); var fl = sh.GetPropertyFlags(i); string v = "?"; if (t == UnityEngine.Rendering.ShaderPropertyType.Color) v = m.GetColor(n).ToString("F3"); else if (t == UnityEngine.Rendering.ShaderPropertyType.Vector) v = m.GetVector(n).ToString("F3"); else if (t == UnityEngine.Rendering.ShaderPropertyType.Float || t == UnityEngine.Rendering.ShaderPropertyType.Range) v = m.GetFloat(n).ToString("F4"); else if (t == UnityEngine.Rendering.ShaderPropertyType.Texture) { var tx = m.GetTexture(n); v = tx == null ? "(없음)" : tx.name; } sb.AppendLine(" " + n + " [" + t + "]" + (fl == UnityEngine.Rendering.ShaderPropertyFlags.None ? "" : " {" + fl + "}") + " = " + v); } sb.AppendLine(""); sb.AppendLine("renderQueue=" + m.renderQueue + " · passes=" + m.passCount + " · keywords=" + string.Join(",", m.shaderKeywords)); for (int p = 0; p < m.passCount; p++) sb.AppendLine(" pass " + p + " = " + m.GetPassName(p) + " enabled=" + m.GetShaderPassEnabled(m.GetPassName(p))); System.IO.File.WriteAllText("AgentScripts/WL816k_PROPS.txt", sb.ToString()); Debug.Log("[816k props]\n" + sb); } }