2021-03-30 21:04:06 +02:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEditor;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace TAO.SceneDebugViewer.Editor
|
|
|
|
{
|
|
|
|
[CreateAssetMenu(menuName = "SceneDebugViewer/ReplacementShaderSetup")]
|
|
|
|
public class ReplacementShaderSetupScriptableObject : ScriptableObject
|
|
|
|
{
|
2021-03-31 01:20:21 +02:00
|
|
|
#if UNITY_EDITOR
|
2021-03-30 21:04:06 +02:00
|
|
|
[Header("GUI")]
|
|
|
|
public GUIContent content = new GUIContent();
|
|
|
|
[Header("Shader")]
|
|
|
|
public Shader shader = null;
|
|
|
|
public string replacementTag = "";
|
|
|
|
public List<GlobalShaderParameter> parameters = new List<GlobalShaderParameter>();
|
|
|
|
|
|
|
|
public void Replace()
|
|
|
|
{
|
|
|
|
SetupShaderParameters();
|
|
|
|
|
|
|
|
foreach (SceneView s in SceneView.sceneViews)
|
|
|
|
{
|
|
|
|
s.SetSceneViewShaderReplace(shader, replacementTag);
|
|
|
|
s.Repaint();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
protected void SetupShaderParameters()
|
|
|
|
{
|
|
|
|
foreach (var p in parameters)
|
|
|
|
{
|
|
|
|
p.Set();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[System.Serializable]
|
|
|
|
public struct GlobalShaderParameter
|
|
|
|
{
|
|
|
|
public string m_name;
|
|
|
|
|
|
|
|
public ParameterType m_parameterType;
|
|
|
|
|
|
|
|
public Texture2D m_texture;
|
|
|
|
public Vector4 m_vector;
|
|
|
|
public Color m_color;
|
|
|
|
public float m_float;
|
|
|
|
public int m_int;
|
|
|
|
|
|
|
|
public void Set()
|
|
|
|
{
|
|
|
|
switch (m_parameterType)
|
|
|
|
{
|
|
|
|
case ParameterType.Texture:
|
|
|
|
Shader.SetGlobalTexture(m_name, m_texture);
|
|
|
|
break;
|
|
|
|
case ParameterType.Vector:
|
|
|
|
Shader.SetGlobalVector(m_name, m_vector);
|
|
|
|
break;
|
|
|
|
case ParameterType.Color:
|
|
|
|
Shader.SetGlobalColor(m_name, m_color);
|
|
|
|
break;
|
|
|
|
case ParameterType.Float:
|
|
|
|
Shader.SetGlobalFloat(m_name, m_float);
|
|
|
|
break;
|
|
|
|
case ParameterType.Int:
|
|
|
|
Shader.SetGlobalInt(m_name, m_int);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public enum ParameterType
|
|
|
|
{
|
|
|
|
Texture,
|
|
|
|
Vector,
|
|
|
|
Color,
|
|
|
|
Float,
|
|
|
|
Int
|
|
|
|
}
|
2021-03-31 01:20:21 +02:00
|
|
|
#endif
|
2021-03-30 21:04:06 +02:00
|
|
|
}
|
|
|
|
}
|