Skip to content

Commit 2751a18

Browse files
committed
Fix for UV mapping with values outside of the 0..1 range
1 parent 0e46a5e commit 2751a18

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

RenderWarePreviewer/Helpers/AssetHelper.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using BCnEncoder.Decoder;
22
using BCnEncoder.ImageSharp;
33
using RenderWareIo;
4+
using RenderWareIo.ReadWriteHelpers;
45
using RenderWareIo.Structs.Dff;
56
using RenderWareIo.Structs.Ide;
67
using RenderWareIo.Structs.Img;
@@ -90,28 +91,31 @@ public Dictionary<string, Image<Rgba32>> GetImages(Txd txd)
9091
{
9192
string sanitizedName = SanitizeName(texture.Data.TextureName);
9293
string format = texture.Data.TextureFormatString;
94+
var dds = texture.GetDds(false);
95+
var data = DdsHelper.StripDdsHeader(dds);
9396

9497
Image<Rgba32> rgbaImage = new(texture.Data.Width, texture.Data.Height);
9598

9699
switch (format)
97100
{
98101
case "RGB32":
102+
case "BGRA32":
99103
{
100-
var image = Image.LoadPixelData<Bgra32>(texture.Data.Data, texture.Data.Width, texture.Data.Height);
104+
var image = Image.LoadPixelData<Bgra32>(data, texture.Data.Width, texture.Data.Height);
101105
rgbaImage = image.CloneAs<Rgba32>();
102106
image.Dispose();
103107
break;
104108
}
105109
case "RGBA32":
106110
{
107-
var image = Image.LoadPixelData<Rgba32>(texture.Data.Data, texture.Data.Width, texture.Data.Height);
111+
var image = Image.LoadPixelData<Rgba32>(data, texture.Data.Width, texture.Data.Height);
108112
rgbaImage = image;
109113
break;
110114
}
111115
case "DXT1":
112116
{
113117
BcDecoder decoder = new();
114-
Image<Rgba32> image = decoder.DecodeRawToImageRgba32(texture.Data.Data, texture.Data.Width, texture.Data.Height, BCnEncoder.Shared.CompressionFormat.Bc1);
118+
Image<Rgba32> image = decoder.DecodeRawToImageRgba32(data, texture.Data.Width, texture.Data.Height, BCnEncoder.Shared.CompressionFormat.Bc1);
115119
rgbaImage = image;
116120
break;
117121
}

RenderWarePreviewer/Helpers/MeshHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public static MeshGeometry3D GetMesh(RenderWareIo.Structs.Dff.Geometry geometry,
139139

140140
foreach (var uv in geometry.TexCoords)
141141
{
142-
mesh.TextureCoordinates.Add(new Point(uv.X, uv.Y));
142+
mesh.TextureCoordinates.Add(new Point((uv.X + 100) % 1f, (uv.Y + 100) % 1f));
143143
}
144144
return mesh;
145145
}

0 commit comments

Comments
 (0)