// Copyright (c) Wojciech Figat. All rights reserved.
using System.IO;
using Flax.Build;
using Flax.Build.NativeCpp;
///
/// WebGPU shaders compiler module.
///
public class ShaderCompilerWebGPU : ShaderCompiler
{
public static bool Use(BuildOptions options)
{
// Requires prebuilt tint executable in platform ThirdParty binaries folder
// https://github.com/google/dawn/releases
// License: Source/ThirdParty/tint-license.txt (BSD 3-Clause)
switch (options.Platform.Target)
{
case TargetPlatform.Windows:
return options.Architecture == TargetArchitecture.x64;
case TargetPlatform.Linux:
return options.Architecture == TargetArchitecture.x64;
case TargetPlatform.Mac:
return options.Architecture == TargetArchitecture.ARM64;
default:
return false;
}
}
///
public override void Setup(BuildOptions options)
{
base.Setup(options);
options.PublicDefinitions.Add("COMPILE_WITH_WEBGPU_SHADER_COMPILER");
options.PublicDependencies.Add("ShaderCompilerVulkan");
options.PrivateDependencies.Add("glslang");
options.PrivateDependencies.Add("spirv-tools");
options.PrivateDependencies.Add("lz4");
}
}