From 53538a7b09bb8388fcfa3456aeea371d6ee8985b Mon Sep 17 00:00:00 2001 From: drewcassidy Date: Tue, 2 Jun 2020 13:46:16 -0700 Subject: [PATCH] Add shader blacklist Add a configurable blacklist of shaders that can be projected onto --- .../ConformalDecals/ConformalDecals.cfg | 20 +++++++++ .../Plugins/ConformalDecals.dll | Bin 27136 -> 28160 bytes .../ConformalDecals/ConformalDecalConfig.cs | 38 ++++++++++++++++++ Source/ConformalDecals/ConformalDecals.csproj | 1 + .../ConformalDecals/ModuleConformalDecal.cs | 6 +++ 5 files changed, 65 insertions(+) create mode 100644 Distribution/GameData/ConformalDecals/ConformalDecals.cfg create mode 100644 Source/ConformalDecals/ConformalDecalConfig.cs diff --git a/Distribution/GameData/ConformalDecals/ConformalDecals.cfg b/Distribution/GameData/ConformalDecals/ConformalDecals.cfg new file mode 100644 index 0000000..72c6e59 --- /dev/null +++ b/Distribution/GameData/ConformalDecals/ConformalDecals.cfg @@ -0,0 +1,20 @@ +CONFORMALDECALS { + SHADERBLACKLIST { + shader = DepthMask + shader = KSP/Alpha/Cutoff + shader = KSP/Alpha/Cutoff Bumped + shader = KSP/Alpha/Translucent + shader = KSP/Alpha/Translucent Additive + shader = KSP/Alpha/Translucent Specular + shader = KSP/Alpha/Unlit Transparent + shader = KSP/Bumped Specular (Transparent) + shader = KSP/FX/ScrollingUnlit + shader = KSP/Particles/Additive + shader = KSP/Particles/Additive (Soft) + shader = KSP/Particles/Alpha Blended + shader = KSP/Particles/Alpha Blended Emissive Cutout + shader = KSP/Specular (Cutoff) + shader = KSP/Specular (Transparent) + shader = Solid Color (Alpha) + } +} \ No newline at end of file diff --git a/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll b/Distribution/GameData/ConformalDecals/Plugins/ConformalDecals.dll index 5ec30807f97607e2eaddec899aed7ae74dd16eff..74f65c1f4d7673409b3fd586dfa793a8e029bafa 100644 GIT binary patch literal 28160 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 V>TlCrEWeO{|LXt0#{XL$_)pSUJcj@P literal 27136 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 _shaderBlacklist; + + public static bool IsBlacklisted(Shader shader) { + return IsBlacklisted(shader.name); + } + + public static bool IsBlacklisted(string shaderName) { + return _shaderBlacklist.Contains(shaderName); + } + + private void ParseConfig(ConfigNode node) { + foreach (var blacklist in node.GetNodes("SHADERBLACKLIST")) { + foreach (var shaderName in blacklist.GetValuesList("shader")) { + _shaderBlacklist.Add(shaderName); + } + } + } + + private void Start() { + _shaderBlacklist = new List(); + + var configs = GameDatabase.Instance.GetConfigs("CONFORMALDECALS"); + + if (configs.Length > 0) { + Debug.Log("DecalConfig loading config"); + foreach (var config in configs) { + ParseConfig(config.config); + } + } + } + } +} \ No newline at end of file diff --git a/Source/ConformalDecals/ConformalDecals.csproj b/Source/ConformalDecals/ConformalDecals.csproj index 08a2aee..19a0c41 100644 --- a/Source/ConformalDecals/ConformalDecals.csproj +++ b/Source/ConformalDecals/ConformalDecals.csproj @@ -49,6 +49,7 @@ + diff --git a/Source/ConformalDecals/ModuleConformalDecal.cs b/Source/ConformalDecals/ModuleConformalDecal.cs index 2b341b3..9f3b91e 100644 --- a/Source/ConformalDecals/ModuleConformalDecal.cs +++ b/Source/ConformalDecals/ModuleConformalDecal.cs @@ -330,6 +330,12 @@ namespace ConformalDecals { foreach (var renderer in renderers) { // skip disabled renderers if (renderer.gameObject.activeInHierarchy == false) continue; + + // skip blacklisted shaders + if (ConformalDecalConfig.IsBlacklisted(renderer.material.shader)) { + this.Log($"Skipping blacklisted shader '{renderer.material.shader.name}' in '{renderer.gameObject.name}'"); + continue; + } var meshFilter = renderer.GetComponent(); if (meshFilter == null) continue; // object has a meshRenderer with no filter, invalid