package Ġgli _ Ċ Ċ import Ġglm _. b Ċ import Ġglm _. glm Ċ import Ġk ool . set Ċ import Ġglm _. vec 1 .* Ċ import Ġglm _. vec 2 .* Ċ import Ġglm _. vec 3 .* Ċ import Ġglm _. vec 4 .* Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġjava . nio . file . Files Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG Bar b ier i Ġon Ġ 1 9 . 0 5 . 2 0 1 7 . Ċ Ġ*/ Ċ Ċ class Ġcore Texture Cube Ġ: ĠString Spec () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ" alloc " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsizes Ġ= Ġint ArrayOf ( 1 6 , Ġ 3 2 , Ġ 1 5 , Ġ 1 7 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( format Ġin ĠFormat . FIRST Ġ.. ĠFormat . LAST ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsizes . forEach Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠVec 2 i ( it ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture A Ġ= ĠTexture Cube ( format , Ġsize , Ġglm . levels ( size )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture B Ġ= ĠTexture Cube ( format , Ġsize ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A ĠshouldBe Ġtexture B ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" query " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Texture Cube ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 2 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe ĠVec 4 ub . size Ġ* Ġ 5 Ġ* Ġ 6 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat ĠshouldBe ĠFormat . RGBA 8 _ UINT _ PACK 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevels () ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty () ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextent (). x ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextent (). y ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" texture 2 D Ġaccess " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture 2 d A Ġ= ĠTexture 2 d ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtexture 2 d A . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 d A . data ()[ i ] Ġ= Ġi . b ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture 2 dB Ġ= ĠTexture 2 d ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtexture 2 dB . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 dB . data ()[ i ] Ġ= Ġ( i Ġ+ Ġ 1 0 0 ). b ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Cube Ġ= ĠTexture Cube ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTodo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgli :: copy ( Texture Cube , Ġ 0 , ĠTexture 2 DA ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġgli :: copy ( Texture Cube , Ġ 1 , ĠTexture 2 DB ); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTexture Cube [ 0 ] ĠshouldBe Ġ ĠTexture 2 DA ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTexture Cube [ 1 ] ĠshouldBe Ġ ĠTexture 2 DB ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Cube Ġ= ĠTexture Cube ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( texture Cube . not Empty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolors Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 0 , Ġ 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . forEach Indexed Ġ{ Ġi , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture 2 D Ġ= Ġtexture Cube [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pixel Index Ġin Ġ 0 Ġuntil Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D . data < Vec 4 ub >() [ pixel Index ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tex el Index Ġin Ġ 0 Ġuntil Ġtexture Cube . size Ġ/ ĠVec 4 b . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Cube . data < Vec 4 ub >() [ tex el Index ] ĠshouldBe Ġcolors [ tex el Index Ġ/ Ġ 4 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Cube Ġ= ĠTexture Cube ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( texture Cube . not Empty ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture A Ġ= Ġtexture Cube [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture B Ġ= Ġtexture Cube [ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize 0 Ġ= Ġtexture A . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize 1 Ġ= Ġtexture B . size ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize 0 ĠshouldBe ĠVec 4 b . size Ġ* Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize 1 ĠshouldBe ĠVec 4 b . size Ġ* Ġ 5 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A . data < Vec 4 ub >() [ 0 ] Ġ= ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture B . data < Vec 4 ub >() [ 0 ] Ġ= ĠVec 4 ub ( 0 , Ġ 1 2 7 , Ġ 2 5 5 , Ġ 2 5 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer A Ġ= Ġtexture A . data < Vec 4 ub >() [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer B Ġ= Ġtexture B . data < Vec 4 ub >() [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer 0 Ġ= Ġtexture Cube . data < Vec 4 ub >() [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer 1 Ġ= Ġtexture Cube . data < Vec 4 ub >() [ 5 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer A ĠshouldBe Ġpointer 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer B ĠshouldBe Ġpointer 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor A Ġ= Ġtexture A . data < Vec 4 ub >() [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor B Ġ= Ġtexture B . data < Vec 4 ub >() [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor 0 Ġ= Ġpointer 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor 1 Ġ= Ġpointer 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor A ĠshouldBe Ġcolor 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor B ĠshouldBe Ġcolor 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 0 ĠshouldBe ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 1 ĠshouldBe ĠVec 4 ub ( 0 , Ġ 1 2 7 , Ġ 2 5 5 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Cube Ġ= ĠTexture Cube ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 2 ), Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize A Ġ= Ġtexture Cube . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize A ĠshouldBe ĠVec 4 b . size Ġ* Ġ 4 Ġ* Ġ 6 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture 2 D Ġ= Ġtexture Cube [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize 0 Ġ= Ġtexture 2 D . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize 0 ĠshouldBe ĠVec 4 ub . size Ġ* Ġ 4 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture 2 D . data < Vec 4 ub >() [ 0 ] Ġ= ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer A Ġ= Ġtexture 2 D . data < Vec 4 ub >() [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointer 0 Ġ= Ġtexture Cube . data < Vec 4 ub >() [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer A ĠshouldBe Ġpointer 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor A Ġ= Ġpointer A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor 0 Ġ= Ġpointer 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor A ĠshouldBe Ġcolor 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor A ĠshouldBe ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 0 ĠshouldBe ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" texture 2 D Ġsize " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest ( val Ġformat : ĠFormat , Ġval Ġdimensions : ĠVec 2 i , Ġval Ġsize : ĠInt ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtests Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . RGBA 8 _ UINT _ PACK 8 , ĠVec 2 i ( 4 ), Ġ 3 8 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . R 8 _ UINT _ PACK 8 , ĠVec 2 i ( 4 ), Ġ 9 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . RGBA _ DX T 1 _ UN ORM _ BLOCK 8 , ĠVec 2 i ( 4 ), Ġ 4 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . RGBA _ DX T 1 _ UN ORM _ BLOCK 8 , ĠVec 2 i ( 2 ), Ġ 4 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . RGBA _ DX T 1 _ UN ORM _ BLOCK 8 , ĠVec 2 i ( 1 ), Ġ 4 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( Format . RGBA _ DX T 5 _ UN ORM _ BLOCK 1 6 , ĠVec 2 i ( 4 ), Ġ 9 6 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtests . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Ġ= ĠTexture Cube ( it . format , ĠVec 2 i ( 4 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġtexture . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize ĠshouldBe Ġit . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" loader " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture A Ġ= ĠTexture Cube ( Format . RGBA 8 _ UN ORM _ PACK 8 , ĠVec 2 i ( 8 ), Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ds A Ġ= Ġ" texture Cube A _ rgba 8 _ un orm . dds " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ds B Ġ= Ġ" texture Cube B _ rgba 8 _ un orm . dds " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 1 2 8 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 1 2 8 , Ġ 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 0 , Ġ 2 5 5 , Ġ 2 5 5 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 Ġuntil Ġtexture A . faces ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( tex el Index Ġin Ġ 0 Ġuntil Ġtexture A [ face Index ]. size < Vec 4 ub >()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A [ face Index ]. data < Vec 4 ub >() [ tex el Index ] Ġ= Ġcolor [ face Index ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgli . save D ds ( texture A , Ġd ds A ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture B Ġ= ĠTexture Cube ( g li . load D ds ( dds A )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgli . save D ds ( texture B , Ġd ds B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture C Ġ= ĠTexture Cube ( g li . load D ds ( dds B )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A ĠshouldBe Ġtexture B ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A ĠshouldBe Ġtexture C ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture B ĠshouldBe Ġtexture C ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete ( path Of ( dds A )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . delete ( path Of ( dds B )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" load Ġstore " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 3 2 _ S FLOAT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (+ 0 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (+ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (- 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (+ 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (- 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 (+ 0 . 2 f ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 3 2 _ S FLOAT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (- 1 . 0 f , Ġ- 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (- 0 . 5 f , Ġ- 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (+ 0 . 0 f , Ġ+ 0 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (+ 0 . 5 f , Ġ+ 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (+ 1 . 0 f , Ġ+ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 (- 1 . 0 f , Ġ+ 1 . 0 f ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 3 2 _ S FLOAT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (- 1 . 0 f , Ġ+ 0 . 0 f , Ġ+ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (- 0 . 5 f , Ġ+ 0 . 0 f , Ġ+ 0 . 5 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (- 0 . 2 f , Ġ+ 0 . 0 f , Ġ+ 0 . 2 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (- 0 . 0 f , Ġ+ 0 . 0 f , Ġ+ 0 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (+ 0 . 1 f , Ġ+ 0 . 2 f , Ġ+ 0 . 3 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 (- 0 . 1 f , Ġ- 0 . 2 f , Ġ- 0 . 3 f ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 3 2 _ S FLOAT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (- 1 . 0 f , Ġ+ 0 . 0 f , Ġ+ 1 . 0 f , Ġ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (- 0 . 5 f , Ġ+ 0 . 0 f , Ġ+ 0 . 5 f , Ġ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (- 0 . 2 f , Ġ+ 0 . 0 f , Ġ+ 0 . 2 f , Ġ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (- 0 . 0 f , Ġ+ 0 . 0 f , Ġ+ 0 . 0 f , Ġ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (+ 0 . 1 f , Ġ+ 0 . 2 f , Ġ+ 0 . 3 f , Ġ 1 . 0 f ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 (- 0 . 1 f , Ġ- 0 . 2 f , Ġ- 0 . 3 f , Ġ 1 . 0 f ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (- 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (- 1 2 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (+ 1 2 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (+ 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (- 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 b (+ 1 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 8 _ S INT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 8 _ SN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b (- 1 2 8 , Ġ- 9 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b (- 6 4 , Ġ 9 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b (- 1 2 8 , Ġ 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b ( 1 2 7 , Ġ 3 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b ( 0 , Ġ 1 2 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 b (- 4 8 , Ġ 4 8 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 8 _ UINT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 8 _ UN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b (- 1 2 8 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b (- 1 2 8 , Ġ 1 2 7 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b (- 1 2 8 , Ġ- 9 6 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b ( 1 2 7 , Ġ- 1 2 8 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b ( 0 , Ġ 1 2 7 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 b ( 0 , Ġ 1 2 7 , Ġ- 1 2 7 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 8 _ S INT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 8 _ SN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b (- 1 2 7 , Ġ 0 , Ġ 0 , Ġ 1 2 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b (- 1 2 8 , Ġ 9 6 , Ġ 0 , Ġ- 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b ( 1 2 7 , Ġ 6 4 , Ġ 0 , Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b ( 0 , Ġ- 6 4 , Ġ 0 , Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b (- 9 5 , Ġ 3 2 , Ġ 0 , Ġ 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 b ( 9 5 , Ġ- 3 2 , Ġ 1 2 7 , Ġ 4 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 8 _ S INT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 8 _ SN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 2 2 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 1 9 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ub ( 3 2 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 8 _ UINT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 8 _ UN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 8 _ SR GB _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 2 5 5 , Ġ 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 1 2 8 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ub ( 0 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 8 _ UINT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 8 _ UN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 8 _ SR GB _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 2 5 5 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 2 5 5 , Ġ 1 2 8 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 2 5 5 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 1 2 8 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 0 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ub ( 0 , Ġ 2 5 5 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 8 _ UINT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 8 _ UN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 8 _ SR GB _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 1 2 8 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 1 2 8 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ub ( 0 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 8 _ UINT _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 8 _ UN ORM _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 8 _ SR GB _ PACK 8 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 6 5 5 3 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 3 2 7 6 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 1 9 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 us ( 3 2 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 1 6 _ UINT _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 1 6 _ UN ORM _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 2 5 5 , Ġ 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 1 2 8 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 us ( 0 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 1 6 _ UINT _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 1 6 _ UN ORM _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 2 5 5 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 2 5 5 , Ġ 1 2 8 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 2 5 5 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 1 2 8 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 0 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 us ( 0 , Ġ 2 5 5 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 1 6 _ UINT _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 1 6 _ UN ORM _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 2 5 5 , Ġ 1 2 8 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 1 2 8 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 0 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 us ( 0 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 )). let Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 1 6 _ UINT _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 1 6 _ UN ORM _ PACK 1 6 , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . R 3 2 _ UINT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 6 5 5 3 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 3 2 7 6 7 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 1 9 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 6 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 1 ui ( 3 2 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RG 3 2 _ UINT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 2 5 5 , Ġ 1 2 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 2 5 5 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 1 2 8 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 2 ui ( 0 , Ġ 2 5 5 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGB 3 2 _ UINT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 2 5 5 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 2 5 5 , Ġ 1 2 8 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 2 5 5 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 1 2 8 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 0 , Ġ 2 5 5 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 3 ui ( 0 , Ġ 2 5 5 , Ġ 2 5 5 ))) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( Format . RGBA 3 2 _ UINT _ PACK 3 2 , ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 2 5 5 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 2 5 5 , Ġ 1 2 8 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 2 5 5 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 1 2 8 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 0 , Ġ 2 5 5 , Ġ 0 , Ġ 2 5 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVec 4 ui ( 0 , Ġ 2 5 5 , Ġ 2 5 5 , Ġ 2 5 5 ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ" clear " Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblack Ġ= ĠVec 4 ub ( 0 , Ġ 0 , Ġ 0 , Ġ 2 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= ĠVec 4 ub ( 2 5 5 , Ġ 1 2 7 , Ġ 0 , Ġ 2 5 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Ġ= ĠTexture Cube ( Format . RGBA 8 _ UN ORM _ PACK 8 , ĠVec 2 i ( 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Ġclear Ġblack ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtex el A Ġ= Ġtexture . load < Vec 4 ub >( Vec 2 i ( 0 ), Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtex el B Ġ= Ġtexture . load < Vec 4 ub >( Vec 2 i ( 0 ), Ġ 0 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtex el A ĠshouldBe Ġblack ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtex el B ĠshouldBe Ġblack ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture . clear ( 0 , Ġface Index , Ġ 1 , Ġcolor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoords Ġ= ĠVec 2 i ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( coords . y Ġ< Ġtexture . extent ( 1 ). y ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( coords . x Ġ< Ġtexture . extent ( 1 ). x ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtex el D Ġ= Ġtexture . load < Vec 4 ub >( coords , Ġ 0 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtex el D ĠshouldBe Ġcolor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoords . x ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoords . y ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture View Ġ= ĠTexture Cube ( texture , Ġ 0 , Ġ 5 , Ġ 1 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtexture Image Ġ= ĠTexture Cube ( Format . RGBA 8 _ UN ORM _ PACK 8 , ĠVec 2 i ( 1 ), Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Image Ġclear Ġcolor ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture View ĠshouldBe Ġtexture Image ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġrun ( format : ĠFormat , Ġtest Samples : ĠArray < T >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdimensions Ġ= ĠVec 2 i ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture A Ġ= ĠTexture Cube ( format , Ġdimensions ) ĊĠĠĠĠĠĠĠ Ġtexture A . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture A . data < T >( 0 , Ġface Index , Ġ 1 )[ 0 ] Ġ= Ġtest Samples [ face Index ] ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture B Ġ= ĠTexture Cube ( format , Ġdimensions ) ĊĠĠĠĠĠĠĠ Ġtexture B . clear () ĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtexture B . store ( Vec 2 i ( 0 ), Ġface Index , Ġ 1 , Ġtest Samples [ face Index ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġloaded Samples A Ġ= ĠArray < T ? >( 8 , Ġ{ Ġnull Ġ}) ĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Samples A [ face Index ] Ġ= Ġtexture A . load < T >( Vec 2 i ( 0 ), Ġface Index , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġloaded Samples B Ġ= ĠArray < T ? >( 8 , Ġ{ Ġnull Ġ}) ĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Samples B [ face Index ] Ġ= Ġtexture B . load < T >( Vec 2 i ( 0 ), Ġface Index , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Samples A [ face Index ] ĠshouldBe Ġtest Samples [ face Index ] ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( face Index Ġin Ġ 0 .. 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloaded Samples B [ face Index ] ĠshouldBe Ġtest Samples [ face Index ] ĊĊĠĠĠĠĠĠĠ Ġtexture A ĠshouldBe Ġtexture B ĊĊĠĠĠĠĠĠĠ Ġval Ġtexture C Ġ= ĠTexture Cube ( texture A , Ġ 0 , Ġ 5 , Ġ 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġtexture D Ġ= ĠTexture Cube ( texture B , Ġ 0 , Ġ 5 , Ġ 1 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġtexture C ĠshouldBe Ġtexture D ĊĠĠĠ Ġ} Ċ }