@@ -16,8 +16,8 @@ import type {
16
16
} from "../api/terms.js" ;
17
17
import type {
18
18
Comparable ,
19
- Int ,
20
19
IVec ,
20
+ Int ,
21
21
Mat ,
22
22
NumericF ,
23
23
NumericI ,
@@ -350,3 +350,37 @@ export function bitxor<T extends UVec>(l: UintTerm | number, r: Term<T>): Term<T
350
350
export function bitxor ( l : Term < any > | number , r : Term < any > | number ) : Op2 < any > {
351
351
return op2 ( "^" , l , r , undefined ) ;
352
352
}
353
+
354
+ /**
355
+ * @reference
356
+ * GLSL ES Specification 3.0, page 71
357
+ *
358
+ * @param l
359
+ * @param r
360
+ */
361
+ // prettier-ignore
362
+ export function lshift < A extends IVec , B extends A > ( l : Term < A > , r : Term < B > | IntTerm ) : Term < A > ;
363
+ // prettier-ignore
364
+ export function lshift < A extends UVec , B extends A > ( l : Term < A > , r : Term < B > | UintTerm ) : Term < A > ;
365
+ export function lshift ( l : IntTerm , r : IntTerm ) : IntTerm ;
366
+ export function lshift ( l : UintTerm , r : UintTerm ) : UintTerm ;
367
+ export function lshift ( l : Term < any > , r : Term < any > ) : Op2 < any > {
368
+ return op2 ( "<<" , l , r , undefined ) ;
369
+ }
370
+
371
+ /**
372
+ * @reference
373
+ * GLSL ES Specification 3.0, page 71
374
+ *
375
+ * @param l
376
+ * @param r
377
+ */
378
+ // prettier-ignore
379
+ export function rshift < A extends IVec , B extends A > ( l : Term < A > , r : Term < B > | IntTerm ) : Term < A > ;
380
+ // prettier-ignore
381
+ export function rshift < A extends UVec , B extends A > ( l : Term < A > , r : Term < B > | UintTerm ) : Term < A > ;
382
+ export function rshift ( l : IntTerm , r : IntTerm ) : IntTerm ;
383
+ export function rshift ( l : UintTerm , r : UintTerm ) : UintTerm ;
384
+ export function rshift ( l : Term < any > , r : Term < any > ) : Op2 < any > {
385
+ return op2 ( ">>" , l , r , undefined ) ;
386
+ }
0 commit comments