mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Minor upgrades to follow dependencies
This commit is contained in:
parent
60986c78f8
commit
59b3859f11
4 changed files with 10 additions and 15 deletions
|
|
@ -49,7 +49,7 @@ public class MaterialExporter
|
||||||
private static MaterialBuilder BuildCharacter(Material material, string name)
|
private static MaterialBuilder BuildCharacter(Material material, string name)
|
||||||
{
|
{
|
||||||
// Build the textures from the color table.
|
// Build the textures from the color table.
|
||||||
var table = new LegacyColorTable(material.Mtrl.Table);
|
var table = new LegacyColorTable(material.Mtrl.Table!);
|
||||||
|
|
||||||
var normal = material.Textures[TextureUsage.SamplerNormal];
|
var normal = material.Textures[TextureUsage.SamplerNormal];
|
||||||
|
|
||||||
|
|
@ -103,6 +103,7 @@ public class MaterialExporter
|
||||||
|
|
||||||
// TODO: It feels a little silly to request the entire normal here when extracting the normal only needs some of the components.
|
// TODO: It feels a little silly to request the entire normal here when extracting the normal only needs some of the components.
|
||||||
// As a future refactor, it would be neat to accept a single-channel field here, and then do composition of other stuff later.
|
// As a future refactor, it would be neat to accept a single-channel field here, and then do composition of other stuff later.
|
||||||
|
// TODO(Dawntrail): Use the dedicated index (_id) map, that is not embedded in the normal map's alpha channel anymore.
|
||||||
private readonly struct ProcessCharacterNormalOperation(Image<Rgba32> normal, LegacyColorTable table) : IRowOperation
|
private readonly struct ProcessCharacterNormalOperation(Image<Rgba32> normal, LegacyColorTable table) : IRowOperation
|
||||||
{
|
{
|
||||||
public Image<Rgba32> Normal { get; } = normal.Clone();
|
public Image<Rgba32> Normal { get; } = normal.Clone();
|
||||||
|
|
@ -139,17 +140,17 @@ public class MaterialExporter
|
||||||
var nextRow = table[tableRow.Next];
|
var nextRow = table[tableRow.Next];
|
||||||
|
|
||||||
// Base colour (table, .b)
|
// Base colour (table, .b)
|
||||||
var lerpedDiffuse = Vector3.Lerp(prevRow.Diffuse, nextRow.Diffuse, tableRow.Weight);
|
var lerpedDiffuse = Vector3.Lerp((Vector3)prevRow.DiffuseColor, (Vector3)nextRow.DiffuseColor, tableRow.Weight);
|
||||||
baseColorSpan[x].FromVector4(new Vector4(lerpedDiffuse, 1));
|
baseColorSpan[x].FromVector4(new Vector4(lerpedDiffuse, 1));
|
||||||
baseColorSpan[x].A = normalPixel.B;
|
baseColorSpan[x].A = normalPixel.B;
|
||||||
|
|
||||||
// Specular (table)
|
// Specular (table)
|
||||||
var lerpedSpecularColor = Vector3.Lerp(prevRow.Specular, nextRow.Specular, tableRow.Weight);
|
var lerpedSpecularColor = Vector3.Lerp((Vector3)prevRow.SpecularColor, (Vector3)nextRow.SpecularColor, tableRow.Weight);
|
||||||
var lerpedSpecularFactor = float.Lerp(prevRow.SpecularStrength, nextRow.SpecularStrength, tableRow.Weight);
|
var lerpedSpecularFactor = float.Lerp((float)prevRow.SpecularMask, (float)nextRow.SpecularMask, tableRow.Weight);
|
||||||
specularSpan[x].FromVector4(new Vector4(lerpedSpecularColor, lerpedSpecularFactor));
|
specularSpan[x].FromVector4(new Vector4(lerpedSpecularColor, lerpedSpecularFactor));
|
||||||
|
|
||||||
// Emissive (table)
|
// Emissive (table)
|
||||||
var lerpedEmissive = Vector3.Lerp(prevRow.Emissive, nextRow.Emissive, tableRow.Weight);
|
var lerpedEmissive = Vector3.Lerp((Vector3)prevRow.EmissiveColor, (Vector3)nextRow.EmissiveColor, tableRow.Weight);
|
||||||
emissiveSpan[x].FromVector4(new Vector4(lerpedEmissive, 1));
|
emissiveSpan[x].FromVector4(new Vector4(lerpedEmissive, 1));
|
||||||
|
|
||||||
// Normal (.rg)
|
// Normal (.rg)
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,7 @@ public static class TextureDrawer
|
||||||
{
|
{
|
||||||
if (texture.TextureWrap != null)
|
if (texture.TextureWrap != null)
|
||||||
{
|
{
|
||||||
size = size.X < texture.TextureWrap.Width
|
size = texture.TextureWrap.Size.Contain(size);
|
||||||
? size with { Y = texture.TextureWrap.Height * size.X / texture.TextureWrap.Width }
|
|
||||||
: new Vector2(texture.TextureWrap.Width, texture.TextureWrap.Height);
|
|
||||||
|
|
||||||
ImGui.Image(texture.TextureWrap.ImGuiHandle, size);
|
ImGui.Image(texture.TextureWrap.ImGuiHandle, size);
|
||||||
DrawData(texture);
|
DrawData(texture);
|
||||||
|
|
|
||||||
|
|
@ -279,7 +279,7 @@ public class MigrationManager(Configuration config) : IService
|
||||||
|
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
|
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
|
||||||
using var f = File.Open(path, FileMode.Create, FileAccess.Write);
|
using var f = File.Open(path, FileMode.Create, FileAccess.Write);
|
||||||
if (file.IsDawnTrail)
|
if (file.IsDawntrail)
|
||||||
{
|
{
|
||||||
file.MigrateToDawntrail();
|
file.MigrateToDawntrail();
|
||||||
Penumbra.Log.Debug($"Migrated material {reader.Entry.Key} to Dawntrail during import.");
|
Penumbra.Log.Debug($"Migrated material {reader.Entry.Key} to Dawntrail during import.");
|
||||||
|
|
@ -329,7 +329,7 @@ public class MigrationManager(Configuration config) : IService
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var mtrl = new MtrlFile(data);
|
var mtrl = new MtrlFile(data);
|
||||||
if (mtrl.IsDawnTrail)
|
if (mtrl.IsDawntrail)
|
||||||
return data;
|
return data;
|
||||||
|
|
||||||
mtrl.MigrateToDawntrail();
|
mtrl.MigrateToDawntrail();
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,6 @@ using OtterGui;
|
||||||
using Penumbra.Interop.ResourceTree;
|
using Penumbra.Interop.ResourceTree;
|
||||||
using Penumbra.UI.Classes;
|
using Penumbra.UI.Classes;
|
||||||
using Penumbra.String;
|
using Penumbra.String;
|
||||||
using Penumbra.UI.Tabs;
|
|
||||||
|
|
||||||
namespace Penumbra.UI.AdvancedWindow;
|
namespace Penumbra.UI.AdvancedWindow;
|
||||||
|
|
||||||
|
|
@ -245,10 +244,7 @@ public class ResourceTreeViewer
|
||||||
if (visibility == NodeVisibility.Hidden)
|
if (visibility == NodeVisibility.Hidden)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var textColor = ImGui.GetColorU32(ImGuiCol.Text);
|
using var mutedColor = ImRaii.PushColor(ImGuiCol.Text, ImGuiUtil.HalfTransparentText(), resourceNode.Internal);
|
||||||
var textColorInternal = (textColor & 0x00FFFFFFu) | ((textColor & 0xFE000000u) >> 1); // Half opacity
|
|
||||||
|
|
||||||
using var mutedColor = ImRaii.PushColor(ImGuiCol.Text, textColorInternal, resourceNode.Internal);
|
|
||||||
|
|
||||||
var filterIcon = resourceNode.Icon != 0 ? resourceNode.Icon : parentFilterIcon;
|
var filterIcon = resourceNode.Icon != 0 ? resourceNode.Icon : parentFilterIcon;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue