using System;
using UnityEngine;
namespace UnityEditor.Rendering
{
///
/// Notifies when shader variants have been stripped
///
public static class ShaderStrippingWatcher
{
///
/// Callback when a shader has been stripped
///
/// The shader
/// The variant
/// The output variants after the stripping process
/// The total amount of time to strip the variants
/// The shader
/// The variant
public delegate void OnShaderStrippedCallbackHandler(TShader shader, TShaderVariant shaderVariant, uint variantsOut, double stripTimeMs)
where TShader : UnityEngine.Object;
///
/// Callback for
///
public static event OnShaderStrippedCallbackHandler shaderProcessed;
///
/// Callback for
///
public static event OnShaderStrippedCallbackHandler computeShaderProcessed;
internal static void OnShaderProcessed(TShader shader, TShaderVariant shaderVariant, uint variantsOut, double stripTimeMs)
where TShader : UnityEngine.Object
{
if (typeof(TShader) == typeof(Shader))
{
shaderProcessed?.Invoke((Shader)Convert.ChangeType(shader, typeof(Shader)), (ShaderSnippetData)Convert.ChangeType(shaderVariant, typeof(ShaderSnippetData)), variantsOut, stripTimeMs);
}
else if (typeof(TShader) == typeof(ComputeShader))
{
computeShaderProcessed?.Invoke((ComputeShader)Convert.ChangeType(shader, typeof(ComputeShader)), shaderVariant.ToString(), variantsOut, stripTimeMs);
}
}
}
}