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.
46 lines
2.1 KiB
46 lines
2.1 KiB
using System;
|
|
using UnityEngine;
|
|
|
|
namespace UnityEditor.Rendering
|
|
{
|
|
/// <summary>
|
|
/// Notifies when shader variants have been stripped
|
|
/// </summary>
|
|
public static class ShaderStrippingWatcher
|
|
{
|
|
/// <summary>
|
|
/// Callback when a shader has been stripped
|
|
/// </summary>
|
|
/// <param name="shader">The shader</param>
|
|
/// <param name="shaderVariant">The variant</param>
|
|
/// <param name="variantsOut">The output variants after the stripping process</param>
|
|
/// <param name="stripTimeMs">The total amount of time to strip the variants</param>
|
|
/// <typeparam name="TShader">The shader</typeparam>
|
|
/// <typeparam name="TShaderVariant">The variant</typeparam>
|
|
public delegate void OnShaderStrippedCallbackHandler<TShader, TShaderVariant>(TShader shader, TShaderVariant shaderVariant, uint variantsOut, double stripTimeMs)
|
|
where TShader : UnityEngine.Object;
|
|
|
|
/// <summary>
|
|
/// Callback for <see cref="Shader"/>
|
|
/// </summary>
|
|
public static event OnShaderStrippedCallbackHandler<Shader, ShaderSnippetData> shaderProcessed;
|
|
|
|
/// <summary>
|
|
/// Callback for <see cref="ComputeShader"/>
|
|
/// </summary>
|
|
public static event OnShaderStrippedCallbackHandler<ComputeShader, string> computeShaderProcessed;
|
|
|
|
internal static void OnShaderProcessed<TShader, TShaderVariant>(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);
|
|
}
|
|
}
|
|
}
|
|
}
|