Add beautify post process to project
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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 { }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user