You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.5 KiB
66 lines
2.5 KiB
using System.Collections.Generic;
|
|
using UnityEditor.Build;
|
|
using UnityEditor.Build.Reporting;
|
|
using UnityEditor.Rendering;
|
|
using UnityEngine.Rendering;
|
|
using UnityEngine;
|
|
|
|
namespace CartoonFX
|
|
{
|
|
class CFXR_BuildShaderPreprocessor : IPreprocessShaders, IPreprocessBuildWithReport, IPostprocessBuildWithReport
|
|
{
|
|
static int shaderVariantsRemoved;
|
|
static bool isUsingURP;
|
|
|
|
// --------------------------------------------------------------------------------------------------------------------------------
|
|
// IPreprocessBuildWithReport, IPostprocessBuildWithReport
|
|
|
|
public void OnPreprocessBuild(BuildReport report)
|
|
{
|
|
// Figure out if we're using built-in or URP
|
|
#if UNITY_2019_3_OR_NEWER
|
|
var renderPipeline = GraphicsSettings.currentRenderPipeline;
|
|
#else
|
|
var renderPipeline = GraphicsSettings.renderPipelineAsset;
|
|
#endif
|
|
isUsingURP = renderPipeline != null && renderPipeline.GetType().Name.Contains("Universal");
|
|
shaderVariantsRemoved = 0;
|
|
}
|
|
|
|
public void OnPostprocessBuild(BuildReport report)
|
|
{
|
|
if (shaderVariantsRemoved > 0)
|
|
{
|
|
string currentPipeline = isUsingURP ? "Universal" : "Built-in";
|
|
Debug.Log(string.Format("<color=#ec7d38>[Cartoon FX Remaster]</color> {0} Render Pipeline detected, {1} Shader variants have been stripped from the build.", currentPipeline, shaderVariantsRemoved));
|
|
}
|
|
}
|
|
|
|
// --------------------------------------------------------------------------------------------------------------------------------
|
|
// IPreprocessShaders
|
|
|
|
public int callbackOrder
|
|
{
|
|
get { return 1000; }
|
|
}
|
|
|
|
public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList<ShaderCompilerData> shaderCompilerData)
|
|
{
|
|
if (snippet.passType == PassType.ShadowCaster)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (shader.name.Contains("Cartoon FX/Remaster"))
|
|
{
|
|
// Strip Cartoon FX Remaster Shader variants based on current render pipeline
|
|
if ((isUsingURP && snippet.passType != PassType.ScriptableRenderPipeline) ||
|
|
(!isUsingURP && snippet.passType == PassType.ScriptableRenderPipeline))
|
|
{
|
|
shaderVariantsRemoved += shaderCompilerData.Count;
|
|
shaderCompilerData.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|