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;