Skip to content

Commit

Permalink
modpak GenerateShader workaround
Browse files Browse the repository at this point in the history
  • Loading branch information
Pedro413 committed May 2, 2024
1 parent 11fe8d9 commit 8c36a07
Showing 1 changed file with 28 additions and 6 deletions.
34 changes: 28 additions & 6 deletions TagTool/Commands/Shaders/GenerateShaderCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,8 +225,17 @@ private object GenerateExplicitShader(string shader, string entry, string vertex
{
var rasg = Cache.Deserialize<RasterizerGlobals>(stream, Cache.TagCache.GetTag("globals\\rasterizer_globals.rasterizer_globals"));

CachedTag pixlTag = rasg.DefaultShaders[(int)value].PixelShader ?? Cache.TagCache.AllocateTag<PixelShader>($"rasterizer\\shaders\\{value}");
CachedTag vtshTag = rasg.DefaultShaders[(int)value].VertexShader ?? Cache.TagCache.AllocateTag<VertexShader>($"rasterizer\\shaders\\{value}");
CachedTag pixlTag;
if (rasg.DefaultShaders[(int)value].PixelShader != null)
pixlTag = Cache.TagCache.GetTag(rasg.DefaultShaders[(int)value].PixelShader.Index);
else
pixlTag = Cache.TagCache.AllocateTag<PixelShader>($"rasterizer\\shaders\\{value}");

CachedTag vtshTag;
if (rasg.DefaultShaders[(int)value].VertexShader != null)
vtshTag = Cache.TagCache.GetTag(rasg.DefaultShaders[(int)value].VertexShader.Index);
else
vtshTag = Cache.TagCache.AllocateTag<VertexShader>($"rasterizer\\shaders\\{value}");

ShaderGeneratorNew.GenerateExplicitShader(Cache, stream, value.ToString(), out PixelShader pixl, out VertexShader vtsh);

Expand Down Expand Up @@ -258,8 +267,17 @@ private object GenerateChudShader(string shader)
var matg = Cache.Deserialize<Globals>(stream, Cache.TagCache.FindFirstInGroup("matg"));
var chgd = Cache.Deserialize<ChudGlobalsDefinition>(stream, matg.InterfaceTags[0].HudGlobals);

CachedTag pixlTag = chgd.HudShaders[(int)value].PixelShader ?? Cache.TagCache.AllocateTag<PixelShader>($"rasterizer\\shaders\\{value}");
CachedTag vtshTag = chgd.HudShaders[(int)value].VertexShader ?? Cache.TagCache.AllocateTag<VertexShader>($"rasterizer\\shaders\\{value}");
CachedTag pixlTag;
if (chgd.HudShaders[(int)value].PixelShader != null)
pixlTag = Cache.TagCache.GetTag(chgd.HudShaders[(int)value].PixelShader.Index);
else
pixlTag = Cache.TagCache.AllocateTag<PixelShader>($"rasterizer\\shaders\\{value}");

CachedTag vtshTag;
if (chgd.HudShaders[(int)value].VertexShader != null)
vtshTag = Cache.TagCache.GetTag(chgd.HudShaders[(int)value].VertexShader.Index);
else
vtshTag = Cache.TagCache.AllocateTag<VertexShader>($"rasterizer\\shaders\\{value}");

ShaderGeneratorNew.GenerateChudShader(Cache, stream, value.ToString(), out PixelShader pixl, out VertexShader vtsh);

Expand All @@ -283,13 +301,17 @@ private object GenerateGlobalShader(string shaderType, bool pixel)
if (pixel)
{
GlobalPixelShader glps = TagTool.Shaders.ShaderGenerator.ShaderGeneratorNew.GenerateSharedPixelShaders(Cache, rmdf, type);
Cache.Serialize(stream, rmdf.GlobalPixelShader, glps);
CachedTag glpsTag = Cache.TagCache.GetTag(rmdf.GlobalPixelShader.Index);
Cache.Serialize(stream, glpsTag, glps);
}
else
{
GlobalVertexShader glvs = TagTool.Shaders.ShaderGenerator.ShaderGeneratorNew.GenerateSharedVertexShaders(Cache, rmdf, type);
Cache.Serialize(stream, rmdf.GlobalVertexShader, glvs);
CachedTag glvsTag = Cache.TagCache.GetTag(rmdf.GlobalVertexShader.Index);
Cache.Serialize(stream, glvsTag, glvs);
}
Cache.SaveStrings();
(Cache as GameCacheHaloOnlineBase).SaveTagNames();
}

Console.WriteLine($"Generated global {(pixel ? "pixel" : "vertex")} shader for {shaderType}");
Expand Down

0 comments on commit 8c36a07

Please sign in to comment.