Files
UmaViewer/Assets/DumpFaceShaderProperties.cs

54 lines
1.8 KiB
C#

using UnityEngine;
using UnityEngine.Rendering;
public class DumpFaceShaderProperties : MonoBehaviour
{
void Start()
{
foreach (var r in GetComponentsInChildren<Renderer>(true))
{
foreach (var m in r.sharedMaterials)
{
if (!m || !m.shader) continue;
string rn = r.name.ToLower();
string mn = m.name.ToLower();
string sn = m.shader.name.ToLower();
if (!rn.Contains("face") && !mn.Contains("face") && !sn.Contains("face")
&& !rn.Contains("head") && !mn.Contains("head"))
continue;
Debug.Log($"==== Renderer: {r.name} ====");
Debug.Log($"Material: {m.name}");
Debug.Log($"Shader: {m.shader.name}");
Debug.Log($"receiveShadows={r.receiveShadows}, shadowCastingMode={r.shadowCastingMode}");
var shader = m.shader;
int count = shader.GetPropertyCount();
for (int i = 0; i < count; i++)
{
string prop = shader.GetPropertyName(i);
var type = shader.GetPropertyType(i);
string lower = prop.ToLower();
bool important =
lower.Contains("shadow") ||
lower.Contains("light") ||
lower.Contains("face") ||
lower.Contains("head") ||
lower.Contains("toon") ||
lower.Contains("rim") ||
lower.Contains("normal") ||
lower.Contains("camera") ||
lower.Contains("view");
if (!important) continue;
Debug.Log($"[{type}] {prop}");
}
}
}
}
}