MaxShaderModelVersion extension methods

This commit is contained in:
ds5678 2025-11-05 23:35:31 -08:00
parent 3d8b19c3d5
commit 43ddfd6953
2 changed files with 18 additions and 1 deletions

View File

@ -44,4 +44,9 @@ public static class SerializedPassExtensions
yield return pass.ProgRayTracing; yield return pass.ProgRayTracing;
} }
} }
public static int MaxShaderModelVersion(this ISerializedPass pass, UnityVersion version)
{
return pass.GetPrograms().Max(program => program.MaxShaderModelVersion(version));
}
} }

View File

@ -1,4 +1,5 @@
using AssetRipper.SourceGenerated.Subclasses.SerializedPlayerSubProgram; using AssetRipper.SourceGenerated.Extensions.Enums.Shader.GpuProgramType;
using AssetRipper.SourceGenerated.Subclasses.SerializedPlayerSubProgram;
using AssetRipper.SourceGenerated.Subclasses.SerializedProgram; using AssetRipper.SourceGenerated.Subclasses.SerializedProgram;
namespace AssetRipper.SourceGenerated.Extensions; namespace AssetRipper.SourceGenerated.Extensions;
@ -64,4 +65,15 @@ public static class SerializedProgramExtensions
return []; return [];
} }
public static int MaxShaderModelVersion(this ISerializedProgram program, UnityVersion version)
{
if (program.Has_PlayerSubPrograms())
{
return program.GetPlayerSubPrograms().Max(p => p.GetProgramType(version).ToShaderModelVersion());
}
else
{
return program.SubPrograms.Max(p => p.GetProgramType(version).ToShaderModelVersion());
}
}
} }