@@ -414,9 +414,18 @@ await Task.Run(() =>
414
414
using ( var img = Image . LoadPixelData < Rgba32 > ( texMapData . Normal . Data , texMapData . Normal . Width ,
415
415
texMapData . Normal . Height ) )
416
416
{
417
- img . Mutate ( x => x . Resize ( width , height ) ) ;
417
+ // ImageSharp pre-multiplies the RGB by the alpha component during resize, if alpha is 0 (colourset row 0)
418
+ // this ends up causing issues and destroying the RGB values resulting in an invisible preview model
419
+ // https://github.com/SixLabors/ImageSharp/issues/1498#issuecomment-757519563
420
+ img . Mutate ( x => x . Resize (
421
+ new ResizeOptions
422
+ {
423
+ Size = new Size ( width , height ) ,
424
+ PremultiplyAlpha = false
425
+ } )
426
+ ) ;
418
427
419
- texMapData . Normal . Data = MemoryMarshal . AsBytes ( img . GetPixelSpan ( ) ) . ToArray ( ) ;
428
+ texMapData . Normal . Data = MemoryMarshal . AsBytes ( img . GetPixelMemoryGroup ( ) [ 0 ] . Span ) . ToArray ( ) ;
420
429
}
421
430
}
422
431
@@ -436,7 +445,7 @@ await Task.Run(() =>
436
445
}
437
446
img . Mutate ( x => x . Resize ( width , height ) ) ;
438
447
439
- texMapData . Diffuse . Data = MemoryMarshal . AsBytes ( img . GetPixelSpan ( ) ) . ToArray ( ) ;
448
+ texMapData . Diffuse . Data = MemoryMarshal . AsBytes ( img . GetPixelMemoryGroup ( ) [ 0 ] . Span ) . ToArray ( ) ;
440
449
}
441
450
}
442
451
@@ -448,7 +457,7 @@ await Task.Run(() =>
448
457
{
449
458
img . Mutate ( x => x . Resize ( width , height ) ) ;
450
459
451
- texMapData . Specular . Data = MemoryMarshal . AsBytes ( img . GetPixelSpan ( ) ) . ToArray ( ) ;
460
+ texMapData . Specular . Data = MemoryMarshal . AsBytes ( img . GetPixelMemoryGroup ( ) [ 0 ] . Span ) . ToArray ( ) ;
452
461
}
453
462
}
454
463
} ) ;
0 commit comments