1+ using System ;
12using System . IO ;
3+ using System . Threading . Tasks ;
4+ using BCnEncoder . Decoder ;
5+ using BCnEncoder . Encoder ;
26using BCnEncoder . Shared ;
37using BCnEncTests . Support ;
48using CommunityToolkit . HighPerformance ;
@@ -17,10 +21,39 @@ public void LoadHdr()
1721 Assert . True ( hdrImg . height > 0 ) ;
1822 Assert . True ( hdrImg . pixels . Length == hdrImg . width * hdrImg . height ) ;
1923
20- // Save as HDR to verify round-trip
21- var hdrOut = new HdrImage ( new Span2D < ColorRgbFloat > ( hdrImg . pixels , hdrImg . height , hdrImg . width ) ) ;
22- using var outStream = File . OpenWrite ( "test_hdr_load.hdr" ) ;
23- hdrOut . Write ( outStream ) ;
24+ var rgba = new ColorRgba32 [ hdrImg . pixels . Length ] ;
25+ for ( var i = 0 ; i < hdrImg . pixels . Length ; i ++ )
26+ {
27+ var p = hdrImg . pixels [ i ] ;
28+ rgba [ i ] = new ColorRgba32 (
29+ ( byte ) ( Math . Max ( 0 , Math . Min ( 1 , p . r ) ) * 255 + 0.5f ) ,
30+ ( byte ) ( Math . Max ( 0 , Math . Min ( 1 , p . g ) ) * 255 + 0.5f ) ,
31+ ( byte ) ( Math . Max ( 0 , Math . Min ( 1 , p . b ) ) * 255 + 0.5f ) ,
32+ 255 ) ;
33+ }
34+ var converted = new Memory2D < ColorRgba32 > ( rgba , hdrImg . height , hdrImg . width ) ;
35+ var reference = ImageLoader . LoadTestImage ( "../../../../BCnEncTests/testImages/test_hdr_kiara.png" ) ;
36+ TestHelper . AssertImagesEqual ( reference , converted , CompressionQuality . BestQuality ) ;
37+ }
38+
39+ [ Fact ]
40+ public async Task DecodeAllMipMapsHdrStreamAsync ( )
41+ {
42+ var encoder = new BcEncoder ( ) ;
43+ encoder . OutputOptions . Format = CompressionFormat . Bc6U ;
44+ encoder . OutputOptions . Quality = CompressionQuality . Fast ;
45+ encoder . OutputOptions . GenerateMipMaps = true ;
46+
47+ var decoder = new BcDecoder ( ) ;
48+ var input = HdrLoader . TestHdrKiara ;
49+ var ktxWithMips = encoder . EncodeToKtxHdr ( new Memory2D < ColorRgbFloat > ( input . pixels , input . height , input . width ) ) ;
50+ using var ms = new MemoryStream ( ) ;
51+ ktxWithMips . Write ( ms ) ;
52+ ms . Position = 0 ;
53+
54+ var images = await decoder . DecodeAllMipMapsHdr2DAsync ( ms ) ;
55+ Assert . Equal ( ( int ) ktxWithMips . header . NumberOfMipmapLevels , images . Length ) ;
56+ Assert . True ( images . Length > 1 ) ;
2457 }
2558 }
2659}
0 commit comments