Skip to content

Commit a986766

Browse files
feat(shader-ast): fix #435, add lshift/rshift ops
1 parent fab2bc8 commit a986766

File tree

1 file changed

+35
-1
lines changed
  • packages/shader-ast/src/ast

1 file changed

+35
-1
lines changed

packages/shader-ast/src/ast/ops.ts

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import type {
1616
} from "../api/terms.js";
1717
import type {
1818
Comparable,
19-
Int,
2019
IVec,
20+
Int,
2121
Mat,
2222
NumericF,
2323
NumericI,
@@ -350,3 +350,37 @@ export function bitxor<T extends UVec>(l: UintTerm | number, r: Term<T>): Term<T
350350
export function bitxor(l: Term<any> | number, r: Term<any> | number): Op2<any> {
351351
return op2("^", l, r, undefined);
352352
}
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

Comments
 (0)