52 lines
1.9 KiB
C#
52 lines
1.9 KiB
C#
using System.Collections.Generic;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Rendering;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace Beautify.Universal {
|
|
|
|
class BeautifyOptCompiler : IPreprocessShaders {
|
|
|
|
public const string PLAYER_PREF_KEYNAME = "BeautifyStripKeywordSet";
|
|
|
|
public int callbackOrder => 1;
|
|
|
|
public void OnProcessShader(
|
|
Shader shader, ShaderSnippetData snippet, IList<ShaderCompilerData> shaderCompilerData) {
|
|
|
|
try {
|
|
if (shaderCompilerData == null) return;
|
|
|
|
if (!"Hidden/Universal Render Pipeline/UberPost".Equals(shader.name) && !"Hidden/Kronnect/Beautify".Equals(shader.name)) return;
|
|
|
|
string strippedKeywords = PlayerPrefs.GetString(PLAYER_PREF_KEYNAME);
|
|
if (string.IsNullOrEmpty(strippedKeywords)) return;
|
|
|
|
for (int k = shaderCompilerData.Count - 1; k >= 0; k--) {
|
|
ShaderCompilerData data = shaderCompilerData[k];
|
|
ShaderKeyword[] keywords = data.shaderKeywordSet.GetShaderKeywords();
|
|
for (int s = 0; s < keywords.Length; s++) {
|
|
ShaderKeyword keyword = keywords[s];
|
|
#if UNITY_2021_2_OR_NEWER
|
|
string keywordName = keyword.name;
|
|
#else
|
|
string keywordName;
|
|
if (ShaderKeyword.IsKeywordLocal(keyword)) {
|
|
keywordName = ShaderKeyword.GetKeywordName(shader, keyword);
|
|
} else {
|
|
keywordName = ShaderKeyword.GetGlobalKeywordName(keyword);
|
|
}
|
|
#endif
|
|
if (keywordName.Length > 0 && strippedKeywords.Contains(keywordName)) {
|
|
shaderCompilerData.RemoveAt(k);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} catch { }
|
|
|
|
}
|
|
|
|
}
|
|
} |