blob: 61994164d745d9f0ee0e661a8db8c7148760cee0 [file] [log] [blame]
import {
ShaderBuilder,
basicExpressionBuilder,
compoundAssignmentBuilder,
abstractFloatShaderBuilder,
abstractIntShaderBuilder,
} from '../expression.js';
/* @returns a ShaderBuilder that evaluates a binary operation */
export function binary(op: string): ShaderBuilder {
return basicExpressionBuilder(values => `(${values.map(v => `(${v})`).join(op)})`);
}
/* @returns a ShaderBuilder that evaluates a compound binary operation */
export function compoundBinary(op: string): ShaderBuilder {
return compoundAssignmentBuilder(op);
}
/* @returns a ShaderBuilder that evaluates a binary operation that returns AbstractFloats */
export function abstractFloatBinary(op: string): ShaderBuilder {
return abstractFloatShaderBuilder(values => `(${values.map(v => `(${v})`).join(op)})`);
}
/* @returns a ShaderBuilder that evaluates a binary operation that returns AbstractFloats */
export function abstractIntBinary(op: string): ShaderBuilder {
return abstractIntShaderBuilder(values => `(${values.map(v => `(${v})`).join(op)})`);
}
// See issue #4603 for why using 1 instead of the default
export const kAbstractFloatMatrixBinaryOpBatchSize = 1;