[Add] All in one shader
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AllIn13DShader
|
||||
{
|
||||
public static class MaterialUtils
|
||||
{
|
||||
public const string STR_OUTLINE_TYPE_NONE = "_OUTLINETYPE_NONE";
|
||||
public const string STR_CAST_SHADOWS_ON = "_CAST_SHADOWS_ON";
|
||||
public const string STR_RECEIVE_SHADOWS_ON = "_RECEIVE_SHADOWS_ON";
|
||||
|
||||
public static bool CheckMaterialShader(Material targetMat)
|
||||
{
|
||||
bool isOutline = !targetMat.shaderKeywords.Contains(STR_OUTLINE_TYPE_NONE);
|
||||
bool shadowCasterPassEnabled = targetMat.shaderKeywords.Contains(STR_CAST_SHADOWS_ON) || targetMat.shaderKeywords.Contains(STR_RECEIVE_SHADOWS_ON);
|
||||
|
||||
#if ALLIN13DSHADER_BIRP
|
||||
shadowCasterPassEnabled = true;
|
||||
#endif
|
||||
|
||||
|
||||
bool shaderChanged = false;
|
||||
|
||||
Shader oldShader = null;
|
||||
Shader newShader = null;
|
||||
Shader shaderToCompare = null;
|
||||
|
||||
if (isOutline)
|
||||
{
|
||||
|
||||
if (shadowCasterPassEnabled)
|
||||
{
|
||||
shaderToCompare = GlobalConfiguration.instance.shOutline;
|
||||
}
|
||||
else
|
||||
{
|
||||
shaderToCompare = GlobalConfiguration.instance.shOutlineNoShadowCaster;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (shadowCasterPassEnabled)
|
||||
{
|
||||
shaderToCompare = GlobalConfiguration.instance.shStandard;
|
||||
}
|
||||
else
|
||||
{
|
||||
shaderToCompare = GlobalConfiguration.instance.shStandardNoShadowCaster;
|
||||
}
|
||||
}
|
||||
|
||||
if (targetMat.shader != shaderToCompare)
|
||||
{
|
||||
oldShader = targetMat.shader;
|
||||
newShader = shaderToCompare;
|
||||
|
||||
shaderChanged = true;
|
||||
}
|
||||
|
||||
if (shaderChanged)
|
||||
{
|
||||
targetMat.shader = newShader;
|
||||
|
||||
if (AssetDatabase.IsMainAsset(targetMat))
|
||||
{
|
||||
EditorUtility.SetDirty(targetMat);
|
||||
}
|
||||
}
|
||||
|
||||
return shaderChanged;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user