@@ -23,25 +23,24 @@ type Mask = number;
2323export const kEmulatedAlphaToCoverage = {
2424 'Apple M1 Pro' : `\
2525 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);
2827 if (alpha < 0.5 / 16) { return ${ 0b0000 } ; }
2928 // 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 ]; }
4544 return ${ 0b1111 } ;
4645 }
4746 ` . trimEnd ( ) ,
0 commit comments