Grayscale textures are broken in 4.2.0.2188
Doprez opened this issue · comments
Release Type: Official Release
Version: 4.2.0.2188
Platform(s): Windows
Describe the bug
When importing a grayscale file into the editor it will be completely broken.
you can make it at least shows something if you uncheck all of the options in the feature panel but it just shows white noise.
This is how it looks in 4.2.0.2122:
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Textures should look good.
Some added info this seems to have broken after 2149 as it works in that gamestudio version as expected.
releases/4.2.0.2149...releases/4.2.0.2188
System.DivideByZeroException: 'Attempted to divide by zero.'
This exception was originally thrown at this call stack:
Stride.Graphics.PixelFormatExtensions.SizeInBits(Stride.Graphics.PixelFormat) in PixelFormatExtensions.cs
Stride.TextureConverter.TexLibraries.DxtTexLib.ChangeDxtImageType(Stride.TextureConverter.TexLibraries.DxtTextureLibraryData, Stride.TextureConverter.DxtWrapper.DXGI_FORMAT) in DxtTexLib.cs
Stride.TextureConverter.TexLibraries.DxtTexLib.Load(Stride.TextureConverter.TexImage, Stride.TextureConverter.Requests.LoadingRequest) in DxtTexLib.cs
Stride.TextureConverter.TexLibraries.DxtTexLib.Execute(Stride.TextureConverter.TexImage, Stride.TextureConverter.IRequest) in DxtTexLib.cs
Stride.TextureConverter.TextureTool.Load(Stride.TextureConverter.Requests.LoadingRequest) in TextureTool.cs
Stride.TextureConverter.TextureTool.Load(string, bool) in TextureTool.cs
Stride.Assets.Textures.TextureAssetCompiler.TextureConvertCommand.DoCommandOverride(Stride.Core.BuildEngine.ICommandContext) in TextureAssetCompiler.cs
Stride.Core.BuildEngine.Command.DoCommand(Stride.Core.BuildEngine.ICommandContext) in Command.cs
Stride.Core.BuildEngine.CommandBuildStep.StartCommand(Stride.Core.BuildEngine.IExecuteContext, Stride.Core.IO.ListStore<Stride.Core.BuildEngine.CommandResultEntry>, Stride.Core.BuildEngine.BuilderContext) in CommandBuildStep.cs
Weird, Are being able to reproduce this bug before my PR related to DirectXTex? #2338
@Doprez Could you upload tested texture here in this issue? I wonder what gone wrong that it executes DxtTextLib in the first place...
@Jklawreszuk it is the one in the post above, probably it has a high bit format. Maybe 16, 24 or 32 bit per channel. I can confirm that this image doesn't work: Bricks
@Jklawreszuk what was the reason to change the supported file formats in #2303? The DxtLib handled png files with esoteric pixel formats correctly. There might also be gamma/sRGB issues that are handled differently...
@Doprez Could you upload tested texture here in this issue? I wonder what gone wrong that it executes DxtTextLib in the first place...
It should be the image in the description, unfortunately it shows the picture instead of just a file reference but opening athat and downloading it should reproduce the issue.
@Doprez Right, thanks! I didn't pay attention to it 🤦
@tebjan LoadFromWICFile depends on Win32 which is available on Windows only, that's why was gotten removed.
DirectXTex wiki : https://github.com/microsoft/DirectXTex/wiki/WIC-I-O-Functions.
So intention was to move responsibility of image loading from dxt to freeimage but I guess modifying SupportedExtensions
variable isn't enough. Will try this week to see what needs to be changed additionally to make the import work properly. If I don't find any idea to fix, restoring the LoadFromWICFile method while adding a workaround for Linux systems may also be some solution to the problem 😅