@@ -23,25 +23,24 @@ type Mask = number;
23
23
export const kEmulatedAlphaToCoverage = {
24
24
'Apple M1 Pro' : `\
25
25
fn emulatedAlphaToCoverage(alpha: f32, x: u32, y: u32) -> u32 {
26
- let u = x % 2u;
27
- let v = y % 2u;
26
+ let i = (y % 2) * 2 + (x % 2);
28
27
if (alpha < 0.5 / 16) { return ${ 0b0000 } ; }
29
28
// FIXME returning values out of an array is not working, always returns 0
30
- if (alpha < 1.5 / 16) { return array(array( ${ 0b0001 } u, ${ 0b0000 } ), array( ${ 0b0000 } , ${ 0b0000 } ))[v][u ]; }
31
- if (alpha < 2.5 / 16) { return array(array( ${ 0b0001 } u, ${ 0b0000 } ), array( ${ 0b0000 } , ${ 0b0001 } ))[v][u ]; }
32
- if (alpha < 3.5 / 16) { return array(array( ${ 0b0001 } u, ${ 0b0001 } ), array( ${ 0b0000 } , ${ 0b0001 } ))[v][u ]; }
33
- if (alpha < 4.5 / 16) { return array(array( ${ 0b0001 } u, ${ 0b0001 } ), array( ${ 0b0001 } , ${ 0b0001 } ))[v][u ]; }
34
- if (alpha < 5.5 / 16) { return array(array( ${ 0b1001 } u, ${ 0b0001 } ), array( ${ 0b0001 } , ${ 0b0001 } ))[v][u ]; }
35
- if (alpha < 6.5 / 16) { return array(array( ${ 0b1001 } u, ${ 0b0001 } ), array( ${ 0b0001 } , ${ 0b1001 } ))[v][u ]; }
36
- if (alpha < 7.5 / 16) { return array(array( ${ 0b1001 } u, ${ 0b1001 } ), array( ${ 0b0001 } , ${ 0b1001 } ))[v][u ]; }
37
- if (alpha < 8.5 / 16) { return array(array( ${ 0b1001 } u, ${ 0b1001 } ), array( ${ 0b1001 } , ${ 0b1001 } ))[v][u ]; }
38
- if (alpha < 9.5 / 16) { return array(array( ${ 0b1011 } u, ${ 0b1001 } ), array( ${ 0b1001 } , ${ 0b1001 } ))[v][u ]; }
39
- if (alpha < 10.5 / 16) { return array(array( ${ 0b1011 } u, ${ 0b1001 } ), array( ${ 0b1001 } , ${ 0b1011 } ))[v][u ]; }
40
- if (alpha < 11.5 / 16) { return array(array( ${ 0b1011 } u, ${ 0b1011 } ), array( ${ 0b1001 } , ${ 0b1011 } ))[v][u ]; }
41
- if (alpha < 12.5 / 16) { return array(array( ${ 0b1011 } u, ${ 0b1011 } ), array( ${ 0b1011 } , ${ 0b1011 } ))[v][u ]; }
42
- if (alpha < 13.5 / 16) { return array(array( ${ 0b1111 } u, ${ 0b1011 } ), array( ${ 0b1011 } , ${ 0b1011 } ))[v][u ]; }
43
- if (alpha < 14.5 / 16) { return array(array( ${ 0b1111 } u, ${ 0b1011 } ), array( ${ 0b1011 } , ${ 0b1111 } ))[v][u ]; }
44
- if (alpha < 15.5 / 16) { return array(array( ${ 0b1111 } u, ${ 0b1111 } ), array( ${ 0b1011 } , ${ 0b1111 } ))[v][u ]; }
29
+ if (alpha < 1.5 / 16) { return array(${ 0b0001 } u, ${ 0b0000 } , ${ 0b0000 } , ${ 0b0000 } )[i ]; }
30
+ if (alpha < 2.5 / 16) { return array(${ 0b0001 } u, ${ 0b0000 } , ${ 0b0000 } , ${ 0b0001 } )[i ]; }
31
+ if (alpha < 3.5 / 16) { return array(${ 0b0001 } u, ${ 0b0001 } , ${ 0b0000 } , ${ 0b0001 } )[i ]; }
32
+ if (alpha < 4.5 / 16) { return array(${ 0b0001 } u, ${ 0b0001 } , ${ 0b0001 } , ${ 0b0001 } )[i ]; }
33
+ if (alpha < 5.5 / 16) { return array(${ 0b1001 } u, ${ 0b0001 } , ${ 0b0001 } , ${ 0b0001 } )[i ]; }
34
+ if (alpha < 6.5 / 16) { return array(${ 0b1001 } u, ${ 0b0001 } , ${ 0b0001 } , ${ 0b1001 } )[i ]; }
35
+ if (alpha < 7.5 / 16) { return array(${ 0b1001 } u, ${ 0b1001 } , ${ 0b0001 } , ${ 0b1001 } )[i ]; }
36
+ if (alpha < 8.5 / 16) { return array(${ 0b1001 } u, ${ 0b1001 } , ${ 0b1001 } , ${ 0b1001 } )[i ]; }
37
+ if (alpha < 9.5 / 16) { return array(${ 0b1011 } u, ${ 0b1001 } , ${ 0b1001 } , ${ 0b1001 } )[i ]; }
38
+ if (alpha < 10.5 / 16) { return array(${ 0b1011 } u, ${ 0b1001 } , ${ 0b1001 } , ${ 0b1011 } )[i ]; }
39
+ if (alpha < 11.5 / 16) { return array(${ 0b1011 } u, ${ 0b1011 } , ${ 0b1001 } , ${ 0b1011 } )[i ]; }
40
+ if (alpha < 12.5 / 16) { return array(${ 0b1011 } u, ${ 0b1011 } , ${ 0b1011 } , ${ 0b1011 } )[i ]; }
41
+ if (alpha < 13.5 / 16) { return array(${ 0b1111 } u, ${ 0b1011 } , ${ 0b1011 } , ${ 0b1011 } )[i ]; }
42
+ if (alpha < 14.5 / 16) { return array(${ 0b1111 } u, ${ 0b1011 } , ${ 0b1011 } , ${ 0b1111 } )[i ]; }
43
+ if (alpha < 15.5 / 16) { return array(${ 0b1111 } u, ${ 0b1111 } , ${ 0b1011 } , ${ 0b1111 } )[i ]; }
45
44
return ${ 0b1111 } ;
46
45
}
47
46
` . trimEnd ( ) ,
0 commit comments