From 31e2a867fa3d121bfec4e79a2c9994272cc87e76 Mon Sep 17 00:00:00 2001 From: 4sval Date: Tue, 6 Dec 2022 00:41:45 +0100 Subject: [PATCH 01/13] fixed negative uv layer --- CUE4Parse | 2 +- FModel/Resources/default.frag | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index d9c3db37..90a03d2a 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit d9c3db37652e615cf7160c168ccdb995171d1947 +Subproject commit 90a03d2a1d1d56f4d486c95e3ea439057388bacc diff --git a/FModel/Resources/default.frag b/FModel/Resources/default.frag index 573990d8..5b81611f 100644 --- a/FModel/Resources/default.frag +++ b/FModel/Resources/default.frag @@ -74,7 +74,7 @@ out vec4 FragColor; int LayerToIndex() { - return min(int(fTexLayer), uNumTexCoords - 1); + return clamp(int(fTexLayer), 0, uNumTexCoords - 1); } vec4 SamplerToVector(sampler2D s) From 327cbfdd39bea03877eb2c6fc941250e543c75fe Mon Sep 17 00:00:00 2001 From: 4sval Date: Tue, 6 Dec 2022 13:43:37 +0100 Subject: [PATCH 02/13] GetInternalSID #340 --- FModel/Creator/Bases/FN/BaseCommunity.cs | 16 ++------------ FModel/Creator/Bases/FN/BaseIcon.cs | 27 +++++++++++++----------- 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/FModel/Creator/Bases/FN/BaseCommunity.cs b/FModel/Creator/Bases/FN/BaseCommunity.cs index 1f95a6bc..761725c9 100644 --- a/FModel/Creator/Bases/FN/BaseCommunity.cs +++ b/FModel/Creator/Bases/FN/BaseCommunity.cs @@ -101,20 +101,8 @@ public class BaseCommunity : BaseIcon { if (!bShort) return base.GetCosmeticSeason(seasonNumber); var s = seasonNumber["Cosmetics.Filter.Season.".Length..]; - var number = int.Parse(s); - - switch (number) - { - case 10: - s = "X"; - break; - case > 18: - number += 2; - s = number.ToString(); - break; - } - - return $"C{number / 10 + 1} S{s[^1..]}"; + (int chapterIdx, int seasonIdx) = GetInternalSID(int.Parse(s)); + return $"C{chapterIdx} S{seasonIdx}"; } private new void DrawBackground(SKCanvas c) diff --git a/FModel/Creator/Bases/FN/BaseIcon.cs b/FModel/Creator/Bases/FN/BaseIcon.cs index 3fd87232..b47109e8 100644 --- a/FModel/Creator/Bases/FN/BaseIcon.cs +++ b/FModel/Creator/Bases/FN/BaseIcon.cs @@ -193,15 +193,18 @@ public class BaseIcon : UCreator return string.Format(format, name); } - protected string GetCosmeticSeason(string seasonNumber) + protected (int, int) GetInternalSID(int number) { - var s = seasonNumber["Cosmetics.Filter.Season.".Length..]; - var initial = int.Parse(s); - var number = initial; + static int GetSeasonsInChapter(int chapter) => chapter switch + { + 1 => 10, + 2 => 8, + 3 => 4, + _ => 10 + }; var chapterIdx = 0; var seasonIdx = 0; - while (number > 0) { var seasonsInChapter = GetSeasonsInChapter(++chapterIdx); @@ -213,14 +216,14 @@ public class BaseIcon : UCreator number = 0; } } + return (chapterIdx, seasonIdx); + } - static int GetSeasonsInChapter(int chapter) => chapter switch - { - 1 => 10, - 2 => 8, - 3 => 4, - _ => 10 - }; + protected string GetCosmeticSeason(string seasonNumber) + { + var s = seasonNumber["Cosmetics.Filter.Season.".Length..]; + var initial = int.Parse(s); + (int chapterIdx, int seasonIdx) = GetInternalSID(initial); var season = Utils.GetLocalizedResource("AthenaSeasonItemDefinitionInternal", "SeasonTextFormat", "Season {0}"); var introduced = Utils.GetLocalizedResource("Fort.Cosmetics", "CosmeticItemDescription_Season", "\nIntroduced in {0}."); From 1d22fa6cf6137399bced7f21e3f58925043860be Mon Sep 17 00:00:00 2001 From: 4sval Date: Tue, 6 Dec 2022 22:54:31 +0100 Subject: [PATCH 03/13] fixed vertex colors + TextureData incorrect mapping --- CUE4Parse | 2 +- FModel/Resources/default.frag | 31 ++++++++++++++++--------------- FModel/Views/Snooper/Model.cs | 1 + FModel/Views/Snooper/Renderer.cs | 8 ++++---- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index 90a03d2a..78cd043b 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 90a03d2a1d1d56f4d486c95e3ea439057388bacc +Subproject commit 78cd043be4cc1295280f7411a5e612e2ae49e9ed diff --git a/FModel/Resources/default.frag b/FModel/Resources/default.frag index 5b81611f..f3864b6a 100644 --- a/FModel/Resources/default.frag +++ b/FModel/Resources/default.frag @@ -66,6 +66,7 @@ uniform Parameters uParameters; uniform Light uLights[MAX_LIGHT_COUNT]; uniform int uNumLights; uniform int uNumTexCoords; +uniform bool uHasVertexColors; uniform vec3 uViewPos; uniform vec3 uViewDir; uniform bool bVertexColors[6]; @@ -96,21 +97,21 @@ vec3 ComputeNormals(int layer) vec3 schlickFresnel(int layer, float vDotH) { - vec3 f0 = vec3(0.04f); - return f0 + (1.0f - f0) * pow(clamp(1.0f - vDotH, 0.0f, 1.0f), 5); + vec3 f0 = vec3(0.04); + return f0 + (1.0 - f0) * pow(clamp(1.0 - vDotH, 0.0, 1.0), 5); } float ggxDistribution(float roughness, float nDoth) { float alpha2 = roughness * roughness * roughness * roughness; - float d = nDoth * nDoth * (alpha2- 1.0f) + 1.0f; + float d = nDoth * nDoth * (alpha2- 1.0) + 1.0; return alpha2 / (PI * d * d); } float geomSmith(float roughness, float dp) { - float k = (roughness + 1.0f) * (roughness + 1.0f) / 8.0f; - float denom = dp * (1.0f - k) + k; + float k = (roughness + 1.0) * (roughness + 1.0) / 8.0; + float denom = dp * (1.0 - k) + k; return dp / denom; } @@ -119,26 +120,26 @@ vec3 CalcCameraLight(int layer, vec3 normals) vec3 specular_masks = SamplerToVector(uParameters.SpecularMasks[layer].Sampler).rgb; float roughness = max(0.0f, mix(specular_masks.r, specular_masks.b, uParameters.Roughness)); - vec3 intensity = vec3(1.0f) * 1.0f; + vec3 intensity = vec3(1.0f) * 1.0; vec3 l = -uViewDir; vec3 n = normals; vec3 v = normalize(uViewPos - fPos); vec3 h = normalize(v + l); - float nDotH = max(dot(n, h), 0.0f); - float vDotH = max(dot(v, h), 0.0f); - float nDotL = max(dot(n, l), 0.0f); - float nDotV = max(dot(n, v), 0.0f); + float nDotH = max(dot(n, h), 0.0); + float vDotH = max(dot(v, h), 0.0); + float nDotL = max(dot(n, l), 0.0); + float nDotV = max(dot(n, v), 0.0); vec3 f = schlickFresnel(layer, vDotH); vec3 kS = f; vec3 kD = 1.0 - kS; - kD *= max(0.0f, dot(v, reflect(-v, normals)) * specular_masks.g); + kD *= max(0.0, dot(v, reflect(-v, normals)) * specular_masks.g); vec3 specBrdfNom = ggxDistribution(roughness, nDotH) * f * geomSmith(roughness, nDotL) * geomSmith(roughness, nDotV); - float specBrdfDenom = 4.0f * nDotV * nDotL + 0.0001f; + float specBrdfDenom = 4.0 * nDotV * nDotL + 0.0001; vec3 specBrdf = specBrdfNom / specBrdfDenom; vec3 fLambert = SamplerToVector(uParameters.Diffuse[layer].Sampler).rgb * uParameters.Diffuse[layer].Color.rgb; @@ -149,7 +150,7 @@ vec3 CalcCameraLight(int layer, vec3 normals) void main() { - if (bVertexColors[2]) + if (bVertexColors[2] && uHasVertexColors) { FragColor = fColor; } @@ -215,7 +216,7 @@ void main() result *= lights; // use * to darken the scene, + to lighten it } - result = result / (result + vec3(1.0f)); - FragColor = vec4(pow(result, vec3(1.0f / 2.2f)), 1.0f); + result = result / (result + vec3(1.0)); + FragColor = vec4(pow(result, vec3(1.0 / 2.2)), 1.0); } } diff --git a/FModel/Views/Snooper/Model.cs b/FModel/Views/Snooper/Model.cs index f3a59175..c8d73658 100644 --- a/FModel/Views/Snooper/Model.cs +++ b/FModel/Views/Snooper/Model.cs @@ -268,6 +268,7 @@ public class Model : IDisposable _vao.Bind(); shader.SetUniform("uMorphTime", MorphTime); shader.SetUniform("uNumTexCoords", NumTexCoords); + shader.SetUniform("uHasVertexColors", HasVertexColors); GL.PolygonMode(MaterialFace.FrontAndBack, Wireframe ? PolygonMode.Line : PolygonMode.Fill); for (int section = 0; section < Sections.Length; section++) diff --git a/FModel/Views/Snooper/Renderer.cs b/FModel/Views/Snooper/Renderer.cs index 5eb93c49..c4a5b160 100644 --- a/FModel/Views/Snooper/Renderer.cs +++ b/FModel/Views/Snooper/Renderer.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Numerics; using System.Threading; using System.Windows; @@ -272,13 +272,13 @@ public class Renderer : IDisposable if (textureDataIdx.TryGetValue(out FPackageIndex diffuse, "Diffuse") && diffuse.Load() is UTexture2D diffuseTexture) - model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures[CMaterialParams2.Diffuse[0][0]] = diffuseTexture; + model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures["Diffuse"] = diffuseTexture; if (textureDataIdx.TryGetValue(out FPackageIndex normal, "Normal") && normal.Load() is UTexture2D normalTexture) - model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures[CMaterialParams2.Normals[0][0]] = normalTexture; + model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures["Normals"] = normalTexture; if (textureDataIdx.TryGetValue(out FPackageIndex specular, "Specular") && specular.Load() is UTexture2D specularTexture) - model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures[CMaterialParams2.SpecularMasks[0][0]] = specularTexture; + model.Materials[model.Sections[j].MaterialIndex].Parameters.Textures["SpecularMasks"] = specularTexture; } } if (staticMeshComp.TryGetValue(out FPackageIndex[] overrideMaterials, "OverrideMaterials")) From fc825403888824ce84ef073b40e01491497a6eb4 Mon Sep 17 00:00:00 2001 From: GMatrixGames Date: Thu, 8 Dec 2022 12:10:20 -0500 Subject: [PATCH 04/13] pubg egl --- CUE4Parse | 2 +- FModel/ViewModels/GameSelectorViewModel.cs | 1 + FModel/Views/Resources/Converters/StringToGameConverter.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CUE4Parse b/CUE4Parse index 78cd043b..af16aa14 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit 78cd043be4cc1295280f7411a5e612e2ae49e9ed +Subproject commit af16aa14f37f9a4705308e087ae820ac1076f54f diff --git a/FModel/ViewModels/GameSelectorViewModel.cs b/FModel/ViewModels/GameSelectorViewModel.cs index fdb1c9c4..52277677 100644 --- a/FModel/ViewModels/GameSelectorViewModel.cs +++ b/FModel/ViewModels/GameSelectorViewModel.cs @@ -110,6 +110,7 @@ public class GameSelectorViewModel : ViewModel yield return GetUnrealEngineGame("a99769d95d8f400baad1f67ab5dfe508"); yield return GetUnrealEngineGame("Nebula"); yield return GetUnrealEngineGame("711c5e95dc094ca58e5f16bd48e751d6"); + yield return GetUnrealEngineGame("9361c8c6d2f34b42b5f2f61093eedf48"); yield return GetRiotGame("VALORANT", "ShooterGame\\Content\\Paks"); yield return new DetectedGame { GameName = "Valorant [LIVE]", GameDirectory = Constants._VAL_LIVE_TRIGGER }; yield return GetMojangGame("MinecraftDungeons", "\\dungeons\\dungeons\\Dungeons\\Content\\Paks"); diff --git a/FModel/Views/Resources/Converters/StringToGameConverter.cs b/FModel/Views/Resources/Converters/StringToGameConverter.cs index 58f9e095..3bd91b69 100644 --- a/FModel/Views/Resources/Converters/StringToGameConverter.cs +++ b/FModel/Views/Resources/Converters/StringToGameConverter.cs @@ -27,6 +27,7 @@ public class StringToGameConverter : IValueConverter "shoebill" => FGame.SwGame, "a99769d95d8f400baad1f67ab5dfe508" => FGame.Platform, "711c5e95dc094ca58e5f16bd48e751d6" => FGame.PandaGame, + "9361c8c6d2f34b42b5f2f61093eedf48" => FGame.TslGame, 381210 => FGame.DeadByDaylight, 578080 => FGame.TslGame, 677620 => FGame.PortalWars, From 2a4f91cc65029e5d571e71495e53eb7ea2d7f936 Mon Sep 17 00:00:00 2001 From: 4sval Date: Sat, 10 Dec 2022 00:47:18 +0100 Subject: [PATCH 05/13] FortPlayerAugmentItemDefinition + no more auto save --- CUE4Parse | 2 +- FModel/Creator/CreatorPackage.cs | 1 + FModel/MainWindow.xaml | 75 +++-------- FModel/MainWindow.xaml.cs | 27 ++-- FModel/Settings/UserSettings.cs | 35 ----- FModel/ViewModels/CUE4ParseViewModel.cs | 126 ++++++++---------- .../Commands/RightClickMenuCommand.cs | 4 +- FModel/ViewModels/TabControlViewModel.cs | 76 ++++++++--- FModel/Views/SettingsView.xaml | 30 +---- FModel/Views/Snooper/Material.cs | 6 +- 10 files changed, 157 insertions(+), 225 deletions(-) diff --git a/CUE4Parse b/CUE4Parse index af16aa14..1cec00df 160000 --- a/CUE4Parse +++ b/CUE4Parse @@ -1 +1 @@ -Subproject commit af16aa14f37f9a4705308e087ae820ac1076f54f +Subproject commit 1cec00df148a2cdc2f4dbf73316b9b1ea6da33f7 diff --git a/FModel/Creator/CreatorPackage.cs b/FModel/Creator/CreatorPackage.cs index 64f8cd1b..ac794ab2 100644 --- a/FModel/Creator/CreatorPackage.cs +++ b/FModel/Creator/CreatorPackage.cs @@ -90,6 +90,7 @@ public class CreatorPackage : IDisposable case "FortPlaysetPropItemDefinition": case "FortHomebaseNodeItemDefinition": case "FortNeverPersistItemDefinition": + case "FortPlayerAugmentItemDefinition": case "RadioContentSourceItemDefinition": case "FortPlaysetGrenadeItemDefinition": case "FortPersonalVehicleItemDefinition": diff --git a/FModel/MainWindow.xaml b/FModel/MainWindow.xaml index 8306f23c..0bfc4d25 100644 --- a/FModel/MainWindow.xaml +++ b/FModel/MainWindow.xaml @@ -94,7 +94,7 @@ - + @@ -109,7 +109,7 @@ - + @@ -124,10 +124,10 @@ - + - + @@ -139,24 +139,8 @@ - - - - - - - - - - - - + @@ -400,7 +384,7 @@ - + @@ -409,7 +393,7 @@ - + @@ -418,6 +402,15 @@ + + + + + + + + + @@ -528,7 +521,7 @@ - + @@ -543,7 +536,7 @@ - + @@ -558,10 +551,10 @@ - + - + @@ -803,32 +796,6 @@ - - - - - - - - - - - - - -